Работать будет если все сделать по инструкции
А как схемотехнически подключить такие кнопки к ардуино мега?
Маркировка резисторов, кнопок управления магнитолой:
R0 - 2201 (2,2 кОм)
R1- 3901 (3,9 кОм)
R2 - 103 (10 кОм)
R3 - 2202 (22 кОм)
Маркировка резисторов, кнопок управления круиз-контроля:
R11 - 82R0 (82 Ом)
R12 - 82R0 (82 Ом)
R13 - 1200 (120 Ом)
R14 - 103 (10 кОм)
Резисторы на подствеку имеют маркировку - 752 (7,5 кОм)
Синий провод - 12 вольт подсветки на диоды от габаритов
Серый провод - GND
Я так понимаю к аналог. входу ардуино надо подключать, а вот как?
Последний раз редактировалось kadushkin; 28.01.2012 в 11:57.
А ты не считал какое суммарное сопротивление получится при нажатии на кнопку S6 ?
Нет, не считал, а что?
При таком большом сопротивлении будет сильная зависимость от температуры и от наводок бортовой сети автомобиля. Попробуй протестируй , а то может быть это у меня паранойя
Я бы поменял все сопротивления на 100 ом
Я как понимаю резисторы тут делят напряжение и по напряжению на выходе получается сигнал, который ардуино должен единообразно интерпретировать.
Ну а если в качестве питания 12В (14,7В) использовать? Возможно делится напряжение будет единообразно... правда падение напряжения до 9В возможно.
Какие-то пределы нужно прописывать для каждой кнопки.
Есть код для подключения модуля из 5 кнопок с резисторной обвязкой
Хочу его адаптировать под управление рулевыми кнокпами
В коде строка int adc_key_val[5] ={50, 200, 400, 600, 800 } - значения на анал. входе (от 0 до 1023)
Как эти значения связаны с сопротивлением резисторов?
Вот у меня какие значения при нажатых кнопках выдал мультиметр:Код://ADKeyboard Module int adc_key_val[5] ={50, 200, 400, 600, 800 }; int NUM_KEYS = 5; int adc_key_in; int key=-1; int oldkey=-1; void setup() { pinMode(13, OUTPUT); //we'll use the debug LED to output a heartbeat Serial.begin(9600); // 9600 bps } void loop() { adc_key_in = analogRead(0); // read the value from the sensor digitalWrite(13,LOW); key = get_key(adc_key_in); // convert into key press if (key != oldkey) // if keypress is detected { delay(50); // wait for debounce time adc_key_in = analogRead(0); // read the value from the sensor key = get_key(adc_key_in); // convert into key press if (key != oldkey) { oldkey = key; if (key >=0){ digitalWrite(13,HIGH); switch(key) { case 0:Serial.println("S1 OK"); break; case 1:Serial.println("S2 OK"); break; case 2:Serial.println("S3 OK"); break; case 3:Serial.println("S4 OK"); break; case 4:Serial.println("S5 OK"); break; } } } } delay(100); } // Convert ADC value to key number int get_key(unsigned int input) { int k; for (k = 0; k < NUM_KEYS; k++) { if (input < adc_key_val[k]) { return k; } } if (k >= NUM_KEYS)k = -1; // No valid key pressed return k; }
82ом кнопка "-"
164ом кнопка "+"
284ом кнопка "SRC"
463ом кнопка ">>|"
792ом кнопка "|<<"
1470ом кнопка ">"
Я надеюсь их удастся единообразно трактовать при нажатии.
Подключать планирую так.
Общее питание 12В.
На землю один конец , а второй на аналоговый вход через делитель.
Последний раз редактировалось kadushkin; 10.03.2012 в 18:41.
Цепь раздельной оказалась, поэтому можно и без 12В обойтись.
Подключил к +5В и земле:
без нажатия кнопок на выходе 4,94В
с нажатой любой кнопкой 4,96В
Практически не изменилось значение.
Что я не пойму как подключать к ардуине... а именно к аналоговому входу.
Последний раз редактировалось kadushkin; 10.03.2012 в 21:49.
Я не понял, ты бы лучше схему подключения нарисовал
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)