Показать сообщение отдельно
Старый 29.03.2022, 22:18   #684
Morze701
Дастеровод - Гуру
 
Аватар для Morze701
Подробнее

Онлайн: Morze701 вне форума
Был(а): 2024-04-23 19:01
Имя: Дмитрий
Адрес: Москва
Автомобиль: Laguna 3 M9R AJ0
По умолчанию Re: Круиз-контроль на дизельном дастере 2021

Цитата:
Сообщение от Fabula_4x4
Нажали круиз - включился круиз
Повторное нажатие круиза - отключение его?
При включенном круизе нажать ограничение - переключение в ограничиние?
именно так

+ Нажмите здесь, чтобы увидеть скрытый текст

boolean flag_cc = 0; // flag_cc - флаг состояния режима круиз-контроля
boolean flag_sl = 0; // flag_sl - флаг состояния режима ограничителя скорости
boolean flag_butt_cc = 0; // flag_butt_cc - флаг кнопки круиз-контроля
boolean flag_butt_sl = 0; // flag_butt_sl - флаг кнопки ограничителя скорости
boolean butt_cc = 0; // butt_cc - мгновенное состояние кнопки круиз-контроля
boolean butt_sl = 0; // butt_sl - мгновенное состояние кнопки ограничителя скорости
unsigned long last_press_cc=0; // переменная для хранения момента последнего нажатия кнопки (алгоритм антидребезга)
unsigned long last_press_sl=0; // переменная для хранения момента последнего нажатия кнопки (алгоритм антидребезга)
unsigned long press_time_cc1=0;
unsigned long press_time_cc2=0;
unsigned long press_time_sl=0;




void setup ()
{

pinMode(PB1, INPUT); // 6 вход кнопки CC (круиз-контроль)
pinMode(PB2, INPUT); // 7 вход кнопки SL (ограничитель скорости)
pinMode(PB3, OUTPUT); // 2 выход круиз контроля
pinMode(PB4, OUTPUT); // 3 выход ограничителя

}




void loop ()
{
digitalWrite(PB3,flag_cc); //ввод режима круиза с текущим состоянием флага круиза
digitalWrite(PB4,flag_sl); //ввод режима ограничителя с текущим состоянием флага ограничителя
butt_cc = digitalRead (PB1); // чтение состояния с кнопки круиза
butt_sl = digitalRead (PB2); // чтение состояния с кнопки ограничителя



if (butt_cc==1 && flag_butt_cc==0 && millis()-last_press_cc>250) // "millis()-last_press_cc>50" - антидребезг
{
flag_butt_cc=!flag_butt_cc; // инвертирование флага кнопки круиза при нажатии
flag_sl=0; // отмена ограничителя

flag_cc=!flag_cc; // инвертирование флага режима круиза

last_press_cc=millis();
}
if (butt_cc==0 && flag_butt_cc==1){
flag_butt_cc=!flag_butt_cc; // инвертирование флага кнопки круиза при отпускании

}
if (butt_sl==1 && flag_butt_sl==0 && millis()-last_press_sl>250) // "millis()-last_press_sl>50" - антидребезг
{
flag_butt_sl=!flag_butt_sl; // инвертирование флага ограничителя при нажатии
flag_cc=0; // отмена круиза

flag_sl=!flag_sl; // инвертирование флага режима ограничителя
last_press_sl=millis();

}
if (butt_sl==0 && flag_butt_sl==1)
{
flag_butt_sl=!flag_butt_sl; // инвертирование кнопки ограничителя при отпускании
}


}
Вложения
Тип файла: zip CC_SL_at13.zip (922 байт, 169 просмотров)

Последний раз редактировалось Morze701; 29.03.2022 в 22:31.
  Ответить с цитированием

Это может быть интересно

Дастершоп77.ру - всё для Рено Дастер!