Написал код, чтоб если кнопка была нажата дольше 2 сек то светодиод выключался и если кнопка горела меньше 2х сек то он загорался. Не работает. Не могу понять в чем ошибка. Код (C++): int pk = 5; int pl = 13; int kt = 0; void setup() { pinMode(pk, INPUT_PULLUP); } void loop() { int pki = digitalRead(pk); if( pki == LOW){ delay(10); int pki = digitalRead(pk); if( pki == LOW){ for(int i = 0; digitalRead(pk) == LOW; ++i){ kt = millis(); digitalWrite(pl, HIGH); delay(200); digitalWrite(pl, LOW); delay(200); } } } if (kt>2000){ digitalWrite(pl, HIGH); }else{ digitalWrite(pl, LOW); }
почитай, будет полезно http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku
Если программа больше ничего не делает, то: Код (C++): timerPK = millis(); while (digitalRead(pk)); delay(5); while (!digitalRead(pk)); delay(5); digitalWrite(pl, ((millis() - timerPK) > 2000)); Понятное дело, что до setup объявить переменную: Код (C++): unsigned long timerPK; Возможно придется поменять условия нажатия и отпускания кнопки, то есть передвинуть "!" из второй функции в первую. Ну и вкл-выкл если наоборот надо, то последняя строка: Код (C++): digitalWrite(pl, !((millis() - timerPK) > 2000));
Не работает( Код (C++): int pk = 2; int pl = 13; int kt = 0; unsigned long timerPK; void setup() { pinMode(pk, INPUT_PULLUP); } void loop() { timerPK = millis(); while (digitalRead(pk)); delay(5); while (!digitalRead(pk)); delay(5); digitalWrite(pl, ((millis() - timerPK) > 2000)); }
Код (C++): int pk = 2; int pl = 13; int kt = 0; unsigned long timerPK; void setup() { pinMode(pk, INPUT_PULLUP); pinMode(pl, OUTPUT); } void loop() { while (digitalRead(pk)); timerPK = millis(); delay(5); while (!digitalRead(pk)); delay(5); digitalWrite(pl, ((millis() - timerPK) > 2000)); }