#DistanzSensor
Explore tagged Tumblr posts
draegerit · 4 months ago
Text
Arduino Plug and Make Kit: Abstandskontrolle mit Alarmfunktion
Tumblr media
In diesem Beitrag erfährst du Schritt-für-Schritt, wie man eine Abstandskontrolle mit Alarmfunktion mit dem Arduino Plug and Make Kit aufbaut und programmiert. Das neue Arduino Plug and Make Kit habe ich dir bereits im gleichnamigen Beitrag Arduino Plug and Make Kit: Was ist drin und wie benutzt man es? vorgestellt. https://youtu.be/YL-enMuAMBc Das Arduino Plug and Make Kit bekommst du derzeit für knapp 90€ inkl. Versandkosten im offiziellen Shop. Aus diesem Kit verwenden wir den Arduino UNO R4 WiFi, den Laser Distanzsensor, den Piezo Buzzer, das 8fach LED Modul sowie den Rotary Encoder. Zusätzlich benötigen wir noch die Modulino Base, ein paar Schrauben & Muttern sowie die Qwiic Anschlusskabel. Das alles ist im Kit enthalten, du benötigst quasis nurnoch deinen PC und einen kleinen Kreuzschraubendreher.
Tumblr media
Arduino UNO R4 WiFi
Tumblr media
ToF - Distance Sensor
Tumblr media
Buzzer
Tumblr media
8fach LED Modul
Tumblr media
Rotary Encoder
Wie soll das kleine Projekt funktionieren?
Über den Distanzsensor messen wir dauerhaft einen Abstand zu einem Gegenstand (Wand, Türrahmen etc.) wenn dieser Wert unterschritten wird, dann wird ein Alarm (akustisch und visuell) ausgegeben. Über den Rotary Encoder und der 8x12 LED Matrix vom Arduino UNO R4 WiFi stellen wir den Abstand ein. Dabei wird, wenn wir eine Klick-Aktion am Rotary Encoder ausführen, der aktuelle Wert auf der Matrix ausgegeben.
Benötigte Ressourcen für den Aufbau
Für den Aufbau der Schaltung benötigst du: - einen Arduino UNO R4 WiFi, - ein USB-C Datenkabel, - ein ToF / Laser Distanzsensor, - ein Rotary Encoder, - ein 8fach LED Modul, - ein Piezo Buzzer, sowie - ein paar Schrauben und - einen kleinen Kreuzschraubendreher
Tumblr media
Arduino Plug and Make Kit - Komponenten für das Alarmprojekt Ausgenommen vom Kreuzschraubendreher ist alles im Arduino Plug and Make Kit enthalten!
Programmieren der Modulino Sensoren / Aktoren in der Ardino IDE
Das Kit ist ausgelegt, um in der Arduino IDE programmiert zu werden. Du musst jedoch zuvor den Boardtreiber für den Arduino UNO R4 WiFi und die Bibliothek für die Modulino Sensoren / Aktoren installieren.
Tumblr media Tumblr media Tumblr media
Zu der Bibliothek Modulino erhältst du zu jedem Sensor / Aktor aus diesem Kit ein ausführliches Beispiel und in der offiziellen Dokumentation nochmal viel mehr Informationen. Programm - Durchgangsalarm mit dem Arduino Plug and Make KitHerunterladen Schritt 1 - Importieren der Bibliotheken und erzeugen der Objektinstanzen Im ersten Schritt importieren wir die benötigten Bibliotheken für das Projekt. (Zur Vorbereitung hatten wir bereits die Modulino Bibliothek installiert.) //Bibliothek zum steuern / auslesen //der Modulino Sensoren / Aktoren #include //Bibliotheken zum steuern der //8x12 LED Matrix am Arduino UNO R4 WiFi #include "ArduinoGraphics.h" #include "Arduino_LED_Matrix.h" Anschließend erzeugen wir uns die Objektinstanzen für unser Projekt. //Objektinstanz der LED-Matrix ArduinoLEDMatrix matrix; //Objektinstanzen der Sensoren / Aktoren ModulinoDistance distance; ModulinoPixels leds; ModulinoKnob knob; ModulinoBuzzer buzzer; Schritt 2 - Initialisieren der Kommunikation mit den Sensoren / Aktoren Nachdem die benötigten Bibliotheken installiert und die Objekte erzeugt wurden, müssen wir die I2C Kommunikation starten. Dazu müssen wir bei den Modulinos lediglich die Funktion "begin" aufrufen. Dieses macht die verwendung dieser Module sehr einfach und komfortabel. void setup() { //beginn der seriellen Kommunikation Serial.begin(9600); //beginn der Kommunikation mit der LED-Matrix matrix.begin(); //Vorbereiten der Kommunikation mit den Modulino //Sensoren / Aktoren Modulino.begin(); //Initialisieren der I2C Kommunikation mit den //Sensoren / Aktoren distance.begin(); leds.begin(); knob.begin(); buzzer.begin(); //Startwert des Rotary Encoders / Knob auf 0 setzen. knob.set(0); } Zusätzlich setze ich den Wert des Rotary Encoders auf 0. Schritt 3 - Auslesen der Sensorwerte und erzeugen des Alarms Im dritten Schritt lesen wir in der Funktion "loop" zunächst den Wert des Rotary Encoders aus und multiplizieren diesen mit 10. Damit müssen wir nicht so viele Umdrehungen machen damit ein Abstand eingestellt werden kann, wenn du kleine Schritte benötigst dann musst du diesen Wert anpassen. //lesen des aktuellen Wertes vom Rotary Encoder //der Wert wird mit 10 multipliziert und abgespeichert int16_t distanceForAlarm = knob.get() * 10; Wenn der Rotary Encoder gedrückt wird, können wir eine zusätzliche Aktion ausführen, in diesem Fall wird der Wert auf der 8x12 LED Matrix angezeigt. //Wenn der Rotary Encoder gedrückt wird, dann... if (knob.isPressed()) { //Aufrufen der Funktion zum Anzeigen des aktuellen //wertes des Rotary Encoder. displayKnobValue(distanceForAlarm); } Wenn der Distanzsensor erkannt wurde, dann lesen wir einen Messwert und vergleichen diesen mit dem eingestellten Abstand vom Rotary Encoder. if (distance.available()) { //Messwert abrufen und abspeichern int measure = distance.get(); //Wenn der messwert kleiner als der abgespeicherte //Wert für den Alarm ist, dann... if (measure < distanceForAlarm) { //Ausgeben des Textes "Alarm" auf der seriellen Schnittstelle Serial.println("Alarm"); //anzeigen eines visuellen Alarms über das 8fach LED Modul visualAlarm(); //ausgeben eines akustischen Alarms über das Piezo Buzzer Modul soundAlarm(); } } Am Ende legen wir noch eine kleine Pause von 20 Millisekunden ein. //eine kleine Pause von 20 ms. delay(20); Schritt 3.1 - Funktion "displayKnobValue" Die Funktion displayKnobValue zeigt den Wert des Übergebenen Parameters auf der 8x12 LED Matrix an. Sollte jedoch der Wert kleiner 0 sein, so wird eine Fehlermeldung angezeigt. /Funktion zum anzeigen eines Textes auf der //LED-Matrix. void displayKnobValue(int16_t value) { matrix.beginDraw(); matrix.stroke(0xFFFFFFFF); matrix.textScrollSpeed(50); String message = "-undefined- "; //Wenn der Wert kleiner 0 ist, dann... if (value < 0) { //erzeugen einer kleinen Fehlermeldung message = "err: val < 0"; } else { //Wenn der wert größer 0 ist, dann müssen wir //eine 12 Zeichen lange Zeichenkette erzeugen. int valueLength = String(value).length(); int partLength = (12 - valueLength) / 2; String part = ""; for (int s = 0; s < partLength; s++) { part += " "; } message = part + String(value) + part; } //ablegen der erstellten Zeichenkette in das Char-Array char text = ""; message.toCharArray(text, 13); //Ausgeben des Textes auf der LED-Matrix //Schriftgröße 4x6 matrix.textFont(Font_4x6); matrix.beginText(0, 1, 0xFFFFFF); matrix.println(text); matrix.endText(SCROLL_LEFT); matrix.endDraw(); } Schritt 3.2 - Funktion "visualAlarm" Die Funktion visualAlarm lässt die LEDs im 25ms. Intervall aufleuchten. //Funktion zum erzeugen eines visuellen Alarms mit //dem 8fach LED Modul. Die LEDs blinken im 25ms. Takt void visualAlarm() { setLEDsStatus(true); delay(25); setLEDsStatus(false); delay(25); } //Funktion zum setzen der LEDs. //Als Parameter wird der erwartete Status übergeben. void setLEDsStatus(bool on) { //Schleife über die LEDs for (int i = 0; i < 8; i++) { //Wenn die LEDs aktiviert werden sollen, dann ist //die Helligkeit auf 100 ansonsten auf 0 leds.set(i, RED, on ? 100 : 0); } //nachdem alle LEDs konfiguriert wurden, dann werden //diese Daten ausgeliefert / angezeigt. leds.show(); } Schritt 3.3 - Funktion "soundAlarm" Mit der Funktion soundAlarm wird der Piezo Buzzer angesteuert und dieser erzeugt einen hellen Ton als zusätzlichen Signal. //Funktion zum erzeugen eines Tones auf //dem Piezo Buzzer Moduls. void soundAlarm() { //die Frequenz des Tones int frequency = 440; //die Dauer int duration = 1000; //erzeugen des Tones buzzer.tone(frequency, duration); delay(50); //abschalten des Tones buzzer.tone(0, duration); delay(25); } Fertiges Projekt - Durchgangsalarm mit dem Arduino Plug and Make Kit Hier nun das fertige Projekt zum kopieren. //Bibliothek zum steuern / auslesen //der Modulino Sensoren / Aktoren #include //Bibliotheken zum steuern der //8x12 LED Matrix am Arduino UNO R4 WiFi #include "ArduinoGraphics.h" #include "Arduino_LED_Matrix.h" //Objektinstanz der LED-Matrix ArduinoLEDMatrix matrix; //Objektinstanzen der Sensoren / Aktoren ModulinoDistance distance; ModulinoPixels leds; ModulinoKnob knob; ModulinoBuzzer buzzer; void setup() { //beginn der seriellen Kommunikation Serial.begin(9600); //beginn der Kommunikation mit der LED-Matrix matrix.begin(); //Vorbereiten der Kommunikation mit den Modulino //Sensoren / Aktoren Modulino.begin(); //Initialisieren der I2C Kommunikation mit den //Sensoren / Aktoren distance.begin(); leds.begin(); knob.begin(); buzzer.begin(); //Startwert des Rotary Encoders / Knob auf 0 setzen. knob.set(0); } void loop() { //lesen des aktuellen Wertes vom Rotary Encoder //der Wert wird mit 10 multipliziert und abgespeichert int16_t distanceForAlarm = knob.get() * 10; //Wenn der Rotary Encoder gedrückt wird, dann... if (knob.isPressed()) { //Aufrufen der Funktion zum Anzeigen des aktuellen //wertes des Rotary Encoder. displayKnobValue(distanceForAlarm); } //Wenn ein ToF Sensor verfügbar ist, dann... if (distance.available()) { //Messwert abrufen und abspeichern int measure = distance.get(); //Wenn der messwert kleiner als der abgespeicherte //Wert für den Alarm ist, dann... if (measure < distanceForAlarm) { //Ausgeben des Textes "Alarm" auf der seriellen Schnittstelle Serial.println("Alarm"); //anzeigen eines visuellen Alarms über das 8fach LED Modul visualAlarm(); //ausgeben eines akustischen Alarms über das Piezo Buzzer Modul soundAlarm(); } } //eine kleine Pause von 20 ms. delay(20); } //Funktion zum anzeigen eines Textes auf der //LED-Matrix. void displayKnobValue(int16_t value) { matrix.beginDraw(); matrix.stroke(0xFFFFFFFF); matrix.textScrollSpeed(50); String message = "-undefined- "; //Wenn der Wert kleiner 0 ist, dann... if (value < 0) { //erzeugen einer kleinen Fehlermeldung message = "err: val < 0"; } else { //Wenn der wert größer 0 ist, dann müssen wir //eine 12 Zeichen lange Zeichenkette erzeugen. int valueLength = String(value).length(); int partLength = (12 - valueLength) / 2; String part = ""; for (int s = 0; s < partLength; s++) { part += " "; } message = part + String(value) + part; } //ablegen der erstellten Zeichenkette in das Char-Array char text = ""; message.toCharArray(text, 13); //Ausgeben des Textes auf der LED-Matrix //Schriftgröße 4x6 matrix.textFont(Font_4x6); matrix.beginText(0, 1, 0xFFFFFF); matrix.println(text); matrix.endText(SCROLL_LEFT); matrix.endDraw(); } //Funktion zum erzeugen eines visuellen Alarms mit //dem 8fach LED Modul. Die LEDs blinken im 25ms. Takt void visualAlarm() { setLEDsStatus(true); delay(25); setLEDsStatus(false); delay(25); } //Funktion zum erzeugen eines Tones auf //dem Piezo Buzzer Moduls. void soundAlarm() { //die Frequenz des Tones int frequency = 440; //die Dauer int duration = 1000; //erzeugen des Tones buzzer.tone(frequency, duration); delay(50); //abschalten des Tones buzzer.tone(0, duration); delay(25); } //Funktion zum setzen der LEDs. //Als Parameter wird der erwartete Status übergeben. void setLEDsStatus(bool on) { //Schleife über die LEDs for (int i = 0; i < 8; i++) { //Wenn die LEDs aktiviert werden sollen, dann ist //die Helligkeit auf 100 ansonsten auf 0 leds.set(i, RED, on ? 100 : 0); } //nachdem alle LEDs konfiguriert wurden, dann werden //diese Daten ausgeliefert / angezeigt. leds.show(); } Read the full article
0 notes
die-autotester · 5 years ago
Text
Audi Q7 50 TDI quattro 3.0 V6 210 kW 286 PS 100 km Verbrauch Test Kaufberatung Review Preis Deutsch
Audi Q7 50 TDI quattro 3.0 V6 210 kW 286 PS 100 km Verbrauch Test Kaufberatung Review Preis Deutsch Der Audi Q7 ist ein wirklich großes und schweres SUV. Mit rund fünf Metern Länge bietet der Q7 aber auch jede Menge Platz und extremen Komfort. Eigentlich das perfekte Auto zum Reisen. Für den Q7 gibt es jedoch nur Motoren mit mindestens sechs Zylindern. Was die Frage nach dem Verbrauch nahelegt. Grund genug für mich mit dem Audi Q7 50 TDI quattro und seinem V6 TDI eine Runde auf unsere 100 km langen Teststrecke zu drehen. Wie immer fahre ich über Land, durch die Stadt und über die Autobahn um zu schauen, was der 286 PS starke Audi Q7 50 TDI quattro tatsächlich verbraucht. Und wie immer gibt es während der Fahrt viele Informationen über den Q7 im Allgemeinen und unseren Testwagen im Speziellen. Natürlich gehören hierzu, neben dem Verbrauch auch Details zum Preis, der Reichweite, der Ausstattung, dem Platzangebot und den Fahreigenschaften. Quelle: https://ift.tt/1ISU4Q3 Technische Daten unseres Testwagens: Fahrzeug: Audi Q7 50 TDI quattro Farbe: Florettsilber Metallic Motor: 3.0 l V6 Turbo Diesel Hubraum: 2.967 ccm System Leistung: 210 kW (286 PS) System Drehmoment: 600 Nm V-Max: 241 km/h 0-100 km /h: 6,5 s Mehr von die-autotester findest Du hier: Instagram: https://ift.tt/2VcSlPO Twitter: http://twitter.com/dieautotester #audi #audiq7 #q7 #audilover #quattro #tdi #verbrauch #auto #cars #test Serienausstattung: • LED Scheinwerfer • LED Heckleuchten • Unterfahrschutz vorn und hinten • Einstiegsleisten mit Aluminiumeinlegern vorn und hinten • Dachkantenspoiler • Dachreling in Schwarz (nur Q7 sonst Silber) • Gepäckraumklappe elektrisch • Ladekantenschutz in Kunststoff • Aluminium-Gussräder 18" • 2-Zonen Komfortklimaautomatik • Wärmeschutzverglasung • Vordersitze elektrisch einstellbar • Sitzheizung vorn • Lederlenkrad • Außenspiegel elektrisch • Audi virtual cockpit (12,3-Zoll) • MMI Navigation plus mit MMI touch response - 10,1" Farbdisplay für Navigation, etc - 8,6" Farbdisplay für Klima, etc. • Audi connect Navigation & Infotainment • Bluetooth-Schnittstelle • Audi drive select • Audi pre sense front • Einparkhilfe plus • Audi pre sense front • Audi pre sense basic • Einparkhilfe plus • Anfahrassistent • Tempomat • Kamera / Distanzsensor • Verkehrszeichenerkennung • Spurverlassenswarnung • u.v.m. Sonderausstattung Testwagen: • Lackierung Florettsilber Metallic • Adaptive Air Suspension • Adaptive Scheibenwischer mit integrierten Waschdüsen • Akustikverglasung Seitenscheiben • Allradlenkung • Assistenzpaket Stadt inkl. - Kreuzungsassistent - Spurwechselwarnung - Ausstiegswarnung - Querverkehrassistent hinten - Audi pre sense 360 • Assistenzpaket Tour inkl. - Adaptiver Fahrassistent - Adaptiver Geschwindigkeitsassistent - Geschwindigkeitsbegrenzer - Effizienzassistent - Abbiegeassistent - Ausweichassistent - Notfallassistent • Audi Connect Schlüssel • Audi Music Interface im Fond • Audi Phone Box • Audi smartphone interface • Virtual Cockpit Plus (Ansicht Dynamik & Sport) • Außenspiegel elektrisch • Bose Sound System mit 3D Klang • Dekoreinlagen Holz Eschenmaser • Digitaler Radioempfang DAB • DVD Laufwerk • Einstiegsleisten mit Aluminumeinlegern • Erweiterte Interieurelemete in Leder • Frontscheibe Klimakomfort- und Akustikverglasung • Garagentoröffner • HD-Matrix-LED-Scheinwerfer mit Laserlicht • Head-Up Display • Individualkontursitze vorne • Komfortmittelarmlehen vorne • Komfortschlüssel inkl. Diebstahlwarnanlage (Ladekantenschutz Edelstahl) • Kontur- und Ambiente-Lichtpaket, mehrfarbig • Kraftstoffbehälter 85 Liter • Leder Calcona/Leder Cricket-Kombinatio • Luftqualität-Paket • Nachtsichtassistent • Reifendruckkontrollsystem • Schienensystem mit Fixierset • Seitenairbags hinten • Servoschließung für die Türen • Sitzbelüftung und Massagefunktion vorn • Sonnenblende Fahrer und Beifahrer ausziehbar • Sonnenschutzrollo • Stoßfänger in Kontrastlackierung • Umgebungskamera • Vordersitze elektrisch inkl. Memoryfunktion • Dritte Sitzreihe • 4-Zonen Komfort-Klimaautomatik
0 notes
airborn64 · 6 years ago
Text
Ecovacs Deebot Ozmo 930: Die wichtigsten Fakten | Hands-On
Ecovacs Deebot Ozmo 930: Die wichtigsten Fakten | Hands-On
Gleichzeitig staubsaugen und wischen, App-Steuerung, Laser-Distanzsensor samt Mapping und Raumeinteilung, Untergrunderkennung. Das kann der Deebot Ozmo 930
Ecovacs Deebot Ozmo 930 kaufen►
⬇️ ABONNIEREN und keine Videos mehr verpassen! ⬇️ ►
► UNSERE WEBSEITE
► UNSERE APP Für Android 📱 Für iOS 📱
► FOLGT UNS! —
► Ausgehende Links Alle weiterführenden Produktlinks sind Affiliate Links. Das heißt, dass…
View On WordPress
0 notes
draegerit · 5 months ago
Text
Arduino Plug and Make Kit: Was ist drin und wie benutzt man es?
Tumblr media
Es gibt von Arduino ganz neu das Arduino Plug and Make Kit, dieses enthält alles, was du für den Start in die Mikrocontrollerprogrammierung benötigst. Was in diesem Kit enthalten ist und wie du die Sensoren & Aktoren am mitgelieferten Arduino UNO R4 WiFi programmierst, erfährst du in den nächsten Abschnitten hier im Beitrag. https://youtu.be/B0mXN7ADJeg
Was ist im Arduino Plug and Make Kit drin?
Das Kit enthält neben einem Arduino UNO R4 WiFi nachfolgende Sensoren & Aktoren: - einen Rotary Encoder (mit Push Funktion) - einen Piezo Buzzer - ein Modul mit 3 Taster - ein Temperatur & rel. Luftfeuchtigkeits-Sensor - ein Distanzsensor Typ VL53L4CD - ein Modul mit 8 RGB LEDs - einen 6-Achsen Lagesensor Zusätzlich findest du am Arduino UNO R4 WiFi noch: - eine 8x12 LED Matrix (in rot), - einen ESP32-S3-Mini
Tumblr media Tumblr media
6 Achsen Sensor
Tumblr media
3fach Taster Modul
Tumblr media
Buzzer
Tumblr media
Rotary Encoder
Tumblr media
Temperatur & rel. Luftfeuchtigkeits Sensor
Tumblr media
8fach LED Modul
Tumblr media
ToF - Distance Sensor
Tumblr media
Zusätzlich findest du noch eine Modulino Base, auf welche du den Mikrocontroller und deine Schaltung mit den Sensoren & Aktoren aufschrauben kannst. Das sorgt dafür, dass deine Schaltung auf dem Schreibtisch nicht wild umherfliegt. Es ist dafür alles enthalten, du benötigst hier nur noch einen kleinen Kreuzschraubendreher (Größe PH0) und einen Maulschlüssel (Schlüsselweite 5,5). Die Sensoren werden über eine I2C Qwiic Schnittstelle mit dem Mikrocontroller verbunden und daher enthält das Kit zusätzlich noch einige Anschlusskabel.
Tumblr media
Einrichten des Arduino UNO R4 WiFi in der Arduino IDE
Dem Kit liegt wie gezeigt ein Arduino UNO R4 WiFi bei, dieser ebenso neue Mikrocontroller verfügt über eine WiFi & Bluetooth Schnittstelle sowie eine LED Matrix schon allein damit könnte man viele Wochenenden verbringen und IoT Projekte umsetzen.
Tumblr media
Bevor wir mit den ersten Schaltungen beginnen, richten wir diesen in der Arduino IDE ein, dieses ist bei der Version 2.x besonders einfach geworden.
Aufbau einer Schaltung
Zunächst möchte ich eine kleine Schaltung mit dem 8fach LED Modul sowie dem Rotary Encoder aufbauen. Über den Rotary Encoder kann man zum Beispiel die Geschwindigkeit eines Lauflichts oder die Helligkeit der LEDs steuern. Zusätzlich verfügt der Rotary Encoder noch über ein Tast-Event welches wir ebenso verwenden können, um die Farbe zu wechseln.
Tumblr media
Arduino Plug and Make Kit - Schaltung mit 3fach LED Modul & Knob Die Sensoren & Aktoren am Arduino UNO R4 WiFi werden über die Qwiic Schnittstelle verbunden. Das Gute an dieser Schnittstelle ist, dass du die Module kaskadierend hintereinander verbinden kannst. (Im Bild siehst du zwei Module, welche miteinander verbunden sind.)
Programmieren der Sensoren / Aktoren in der Arduino IDE
Damit wir die Module in der Arduino IDE programmieren können, benötigen wir eine zusätzliche Bibliothek. Diese lässt sich über den internen Bibliotheksverwalter mit wenigen Klicks installieren. Zunächst wählst du den Bibliotheksverwalter (1) und suchst dort nach "modulino" (2). Du solltest nun die Schaltfläche "INSTALLIEREN" an der Position 3 finden.
Tumblr media
Ich werde jedem Modul im Kit einen separaten Beitrag & Video widmen, hier möchte ich dir nachfolgend an zwei Beispielen zeigen, wie diese programmiert werden. Auf der Seite https://courses.arduino.cc/plugandmake/ findest du viele coole Beispiele zu diesem Kit und der Arduino Cloud. Beispiel 1 - Programmieren der LEDs Am 8fach RGB LED Modul kannst du jede LED in diversen Farben anzeigen. Ebenso kannst du dort kleine Leuchteffekte für ein Lauflicht oder Fading programmieren. Ebenso kannst du über dieses auch die Werte des Distanz-Sensors oder Temperatursensors visualisieren.
Tumblr media
gesetzte Farben an dem 8fach LED Modul Programm - anzeigen verschiedener Farben auf dem 8fach LED Modul des Arduino Plug and Make KitHerunterladen //Bibliothek zum steuern / lesen //der Modulino Module #include //Objekt vom Typ ModulinoPixels erzeugen //in diesem Fall das 8fach LED Modul ModulinoPixels leds; //Ablegen von Objekten mit einem RGB-Farbwert ModulinoColor colorBlue(0, 0, 255); ModulinoColor colorRed(255, 0, 0); ModulinoColor colorGreen(0, 255, 0); ModulinoColor colorYellow(255, 255, 0); ModulinoColor colorPurple(128, 0, 128); ModulinoColor colorCyan(0, 255, 255); ModulinoColor colorOlive(128, 128, 0); ModulinoColor colorNavy(0, 0, 128); //Konstante für die Helligkeit der LEDs const int HELLIGKEIT = 10; void setup() { //beginn der I2C Kommunikation Modulino.begin(); //begin der I2C Kommunikation mit dem LED Modul leds.begin(); //setzen der Farbe an der LED //erster Parameter, der Index der LED //zweiter Parameter, die Farbe //dritter Parameter, die Helligkeit leds.set(0, colorBlue, HELLIGKEIT); leds.set(1, colorRed, HELLIGKEIT); leds.set(2, colorGreen, HELLIGKEIT); leds.set(3, colorYellow, HELLIGKEIT); leds.set(4, colorPurple, HELLIGKEIT); leds.set(5, colorCyan, HELLIGKEIT); leds.set(6, colorOlive, HELLIGKEIT); leds.set(7, colorNavy, HELLIGKEIT); //Der Wert für die Helligkeit kann entfallen, //da hier ein Default-Wert von 25 hinterlegt wurde! //Anzeigen der Farben leds.show(); } void loop() { //bleibt leer } Beispiel 2 - steuern eines Lauflichts mit dem Knob Am 8fach LED Modul habe ich ein kleines Lauflicht programmiert, welches mit dem Knob / Rotary Encoder in der Geschwindigkeit gesteuert werden kann. Da der Knob noch zusätzlich über ein Tast-Event verfügt, können wir diesen nutzen, um die Farbe zu wechseln. Programm - steuern eines Lauflichts mit dem Knob am Arduino Plug and Make KitHerunterladen //Bibliothek zum steuern / lesen //der Modulino Module #include //Objekt vom Typ ModulinoPixels erzeugen //in diesem Fall das 8fach LED Modul ModulinoPixels leds; //Objekt vom Typ ModulinoKnob erzeugen //in diesem Fall der Rotary Encoder ModulinoKnob knob; //Ablegen von Objekten mit einem RGB-Farbwert ModulinoColor colorBlue(0, 0, 255); ModulinoColor colorRed(255, 0, 0); ModulinoColor colorGreen(0, 255, 0); //Erzeugen eines Arrays mit den Farben ModulinoColor colors = { colorBlue, colorRed, colorGreen }; //Wert für die Helligkeit const int HELLIGKEIT = 5; //Feld für die Pause, //Der Wert wird aus der Position des Knob //berechnet. int pause = 0; //Aktueller Index für die Farbe int index = 0; //Konstante mit der maximalen Anzahl der Farben. const int MAX_COLORS = 2; void setup() { //beginn der I2C Kommunikation Modulino.begin(); //begin der I2C Kommunikation mit dem LED Modul leds.begin(); //begin der I2C Kommunikation mit dem Rotary Encoder knob.begin(); } //Funktion zum deaktivieren der LEDs void ledsOff(ModulinoColor color) { for (int led = 0; led < 8; led++) { leds.set(led, color, 0); } leds.show(); } //Funktion zum anzeigen einer Farbe void setLEDColor(ModulinoColor color, int index) { leds.set(index, color, HELLIGKEIT); leds.show(); delay(pause); } void loop() { //auslesen der Position vom Knob int position = knob.get(); //berechnen der Pause aus der Position pause = (position > 0 ? position : 1) + 25; //entnehmen der Farbe aus dem Array mit //dem aktuellen Index ModulinoColor color = colors; //Wenn der Knob gedrückt wird, dann... if (knob.isPressed()) { //prüfen ob der aktuelle Index gleich //der maximalen Farbe ist, dann... if (index == MAX_COLORS) { //Wert des Index auf -1 setzen. index = -1; } //erhöhen des Index um 1 index++; } //Schleife über die LEDs //von links nach rechts (von 0 bis 7) for (int led = 0; led < 8; led++) { //setzen der Farbe an der LED setLEDColor(color, led); } //deaktivieren der LEDs ledsOff(color); //Schleife über die LEDs //von rechts nach links (von 7 bis 0) for (int led = 7; led >= 0; led--) { setLEDColor(color, led); } //deaktivieren der LEDs ledsOff(color); } Read the full article
0 notes
draegerit · 5 years ago
Text
Arduino Lektion #103: Laser Distanz Sensor VL53LXX-V2
Tumblr media
In diesem Beitrag möchte ich den Laser Distanz Sensor VL53LXX-V2 vorstellen. Dieser Sensor kann eine Distanz von bis zu 4m messen und arbeitet dabei mit einer Abtastgeschwindigkeit von 50Hz.
Tumblr media
Laser Distanz Sensor - VL53LXX-V2
Bezug
Den Laser Distanz Sensor kann man über ebay.de für ca. 8€ inkl. Versandkosten beziehen oder deutlich günstiger über aliexpress.com (4,19$ inkl. Versandkosten). Ich habe den Sensor über aliexpress.com bestellt und habe ca. 5 Wochen auf diesen Sensor warten dürfen. Dafür aber weniger als die hälfte bezahlt. Lieferumfang Der Sensor wird in einer kleinen Antistatik Tüte geliefert und enthält neben dem Sensor noch eine Stiftleiste.
Tumblr media
Lieferumfang - Laser Distanz Sensor VL53LXX-V2
Technische Daten des VL53LXX-V2
Betriebsspannung 3.3V bis 5.5V Messbereich Minimal 40mm Maximal 4m Messbereichsgenauigkeit ±5% Wellenlänge des Lasers 940nm Betriebsstemperatur -20°C bis 80°C Abmessungen ohne Löcher 15mm x 10mm mit Löcher 25mm x 10mm Druchmesser der Löcher 3mm
Aufbau & Schaltung
Bevor der Sensor verwendet werden kann muss dieser mit der Stiftleiste verbunden werden. Um die Stiftleiste korrekt (also im 90° Winkel) an den Sensor zu löten habe ich zusätzlich ein 170 Pin Breadboard und die überzähligen Stifte verwendet.
Tumblr media
anlöten der Stiftleiste an den Laser Distanz Sensor Aufbau Der Sensor verfügt über 6 Pins welche wie folgt an den Arduino UNO angeschlossen werden. VL53LXX-V2 Arduino UNO VIN 5V GND GND SCL analoger Pin A5 SDA analoger Pin A4 GPIO01   XSHUT   Die Pins GPIO01 & XSHUT werden in meinen Beispielen zunächst nicht verwendet. Schaltung
Tumblr media
Aufbau der Schaltung - Laser Distanz Sensor am Arduino UNO
Quellcode
Bibliothek Bibliotheken erleichtern einem Programmierer die arbeiten enorm, besonders wenn man wie wir mit Hardware arbeitet und so die einzelnen Adressen und Speicherbereiche be-/verarbeiten muss. Daher gibt es auch für diesen Sensor eine Bibliothek welche wir uns in die Entwicklungsumgebung (in meinem Fall wie immer die Arduino IDE) einbinden. Den Bibliotheksverwalter erreicht man über das Hauptmenü "Sketch" > "Bibliothek einbinden" > "Bibliotheken verwalten...". In diesem Dialog wird zunächst nach der Bibiothek mit dem Suchbegriff "vl53l" (1) gesucht. Ich verwende die Bibliothek von Sparkfun und wähle den zweiten Eintrag aus den Suchergebnissen (2) nach dem betätigen der Schaltfläche "Installieren" kann (nach Abschluss) der Dialog geschlossen werden (3).
Tumblr media
Installieren der Bibliothek für das verwenden des Laser Distanz Sensors Beispiel - Ausgabe der Daten auf dem seriellen Monitor Der Bibliothek liegt ein Beispiel bei wie man diesen Sensor in der Arduino IDE programmiert. Das werde ich hier nutzen und etwas umschreiben und kommentieren. #include "Adafruit_VL53L0X.h" Adafruit_VL53L0X lox = Adafruit_VL53L0X(); //Um die Debug Ausgaben zu aktivieren //muss dieser Wert auf "true" gesetzt werden. #define debugSensor false //Es werden 10 Messungen durchgeführt. const int MAX_DATA = 10; //der Index der aktuellen Messung int readDataIndex = -1; //das Array für die Daten int data = {}; //zählen der fehlerhaften Messungen int failureMeasures = 0; void setup() { //begin der seriellen Kommunikation mit 115200 baud Serial.begin(115200); //Warten auf den Seriellen Port while (! Serial) { delay(1); } //Wenn der Serielle Port bereit ist dann eine Ausgabe auf diesen tätigen //und prüfen ob der Sensor korrekt angeschlossen ist (ob dieser Ansprechbar ist) Serial.println("GY-VL53L0X test"); if (!lox.begin()) { Serial.println("Fehler beim lesen des Sensors!"); while(1); //eine Endlos Schleife } } void loop() { //instanziieren des Sensors zum empfangen von Daten VL53L0X_RangingMeasurementData_t measure; lox.rangingTest(&measure, debugSensor); //lesen des Sensor Status //der Sensor kann verschiedene Status annehmen, //jedoch interessiert für uns nur der Wert "4" int sensorStatus = measure.RangeStatus; //Wenn Daten empfangen wurden dann... if (sensorStatus != VL53L0X_DEVICEERROR_MSRCNOTARGET) { //den Zähler für das Array um eins erhöhen readDataIndex++; //zuweisen des Wertes in das Array data = measure.RangeMilliMeter; //Wenn das Array "fertig" befüllt ist, dann... if(readDataIndex == MAX_DATA){ //eine Variable für die Berechnung des Durchschnittswertes int averageData = 0; //über das Array itereieren und die Daten zusammenzählen for(int i=0;i MAX_DATA){ Serial.println(""); } //eine Pause von 5ms einlegen delay(5); } Video
Vergleich mit einem Ultraschallsensor HC-SR04
Den Ultraschallsensor HC-SR04 habe ich bereits im Beitrag Arduino Lektion 9: Ultraschall Modul HC-SR04 vorgestellt. Da beide Sensoren (GY-VL53L0XV2 & HC-SR04) den Abstand von Objekten messen können, möchte ich kurz beide Sensoren testen. Man kann sehr gut erkennen das der Ultraschallsensor den Abstand nicht so genau misst wie der Laser Distanzsensor.
Fazit
Der Laser Distanzsensor GY-VL53L0XV2 ist günstig in der Anschaffung und durch das einfache einbinden einer Bibliothek auch genauso einfach zu programmieren. Jedoch ist dieser nicht ganz so genau und hatte in meinem Test eine Abweichung von bis zu mehreren Zentimeter.   Read the full article
0 notes