12-04-2019, 22:54
W jaki sposób uniemożliwić by wykonywała się pętla przycisku w sytuacji gdy go przytrzymamy.
W obecnej postaci kodu dzieje się tak, że jeśli przycisk przytrzymam to zasilanie zostaje włączona i wyłączana naprzemiennie, czyli stale wykonują się warunki a chciałbym tego uniknąć.
W obecnej postaci kodu dzieje się tak, że jeśli przycisk przytrzymam to zasilanie zostaje włączona i wyłączana naprzemiennie, czyli stale wykonują się warunki a chciałbym tego uniknąć.
Kod:
//Constants
const int buttonPin = 2;
//Variables
int buttonState = 0;
int flag=0;
//transistor
int powerControl = 8;
long time = 1;
long debounce = 200;
void setup() {
Serial.begin(9600);
//Input or output?
// pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
//pinMode(buttonPin, INPUT);
//transistor
digitalWrite(powerControl, HIGH);
pinMode(powerControl, OUTPUT);
Serial.println("Transistor base set to pin " + String(powerControl, DEC));
}
void loop(){
//Read button state (pressed or not pressed?)
buttonState = digitalRead(buttonPin);
//If button pressed...
if (buttonState == LOW && millis() - time > debounce) {
//...ones, turn led on!
if ( flag == 0){
digitalWrite(powerControl, LOW);
Serial.println("Servo Power is ON");
Serial.println(flag);
flag=1; //change flag variable
}
//...twice, turn led off!
else if ( flag == 1){
digitalWrite(powerControl, HIGH);
Serial.println("Servo power is OFF");
Serial.println(flag);
flag=0; //change flag variable again
}
time = millis();
}
}