ich habe folgendes in arduino programmiert.
ich habe einen taster und wenn dieser gedrückt wird, soll die schleife abgebrochen werden.
Jedoch ist es nur so, dass dies nur passiert so lange ich den taster gedrückt halte. sobald ich es loslasse, fängt die schleife wieder an zu laufen
int Motor = 8;
int ledPin = 10;
const int buttonPin = 2;
int buttonState = 0;
int Motorlaufzeit = 2500;
int Leerlauf = 5000;
int Pause = Leerlauf - Motorlaufzeit;
void setup() {
pinMode(Motor, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop()
{
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(Motor, HIGH);
delay(Motorlaufzeit); //Motorlaufzeit
digitalWrite(Motor, LOW);
delay(250); // Pause zwischen Motorbetrieb und foto
digitalWrite(ledPin, HIGH);
delay(100); // Fotoauslösung
digitalWrite(ledPin, LOW);
delay(Pause); // Pause den Fotos zwischen sollte immer 5 Sekunden betragen
}
else {
digitalWrite(ledPin, LOW);
digitalWrite(Motor, LOW);
digitalWrite(buttonState, LOW);
}
}
handyaner:
ich habe einen taster und wenn dieser gedrückt wird, soll die schleife abgebrochen werden.
Jedoch ist es nur so, dass dies nur passiert so lange ich den taster gedrückt halte. sobald ich es loslasse, fängt die schleife wieder an zu laufen
Arbeite das diesem Anwendungsfall entsprechende Arduino-Programmierbeispiel durch!
Du findest es unter "Datei - Beispiele - Digital - StateChangeDetection"
Mir scheint Deine Steuerung etwas wenig durchdacht.
Wie soll der Zyklus starten?
Könnte mir vorstellen Du hast einen START-Taster und einen STOP-Taster.
Der START-Taster setzt eine Variable auf 1 der STOP-Taster setzt die Variable auf 0. Bei 1 läuft er Bewegung-Foto-Zyklus; bei 0 wird der letzte beendet.
Damit Du jederzeit den STOP-taster drücken kannst, ist es notwendig keinen Delay zu verwenden, sondern die Zeiten mit millis() zu kontrollieren. siehe Beispiel Arduino Playground - BlinkWithoutDelayDe