Цитата:
Сообщение от OsDima
Попытался вспомнить програмирование и поразбирался со скетчем.
Как я понял что переменная res_key_count содержит количество резистивных кнопок и при работе скетча оно запоминается в ПЗУ (куда-то) и оно (количество) потом всегда остается такое-же.
У меня стояло = 0 а их физически аж 19 при 100 Ом между ними.
И сейчас не всегда выходят одни и теже коды в iCar (иногда 2, иногда 3, иногда пересекаются на разных соседних кнопках - особенно при прогреве двигателя.
Хотя на трассе такого потом не наблюдается (при больших оборотах)).
Мне заново залить скетч с res_key_count = 19 , чтоли (чтобы работало постабильнее) или подобрать другие резисторы.
|
переменная res_key_count должна быть равна 0 при загрузке скетча. Потом ей будет присвоено значение из EEPROM.
Твоя проблема скорее всего связана с низким качеством самих кнопок. Я вначале поставил тактовые кнопки и запарился с ними, они всё время возвращали разные значения. Заменил их на микроконтакты и всё сразу исправилось.
В твоём случае думаю стоит увеличить шаг сопротивлений, то есть использовать не 100 Ом, а 200 или 300. И увеличить переменную
unsigned int res_key_delta = 3; с 3-х, до 5-ти, а может и до 6-ти или 7-ми.
Но прежде чем заливать новый скетч поменяй это значение
#define RES_KEY_FLAG_ 0x76 // Флаг первого запуска скетча
с 0x76 на другое значение, допустим 0x77. Тогда скетч будет считать что это его первый запуск и сотрёт из EEPROM все ранее запомненые значения