Go Down

Topic: Anfängerproblem "Bedingte Schleife" (Read 500 times) previous topic - next topic

plato

Folgendes problem zu dem mir keine Lösung einfällt:

Ich habe eine Schleife, Steuerung von 3 Servos in Positionen die ich allerdings nur arbeiten lassen will wenn der Schalter eingeschaltet ist.
Diese Schleife soll dann aber nur ein mal durchlaufen werden!
Am liebsten würde ich das mit einem Taster realisieren da dann die Ablaufbedingung automatisch wieder 0 (nicht eingeschaltet) ist.

Für einen Denkanstoß wäre ich dankbar.

Servotimer2.h habe ich verwendet, unter IDE 1.03 bekomme ich aber nur Fehlermeldungen?
Wo besteht die Inkompalibität?

Addi

Mach es doch als Funktion:
Code: [Select]

const int buttonPin = 2;
int buttonState = 0;
void drehe_motor() {
//Code für die Servos hier
}
void setup() {
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
drehe_motor();
}


Addi
/ \    _|  _| o
 /--\ (_| (_| |

plato

Danke, das war es was ich brauchte!

uwefed

Damit die Funktion nur einmal pro Tastendruck aufgerufen wird mußt Du eine Statusvariable benutzen:

Code: [Select]
const int buttonPin = 2;
int buttonState = 0;
int buttonlaststate = 0;
void drehe_motor() {
//Code für die Servos hier
}
void setup() {
pinMode(buttonPin, INPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH && buttonlaststate == 0) {
buttonlaststate = 1;
delay(10);                                  // entprellen
drehe_motor();
}
if (buttonState == LOW && buttonlaststate == 1) {
buttonlaststate = 0;
delay(10);                                // entprellen
}

Go Up