MKLele
October 15, 2019, 5:56pm
1
Hi! I have a little problem. I wrote a program that when I toggle my switch sends impulse to pin. Now I want to have 2 impulses - 1 (on pin X) when I turn switch ON and 1 (on pin Y ) when I turn switch OFF.
Here's my code:
int buttonState=0;
int lastButtonState=0;
void setup(){
pinMode(2,INPUT_PULLUP);
pinMode(13,OUTPUT);
}
void loop(){
buttonState=digitalRead(2);
if(buttonState!=lastButtonState){
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
lastButtonState=buttonState;
}else{
digitalWrite(13,HIGH);
}
}
If someone could help me that would be great!
Robin2
October 15, 2019, 6:04pm
2
Your need to change your code so it detects when the switch input goes HIGH and LOW - something like this
if(buttonState!=lastButtonState){
if (buttonState == HIGH) {
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
}
else {
digitalWrite(pinX,LOW);
delay(100);
digitalWrite(pinX,HIGH);
}
lastButtonState=buttonState;
}else{
digitalWrite(13,HIGH);
digitslWrite(pinX, HIGH);
}
...R
MKLele
October 15, 2019, 6:47pm
3
Thank you Robin2 very much! Everything is working and just like I imagined it!
Here's my completed code for curious:
int buttonState=0;
int lastButtonState=0;
void setup(){
pinMode(2,INPUT_PULLUP);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
void loop(){
buttonState=digitalRead(2);
if(buttonState!=lastButtonState){
if (buttonState == HIGH) {
digitalWrite(13,LOW);
delay(100);
digitalWrite(13,HIGH);
}
else {
digitalWrite(12,LOW);
delay(100);
digitalWrite(12,HIGH);
}
lastButtonState=buttonState;
}else{
digitalWrite(13,HIGH);
digitalWrite(12,HIGH);
}
}