Режимы свечения светодиода с помощью потенциометра
- Войдите на сайт для отправки комментариев
Пнд, 18/05/2020 - 19:55
#define potent_pin 0 // сюда подключена средняя нога потенциометра int val; // переменная для хранения значения с потенциометра const int btn = 2; // присваиваю переменую btn к ножке 2 int led_pin=3; // присваиваю переменую Led_pin к ножке 3 void setup() { pinMode(led_pin, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода. pinMode(btn, INPUT); // Инициализируем цифровой вход/выход в режиме входа. Serial.begin(9600); pinMode(led_pin, OUTPUT); // Инициализируем цифровой вход/выход в режиме выхода. pinMode(btn, INPUT); // Инициализируем цифровой вход/выход в режиме входа. } void loop() { val = analogRead(potent_pin); // запомнить показания с потенциометра val = map(val, 0, 1023, 0, 20); // перевести в диапазон 0.. 20 val = constrain(val, 0, 20); // ограничить диапазон 0.. 20 delay(10); // задержка в 1 секунду if (digitalRead(btn) == HIGH) { // Если кнопка нажата if (val == 19 || val == 20) { digitalWrite(led_pin, HIGH);// зажигаем светодиод delay(1000); digitalWrite(led_pin, LOW); // выключаем светодиод } } }
Принцип работы.
1. Потенциометром выбираем режим от 1 до 10(В данном случае их 20, но для точности я выбрал по 2, т.е . два значения отвечают за 1 режим ).
2.В зависимости от режима условием загорается светодиод на определенный период ( 1 режим 0.1 секунда ... 10 режим 1 секунда)
Проблема: Если зажать кнопку светодиод работает мерцанием светодиода с частотой заданной функцией delay. А мне нужно чтобы после зажатия кнопки он отработал режим(загорание на 1 секунду) и потух. Добрые люди подскажите что не так. xD
p.s Условия режимов загорания светодиодов нет. В коде только 10 режим.
воспользоваться переменной-флагом. Как только кнопка нажата - поднимаем флаг, включаем и выключаем светодиод с нужной задежкой и пока флаг не опустится - больше на кнопку не реагируем.
Флаг опускам только тогда, когда кнопка отжата.
Задержку на светодиоде лучше переписать на миллис, на delay() будет работать не совсем корректно
Почему строки 7 и 10, 8 и 11 одинаковые ?
Верно подметили ;)
Уже исправил
Ну вот что удалось. Но оно работает не корректно. По началу когда нажимаешь на кнопку все верно. Включает - Выключает. А потом может работать как обычно нажал на кнопку загорелось, еще раз нажал выключило.