Ich bin neu hier weil ich versucht habe mit dem Arduino Uno einen kleinen MP3 Player mit eingebautem Bewegungsmelder zu bauen, allerdings bin ich beim Code auf ein Problem gestoßen.
Der Arduino spielt zwar nach dem Drücken des Reset Buttons für ca. 30 Minuten, immer wenn jemand vorbei geht bzw eine Bewegung erkannt wurde den Soing auf der SD Karte. Wird allerdings für eine längere Zeit keine Bewegung erkannt, geht der Arduino in einen Art Schlafmodus und kann nur wieder durch das Drücken des Reset Knopfes gestartet werden.
Könnte mir jemand bei dem Code behilflich sein?
#include "DFRobotDFPlayerMini.h"
#if !defined(UBRR1H)
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // DFPlayer RX, TX
#endif
DFRobotDFPlayerMini myDFPlayer;
int PIRPin = 2; // HC-SR501 Pin
int pirState = LOW; // beim Start wird keine Bewegung erkannt
int val = 0; // Variable zum Auslesen des Status
//
void setup () {
Serial.begin(115200); //Serielle Kommunikation initalisieren
mySerial.begin(9600);
myDFPlayer.begin(mySerial);
#if !defined(UBRR1H)
mySerial.begin(9600);
myDFPlayer.begin(mySerial);
#else
Serial.begin(9600);
myDFPlayer.begin(Serial1);
#endif
Serial.println("Volume set");
myDFPlayer.volume(12);
pinMode(PIRPin, INPUT); // HC-SR501 Pin als Input deklarieren
}
//
void loop ()
{
val = digitalRead(PIRPin); // HC-SR501 Pin auslesen
if (val == HIGH) { // Prüfe ob der Pin "High" ist
if (pirState == LOW) {
// Start
Serial.println("Bewegung erkannt!");
// Output-Veraenderung ausgeben
pirState = HIGH;
Serial.println("Spiele Sound-Datei ab");
delay(2000);
myDFPlayer.play(1); // Spiele die erste Datei ab
delay(30000) ;
}
} else {
if (pirState == HIGH){
// Ende
Serial.println("Bewegung beendet!");
// Output-Veraenderung ausgeben
pirState = LOW;
}
}
}
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Der Arduino steckt mit einem Netzteil an der Steckdose. Verdächtig ist für mich einfach dass er nach einer gewissen Zeit mit unerkannter Bewegung sich nur durch den Reset Button wieder starten lässt.
Das board mit Lautsprechern sollte eigentlich fix eingebaut werden.
Da passiert genau einmal das löschen des pirState.
Und nur wenn pirState LOW ist, kann ein HIGH gezogener pirPin den DF-Player wieder auslösen.
Und setzt den pirState als Wiederholsperre wieder HIGH.