А ты не считал какое суммарное сопротивление получится при нажатии на кнопку 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ом кнопка ">"
Я надеюсь их удастся единообразно трактовать при нажатии.
http://big-e.ru/files/Buttons.jpg
Подключать планирую так.
Общее питание 12В.
На землю один конец , а второй на аналоговый вход через делитель.
Цепь раздельной оказалась, поэтому можно и без 12В обойтись.
Подключил к +5В и земле:
без нажатия кнопок на выходе 4,94В
с нажатой любой кнопкой 4,96В
Практически не изменилось значение.
Что я не пойму как подключать к ардуине... а именно к аналоговому входу.
Я не понял, ты бы лучше схему подключения нарисовал
Вот она, схема:
http://big-e.ru/files/Buttons.jpg
Как сие к ардуино подключить не знаю.
Может резистор R7 выпаять надо? тогда уровень логического нуля будет при разомкнутых кнопках.
В шапке темы есть схема подключения
Так?
http://big-e.ru/files/but.jpg
А значения емкости и сопротивления оставить как есть?