Einparkhilfe: Aktivierung via Sender und nach 2 min Energiesparmodus

Hallo liebe Gemeinde;)

Zunächst einmal…vielen Dank für eure Hilfe! Ich bin Arzt und kenne mich selbst leider so gut wie gar nicht mit der Programmierung aus, hab aber meinen Spaß an den Arduinos gefunden.
Jetzt mal zu meinem Problem. Ich möchte mir eine Einparkhilfe programmieren, die über einen 433Mhz Handsender aktiviert werden soll, dann für 2 Minuten die Entfernung mittels eines HC-SR04 messen und auf einem WS1228B LED-Rings ausgeben und danach bis zur nächsten Aktivierung in einen Ruhezustand gehen soll. Gesteuert wird das ganze mit einem Arduino Nano, der Strom kommt von 2 18650er Batterien.
Die Entfernungsmessung und Ausgabe auf die LEDS hab ich bereits hingekriegt(ich weiß dass das auch eleganter geht, aber es funktioniert erstmal). Würdet ihr mir bei dem Rest helfen?

Beste Grüße
Sebastian

EInparkhilfe.ino (15.1 KB)

Zuerst eine wichtige Anmerkung zum jetzigen Code:

Du verwendest “while” wo Du eigentlich “if” verwenden soltest. Das abeschliessende “return” dürfte dann überflüssig sein.

Es trifft sich gut, dass Du den Schalter an Pin 3 angeschlossen hast, damit kannst Du ihn als externen Interrupt 1 benutzen, welchen den Prozessor aus dem Schlaf wecken kann.

Eine Einführung in das Schlafensetzen des Arduino findest Du in diesem Playground-Artikel: http://playground.arduino.cc/Learning/ArduinoSleepCode. Dort wird zwar Interrupt 0 benutzt, aber diese Änderung dürfte relativ einfach sein.

Danke für deinen Hinweis…hab den mal eingebaut und es funktioniert einigermaßen. Aber leider nur einen Durchlauf und dann bleibt das Programm irgendwo stecken. Bisher hab ich noch nicht rausgefunden wo. Außerdem möchte ich erreichen, dass die LED’S am Ende der Schleife ausgeschaltet werden. Ich hab mal meine bisherigen Änderungen angehängt.
Vielen Dank für die Hilfe bis hier her! :wink:

EInparkhilfe_neu.ino (12 KB)

Benutze die serielle Schnitstelle als debug.

So kannst Du die Werte von Variablen anzeigen oder an richtige Stellen gesetzt ob IF -Bedingungen wahr oder falsch sind.

Hat die WS2812- Biblothek nicht eine Funktion alle LEDS die gleiche Farbe zu setzen?
Ansonsten eine FOR Schleife?

for(int i=0; i < 12; i++)
{
 pixels.setPixelColor(i, pixels.Color(0,0,0)); 
}
 pixels.show();

Grüße Uwe

Danke für die Hinweise bisher. Jetzt hab ich es soweit hingekriegt, dass es so funktioniert, wie ich mir das vorstelle. Es fehlt nur noch der Schlafmodus…aber da muss ich mich noch ein bisschen einlesen :wink:

EInparkhilfe_neu.ino (15 KB)

Das Thema mit den Interrupts ist für mich einfach zu kompliziert. Ich kann den Arduino zwar mittels avr/sleep in den Power-Down-Mode versetzen, aber ich schaff es nicht, ihn über einen Tastendruck an der 433Mhz-Fernbedienung wieder aufzuwecken. Ich werde es wohl einfach dabei belassen.

aber ich schaff es nicht, ihn über einen Tastendruck an der 433Mhz-Fernbedienung wieder aufzuwecken.

Ich würde eher sagen, es ist schwer ihn bei angeschlossenem Empfänger schlafen zu lassen.

Denn die einfachen Empfänger wackeln auch mit der Datenleitung, wenn gerade keiner drückt.