Hallo Community,
ich habe hier mein erstes Projekt mit meinem Arduino UNO vor mir. Ich habe davor noch keine Programme geschrieben und bin dafür eigentlich ganz gut voran gekommen. Bis jetzt.
Im Code anbei funktioniert alles bis zum Punkt Alarmanlage. Es werden bei verschiedenen Aktionen meine RGB LEDs angesteuert. Und eine "normale" LED. Durch einen Taster soll meine Funktion "Alarm" aktiviert werden.
Wenn ich nun Abfrage, das bei Alarm == 1 meine LEDs kurz blau leuchten sollen geht nichts mehr. Die LEDs leuchten zwar blau aber sie gehen nicht mehr aus und auch der Taster reagiert dann nicht mehr. Er lässt die Funktion nicht mehr abschalten. Jetzt sitze ich an dieser "Kleinigkeit" seit 2 Tagen und finde keinen Fehler.
Ich bitte um Tipps und Hilfe. Vielen Dank ![]()
CODE:
#include <SPI.h>
//SdFat Librarie hinzufügen
#include <SdFat.h>
#include <SdFatUtil.h>
//MP3 Shield Library hinzufügen
#include <SFEMP3Shield.h>
//Librarie Objekte erstellen und benennen
SFEMP3Shield MP3player;
SdFat sd;
SdFile file;
byte temp;
byte result;
char title[30];
//Konstante Variablen
int sensitivity = 500; // Schwelle für eine Aktion übers Mikrofon
int threshold= 1020; // Schwelle für Aktion über Vibration
int audioPin = A0; // Mikrofon an Pin A0 angeschlossen
int vibePin = A1; // Vibration an Pin A1 angeschlossen
int counter = 0; //Counter wird auf 0 gesetzt bzw. deaktiviert
const int aledPin = 10; // Rote LED der Alarmanlage an Pin 10 angeschlossen
const int rotPin = 3; // Rote LED an Pin 3 angeschlossen
const int gruenPin = 4; // Gruene LED an Pin 4 angeschlossen
const int blauPin = 5; // Blaue LED an Pin 5 angeschlossen
//Deklaration für Alarmtaster
int alarmPin = 16; //Taster zum Alarm aktivieren an Pin 16/A2 angeschlossen
int ledOn = LOW; // the current state of the output pin
int reading; // aktuelles Auslesen vom alarmPin
int previous1 = LOW; // vorher ausgelesene Daten von alarmPin
int alarm = 0;
long time = 0;
long debounce = 200;
void setup() {
Serial.begin(115200);
//MP3 Player Shield inkl. SD booten
result = sd.begin(SD_SEL, SPI_HALF_SPEED);
result = MP3player.begin();
// Festlegen der Ein- und Ausgänge
pinMode(aledPin, OUTPUT); //Setzt die AlarmLED als Ausgang
pinMode(blauPin, OUTPUT); //Setzt den LEDPin als Ausgang
pinMode(rotPin, OUTPUT); //Setzt den LEDPin als Ausgang
pinMode(gruenPin, OUTPUT); //Setzt den LEDPin als Ausgang
pinMode(audioPin, INPUT); //Setzt den MikrofonPin als Eingang
pinMode(alarmPin, INPUT); //Setzt den Taster für den Alarm als Eingang
analogWrite(blauPin, 0);
analogWrite(rotPin, 0);
analogWrite(gruenPin, 0);
}
void loop() {
int r;
randomSeed(millis()); //Verwendet millisekunden seit Programmstart als Basis für die Zufallszahl
r = random (1, 3);
int soundWave = analogRead(audioPin);
int vibeWave = analogRead(vibePin);
//-----------------------------------------------------------------------
// Schreien erkennen und zufällige Datei 1-9 abspielen
if ((soundWave < sensitivity) && (alarm == 0)) {
//MP3 Shield spielt Track
result = MP3player.playTrack(r);
}
//-----------------------------------------------------------------------
// Bewegung/Rütteln erkennen und zufällig Datei 1-9 abspielen
if ((vibeWave > threshold) && (alarm == 0)) {
//MP3 Shield spielt Track
result = MP3player.playTrack(r);
}
//-----------------------------------------------------------------------
// Abfragen ob die Datei abgespielt wird und dementsprechen LEDs steuern
if ((MP3player.isPlaying()) && (alarm == 0)) {
analogWrite(rotPin, 255);
counter = 1;
}else {
analogWrite(rotPin, 0);
}
//------------------------------------------------------------------------
// Verabschiedung starten wenn keine Aktion mehr kommt
if ((counter > 0) && (alarm == 0)) {
counter++;
}
if (counter == 20000) {
counter = 0;
result = MP3player.playTrack(2);
analogWrite(gruenPin, 255);
delay(1000);
analogWrite(gruenPin, 0);
}
//------------------------------------------------------------------------
// Taster für Alarmaktivierung
reading = digitalRead(alarmPin);
if (reading == HIGH && previous1 == LOW && millis() - time > debounce) {
ledOn = !ledOn;
time = millis();
alarm = !alarm;
}
digitalWrite(aledPin, ledOn);
previous1 = reading;
//------------------------------------------------------------------------
// Alarmanlage
if (alarm == 1) {
analogWrite(blauPin, 255);
delay(2000);
analogWrite(blauPin, 0);
}
}