|
Диагностика KIA / HYUNDAI | ремонт электроники Обсуждаем вопросы, касающиеся диагностики KIA / HYUNDAI, диагностического оборудования, автосканеров. |
|
LinkBack | Опции темы | Поиск в этой теме | Опции просмотра |
04.09.2023, 14:55 | #1 (permalink) |
Новичок
Регистрация: 31.03.2021
Сообщений: 15
Вы сказали Спасибо: 0
Поблагодарили 9 раз(а) в 2 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Откуда: Краснодар
|
Круиз контроль под управлением кнопок руля автомагнитолы на ардуино
Расписывать много не буду.
Всё давным давно разжованно. Хочу всем показать реализацию готового и проверенного проекта, потому что на просторах интернета ничего не нашел! |
04.09.2023, 14:57 | #2 (permalink) |
Новичок
Регистрация: 31.03.2021
Сообщений: 15
Вы сказали Спасибо: 0
Поблагодарили 9 раз(а) в 2 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Откуда: Краснодар
|
ПО схеме думаю все понятно. Единственное пришлось поменять номиналы некоторых резисторов, так как на используемых оптопарах есть падение напряжения от 0,04 В до 0,06 В при токе 1Ма в зависимости от производителя.
Детали: 1. Arduino nano или mini 200-300 р. 2. Оптопара транзисторная LTV-817S-TA1-C, 10 шт. 7-10 р. за шт. 3. Резисторы smd 12 шт. 1р. за шт. 4. Диод High-speed BAS32L 5шт. 3р. за шт. 5 Пьезоизлучатель .HPM14A, 5 В, 14 мм, 50р. Итого менее 500р. Работа кнопок: громкость "+" "-" работает в штатном режиме далее все остальные кнопки короткими нажатиями управляют магнитофоном а длинные круизом Mute > Cancel Mode > On/Off Trek- > Set- Trek+> Res+ Длинные нажатия озвучиваются коротким "ПИИК" Единственное чего мы лишаемся перемотки песен и поиска каналов радиостанций с кнопок руля. Файлы: прошивка и плата (yadi.sk/d/PAGmn7FAzdxfuQ) ---------- Версия 2: yadi.sk/d/Q7ls4v8rWVb3wA Работает так: после включения все кнопки кроме "mode" работают в штатном режиме.(можем мотать песни и искать радио) Короткое нажатие "mode" управляем магнитофоном. После долгого удержания "mode" активируется круиз и кнопки работают как в первом варианте. Работу обеих прошивок проверил на авто. |
04.09.2023, 15:13 | #8 (permalink) |
Новичок
Регистрация: 31.03.2021
Сообщений: 15
Вы сказали Спасибо: 0
Поблагодарили 9 раз(а) в 2 сообщениях
Сказал(а) Фууу!: 0
Сказали Фууу! 0 раз(а) в 0 сообщениях
Откуда: Краснодар
|
unsigned long kruiz_aktiviti=0;
unsigned long knopka_time=0 ; //таймер кнопки, bool KEY_mute_activity=0; //флаг активности кнопки mute bool KEY_ch_plys_activity=0; //флаг активности кнопки ch_plys bool KEY_ch_minus_activity=0; //флаг активности кнопки ch_minus bool KEY_mode_activity=0; //флаг активности кнопки mode bool status_zumer=0; bool zumer_activity=0; bool kruiz_regim=0; #define max_time 8000 //задержка на долгое нажатие #define min_time 10 // Значения кнопок #define KEY_vol_minus 650 //Кнопка #define KEY_vol_plys 552 //Кнопка #define KEY_mute 451 //Кнопка #define KEY_mode 357 //Кнопка #define KEY_ch_minus 228 //Кнопка #define KEY_ch_plys 98 //Кнопка #define NOKEY 1023 //Кнопки отпущены #define vol_minus 7 // № пина #define vol_plys 6 // № пина #define mute 5 // № пина #define mode 4 // № пина #define ch_minus 3 // № пина #define ch_plys 2 // № пина #define on_of 10 // № пина #define res_plys 11 // № пина #define res_minus 12 // № пина #define cancel 9 // № пина #define zumer 8 // № пина void setup() { Serial.begin(9600); // initialize serial communication at 9600 bits per second: pinMode(vol_minus, OUTPUT); pinMode(vol_plys, OUTPUT); pinMode(mute, OUTPUT); pinMode(mode, OUTPUT); pinMode(ch_minus, OUTPUT); pinMode(ch_plys, OUTPUT); pinMode(on_of, OUTPUT); pinMode(res_plys, OUTPUT); pinMode(res_minus, OUTPUT); pinMode(cancel, OUTPUT); pinMode(zumer, OUTPUT); } void loop() { int KEY = analogRead(A0); // считываем значение напряж pin A0: // Serial.println(analogRead(A0));// печать в порт if(KEY>KEY_vol_plys-10&KEY<KEY_vol_plys+10){digitalWrite(vol_plys, HIGH);}// если нажали кнопку vol_plys включаем резюк vol_plys else {digitalWrite(vol_plys, LOW);} //если отпустили выключаем if(KEY>KEY_vol_minus-10&KEY<KEY_vol_minus+10){digitalWrite(vol_minus, HIGH);}// если нажали кнопку vol_minus включаем резюк vol_minus else {digitalWrite(vol_minus, LOW);} //если отпустили выключаем if(kruiz_aktiviti==1){ if(KEY>KEY_mute-10&KEY<KEY_mute+10){ //если нажали кнопку mute KEY_mute_activity=1; //меняем статус ЧТО КНОПКА НАЖАТА if(knopka_time<max_time){knopka_time++;} //запуск таймера if(knopka_time==max_time){ //если таймер дотикал до максимума digitalWrite(cancel, HIGH);zumer_activity=1; //включаем резюк на cancel }} else{digitalWrite(cancel, LOW);} if(KEY>KEY_ch_plys-10&KEY<KEY_ch_plys+10){ //если нажали кнопку ch_plys KEY_ch_plys_activity=1; //меняем статус ЧТО КНОПКА НАЖАТА if(knopka_time<max_time){knopka_time++;} //запуск таймера if(knopka_time==max_time){ //если таймер дотикал до максимума digitalWrite(res_plys, HIGH);zumer_activity=1; //включаем резюк на res_plys }} else{digitalWrite(res_plys, LOW);} if(KEY>KEY_ch_minus-10&KEY<KEY_ch_minus+10){ //если нажали кнопку ch_minus KEY_ch_minus_activity=1; //меняем статус ЧТО КНОПКА НАЖАТА if(knopka_time<max_time){knopka_time++;} //запуск таймера if(knopka_time==max_time){ //если таймер дотикал до максимума digitalWrite(res_minus, HIGH);zumer_activity=1; //включаем резюк на res_minus }} else{digitalWrite(res_minus, LOW);}} if(kruiz_aktiviti==0){ if(KEY>KEY_mute-10&KEY<KEY_mute+10){digitalWrite(mute, HIGH);} else{digitalWrite(mute, LOW);} if(KEY>KEY_ch_plys-10&KEY<KEY_ch_plys+10){digitalWrite(ch_plys, HIGH);} else{digitalWrite(ch_plys, LOW);} if(KEY>KEY_ch_minus-10&KEY<KEY_ch_minus+10){digitalWrite(ch_minus, HIGH);} else{digitalWrite(ch_minus, LOW);} } if(KEY>KEY_mode-10&KEY<KEY_mode+10){ //если нажали кнопку mode KEY_mode_activity=1; //меняем статус ЧТО КНОПКА НАЖАТА if(knopka_time<max_time){knopka_time++;} //запуск таймера if(knopka_time==max_time){ //если таймер дотикал до максимума digitalWrite(on_of, HIGH);zumer_activity=1; //включаем резюк на on_of if(!kruiz_regim){ kruiz_regim=1;kruiz_aktiviti++ ; } }} else{digitalWrite(on_of, LOW);} if(kruiz_aktiviti==2){kruiz_aktiviti=0;} if(!status_zumer&zumer_activity){tone(zumer, 1200, 300);status_zumer=1;} if(KEY>NOKEY-20&KEY<NOKEY+10){ //после отпускания кнопок if(knopka_time<max_time&knopka_time>min_time) //проверяем время нажатия и какая кнопка была нажата { if(KEY_mute_activity){digitalWrite(mute, HIGH); delay(200);digitalWrite(mute, LOW); } //если mute коротко тогда включам резюк mute на 0,2 секунды if(KEY_ch_plys_activity){digitalWrite(ch_plys, HIGH); delay(200);digitalWrite(ch_plys, LOW); }//если ch_plys------ if(KEY_ch_minus_activity){digitalWrite(ch_minus, HIGH); delay(200);digitalWrite(ch_minus, LOW); }//если ch_minus ----- if(KEY_mode_activity){digitalWrite(mode, HIGH); delay(200);digitalWrite(mode, LOW); }//если mode ------ } knopka_time=0;KEY_mute_activity=0;KEY_ch_plys_acti vity=0;KEY_ch_minus_activity=0;KEY_mode_activity=0 ;status_zumer=0;zumer_activity=0;kruiz_regim=0;} //сбрасывае все щетчики и таймеры и ждем следуещего нажатия } |
|
|