Коллеги-друзья, Помогите пожалуйста, смысл такой, нужно мигать светодиодом бед delay по нажатию кнопки и так, чтобы он помигал скажим пять раз и потом горел, я кнопку отпустил, он опять помигал и горит пока я кнопку не отпущу, я сделал так, чтобы он мигал, а, как сделать так, чтобы он потом горел?
Для начала распишите задачу более внятно. "отпустил, он помогал и горит, пока не отпущу" - это как понимать?
Окай))) Есть кнопка, есть светодиод, нужно сделать так, чтобы при нажатии на кнопку и её дольнейшем удерживание удерживании светодиод проморгал пять раз, а дальше продолжал гореть постоянно, пока я не отпущу кнопку, если же я нажал кнопку и отпустил, то он просто поморгал
Код (Text): int ledPin = 13; int value = LOW; long previousMillis = 0; long interval = 120; // интервал мигания в миллисекундах int inPin; bool _count1I = 0; int _count1P = 0; bool post; void setup() { Serial.begin(9600); pinMode (2,INPUT); pinMode(ledPin, OUTPUT); } void loop() { inPin = digitalRead(2); if (inPin){led;} } void led(){ inPin = digitalRead(2); if (inPin && millis() - previousMillis > interval) { previousMillis = millis(); if (value == LOW) value = HIGH; else value = LOW; digitalWrite(ledPin, value); } }
В том то и дело, не получается добавить так, что бы было хорошо, подправте пожалуйста если не трудно, бьюсь уже двое суток, при добавлении счётчика, он начинает просто гореть после первого промаргивания
Вот так попробуйте. Набросал на скорую руку, не проверял. Код (Text): int ledPin = 13; int value = LOW; long previousMillis = 0; long interval = 120; int counter = 0; void setup() { Serial.begin(9600); pinMode (2, INPUT); pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(2)) { if(counter < 5) { if(millis() - previousMillis > interval) { previousMillis = millis(); value = (value == LOW) ? HIGH : LOW; digitalWrite(ledPin, value); if(value == LOW) counter++; } } else digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); counter = 0; } }
Спасибище огромное, завтра попробую отпишусь, а по счёт моего кода, я к сожалению его потери, оставил этот как наверняка работающий, но если время будет, дак я его ещё раз думаю смогу повторить
Тернарный оператор? Зачем так сложно? Синтаксис С позволяет заменить это строчкой: Код (Text): value = !value;