А ты не считал какое суммарное сопротивление получится при нажатии на кнопку S6 ?
А ты не считал какое суммарное сопротивление получится при нажатии на кнопку 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.
Я не понял, ты бы лучше схему подключения нарисовал
Вот она, схема:
Как сие к ардуино подключить не знаю.
Может резистор R7 выпаять надо? тогда уровень логического нуля будет при разомкнутых кнопках.
Последний раз редактировалось kadushkin; 10.03.2012 в 21:54.
В шапке темы есть схема подключения
Так?
А значения емкости и сопротивления оставить как есть?
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)