Официальный сайт компании Arduino по адресу arduino.cc
опрос кнопок
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 27/02/2019 - 17:10
имеются электронные часы. решил собрать новую электроную начинку но не как не могу победить кнопки. не могу организовать разовое значение нажатия кнопки добавление флагов не помогает. проблема в том что нога 4 меняет свое значение.то мы с нее считывает то она общая. код но в нем работает бесконечно пока нажата кнопка.
int flag=0; void setup() { Serial.begin(9600); } void loop() { pinMode(2, OUTPUT); digitalWrite(2, LOW); pinMode(8,INPUT_PULLUP); // вход с подтяжкой if (digitalRead(8)==LOW&&flag==0) { flag=1 ; digitalWrite(A5, HIGH); Serial.println("Alarm"); } if (digitalRead(8)==HIGH&&flag==1) { flag=0; digitalWrite(A5, LOW); } pinMode(7,INPUT_PULLUP); // вход с подтяжкой if (digitalRead(7)==LOW&&flag==0) { digitalWrite(A4, HIGH); Serial.println("M-"); } if (digitalRead(7)==HIGH&&flag==1) { flag=0; digitalWrite(A4, LOW); } pinMode(4,INPUT_PULLUP); // вход с подтяжкой if (digitalRead(4)==LOW&&flag==0) { digitalWrite(A3, HIGH); Serial.println("H+"); } if (digitalRead(4)==HIGH&&flag==1) { flag=0; digitalWrite(A3, LOW); } pinMode(3,INPUT_PULLUP); // вход с подтяжкой if (digitalRead(3)==HIGH&&flag==0) { digitalWrite(A2, HIGH); Serial.println("Set"); } if (digitalRead(3)==HIGH&&flag==1) { flag=0; digitalWrite(A2, LOW); } pinMode(4, OUTPUT); digitalWrite(4, LOW); pinMode(5,INPUT_PULLUP); // вход с подтяжкой if (digitalRead(5)==LOW&&flag==0) { digitalWrite(A1, HIGH); Serial.println("M+"); } if (digitalRead(5)==HIGH&&flag==1) { flag=0; digitalWrite(A1, LOW); } pinMode(6,INPUT_PULLUP); // вход с подтяжкой if (digitalRead(6)==LOW&&flag==0) { digitalWrite(A0, HIGH); Serial.println("H-"); } if (digitalRead(6)==HIGH&&flag==1) { flag=0; digitalWrite(A0, LOW); } }
решает проблему
pinMode(8,INPUT_PULLUP); // вход с подтяжкой if (digitalRead(8)==LOW&&flag==0) { flag=1 ; digitalWrite(A5, HIGH); Serial.println("Alarm"); } if (digitalRead(8)==HIGH&&flag==1) { flag=0; digitalWrite(A5, LOW); }
но только если использовать 1 кнопку. если применить для всех 6 то но при передлючении в режим 4 ноги на общий получается бесконечное нажатие кнопки постоянно.
как решить проблему не могу понять.у китайцев собранно было по воттакой схеме если правильно ее прочитал
А в чем высший смысл от смены направления 4 пина? Посадите общий провод на землю и радуйтесь - 7 проводов, 6 кнопок. Еще и порт освободите. Или из любви к искусству?
Ну тут типа пытались пины сэкономить, по факту нет.
А так да, можно было все эти кнопки(и ещё столько же сверху) повешать на 4 провода. Но видимо у реализатора мозгов не хватило.
Если нужна экономия, то 6 кнопок с диодами вешаются на 3 цифровых пина. Почти как у китайцев.)