Требуется исполнитель : не имеет значения география, важна репутация.
Надо изготовить : добавить/исправить то, до чего сам не могу додуматься.
Планируемый бюджет : озвучивайте
Сроки : как обычно - "вчера"
Оплата : на карту
Для связи : форум/личка
ТЗ:
При подаче питания на Nano ничего не горит.
LeftButton
Нажимаем первый раз на кнопку - мигает диффузный светодиод (LeftLED) .
Нажимаем второй раз - гаснет.
Зажимаем и держим (или предложенный вариант) - мигают все поворотники ("аварийка").
RightButton
Нажимаем первый раз на кнопку - мигает диффузный светодиод (RightLED).
Нажимаем второй раз - гаснет.
Нюанс: мигают левые поворотники, при нажатии на правую кнопку левые выключаются, правые включаются.
Никакие поворотники не влияют на режим работы PoliceLED.
PoliceButton
Нажимаем первый раз на кнопку - перемигиваются по очереди пара диффузных светодиодов (PoliceLED) .
Нажимаем второй раз - гаснет.
Пожалуйста комментируйте код, что бы знал с чем играться для изменения продолжительности пауз и свечения.
Код не мой, сам лишь поправил имена и комментарии.
Надо изготовить : добавить/исправить то, до чего сам не могу додуматься.
Планируемый бюджет : озвучивайте
Сроки : как обычно - "вчера"
Оплата : на карту
Для связи : форум/личка
ТЗ:
При подаче питания на Nano ничего не горит.
LeftButton
Нажимаем первый раз на кнопку - мигает диффузный светодиод (LeftLED) .
Нажимаем второй раз - гаснет.
Зажимаем и держим (или предложенный вариант) - мигают все поворотники ("аварийка").
RightButton
Нажимаем первый раз на кнопку - мигает диффузный светодиод (RightLED).
Нажимаем второй раз - гаснет.
Нюанс: мигают левые поворотники, при нажатии на правую кнопку левые выключаются, правые включаются.
Никакие поворотники не влияют на режим работы PoliceLED.
PoliceButton
Нажимаем первый раз на кнопку - перемигиваются по очереди пара диффузных светодиодов (PoliceLED) .
Нажимаем второй раз - гаснет.
Пожалуйста комментируйте код, что бы знал с чем играться для изменения продолжительности пауз и свечения.
Код не мой, сам лишь поправил имена и комментарии.
C++:
// Константы это данные которые не изменяются в ходе программы.
// Используются здесь для установки номера пина - вывода Ардуино:
const int ButtonLeft = 2; // Кнопка 1 Левый поворотник
const int ButtonRight = 5; // Кнопка 2 Правый поворотник
const int ButtonPolice = 4; // Кнопка 3 Проблесковый
const int LeftLED = 3; // Левый LED
const int RightLED = 10; // Правый LED
const int PoliceLED = 11; // Проблесковый LED
// Переменные которые будут меняться в ходе программы
// Отвечают за текущее состояние кнопки
// Однобайтовый типы данных
boolean buttonSt1 = 0; // Состояние Кнопки 1
boolean buttonSt2 = 0; // Состояние Кнопки 2
boolean buttonSt3 = 0; // Состояние Кнопки 3
unsigned long last_time1 = 0; // Переменная для хранения времени
unsigned long last_time2 = 0; // Переменная для хранения времени
unsigned long last_time3 = 0; // Переменная для хранения времени
int Pausa = 300; // Защита от дребезга
void setup() {
// инициализируем светодиоды в качестве вывода:
pinMode(LeftLED, OUTPUT); // Светодиод работает в режиме Выхода
pinMode(RightLED, OUTPUT); // Светодиод работает в режиме Выхода
pinMode(PoliceLED, OUTPUT); // Светодиод работает в режиме Выхода
// инициализируем кнопку в качестве ввода с подключением внутреннего подтягивающего резистора
pinMode(ButtonLeft, INPUT_PULLUP); // Кнопка работает в режиме Входа
pinMode(ButtonRight, INPUT_PULLUP); // Кнопка работает в режиме Входа
pinMode(PoliceLED, INPUT_PULLUP); // Кнопка работает в режиме Входа
}
void loop() {
// считывание текущее состояние кнопки
buttonSt1 = digitalRead(ButtonLeft); // Состояние кнопки 1
buttonSt2 = digitalRead(ButtonRight); // Состояние кнопки 2
buttonSt3 = digitalRead(ButtonPolice); // Состояние кнопки 3
// Проверяем, нажата ли кнопка. Если да, то состояние кнопки будет НИЗКОЕ
// При нажатии кнопки она подключается к земле.
if (buttonSt1 == LOW){
if(millis() - last_time1 > Pausa) { // начинаем считать время нажатия
digitalWrite(LeftLED, !digitalRead(LeftLED)); // Включаем левый, если был включен, то выключаем
last_time1 = millis(); // Сохраняем новое время
}
}
if (buttonSt2 == LOW){
if(millis() - last_time2 > Pausa){ // начинаем считать время нажатия
digitalWrite(RightLED, !digitalRead(RightLED)); // Включаем правый, если был включен, то выключаем
last_time2 = millis(); // Сохраняем новое время
}
}
if (buttonSt3 == LOW){
if(millis() - last_time3 > Pausa) { // начинаем считать время нажатия
digitalWrite(PoliceLED, !digitalRead(PoliceLED)); // Включаем проблесковый, если был включен, то выключаем
last_time3 = millis(); // Сохраняем новое время
}
}
}
Изменено: