В веду в курс дел.
У меня Adroino nano 3.0 c замкнутыми ножками 25 и 26 (спасибо Chip за внятное объяснение где и куда)
сделано по схеме
только без кон 0.01мфр.
Кнопки руля подключены все как надо рабочие, сняты данные всех кнопок.
скетч от Hamster единственный который работал
(у него как и у меня тоже хондовские кнопки руля может из за этого).
Код:/// Для рулевых кнопок // Задержки между нажатиями конкретных кнопок, миллисекунды #define KEY_CH_MINUS_DELAY (200) #define KEY_CH_PLUS_DELAY (200) #define KEY_VOL_MINUS_DELAY (150) #define KEY_VOL_PLUS_DELAY (150) #define KEY_MODE_DELAY (300) // Значения кнопок #define KEY_CH_MINUS (175) #define KEY_CH_PLUS (330) #define KEY_VOL_MINUS (0) #define KEY_VOL_PLUS (73) #define KEY_MODE (530) // Погрешность при чтении кнопок #define KEY_DELTA (30) // Коды кнопок, что отсылаем в порт внешней проге #define CH_MINUS (1) #define CH_PLUS (2) #define VOL_MINUS (3) #define VOL_PLUS (4) #define MODE (5) #define NONE (0) unsigned long LastTimeKeyPressed = millis(); int LastKeyPressed = NONE; void setup() { Serial.begin(9600); } void loop() { ReadSteering(); delay(50); } // Читает рулевые кнопки и пишет в порт код нажатой кнопки void ReadSteering() { unsigned long TimeKeyPressed; int KeyPressed = NONE; int dt1 = analogRead(5); delay(50); int dt2 = analogRead(5); if (abs(dt1-dt2)<=5 and dt1<900 ) //если нет дребезга и что-то есть { // Регистрируем время нажатия кнопки TimeKeyPressed = millis(); //CH_MINUS if ( (dt1-KEY_DELTA <= KEY_CH_MINUS) and (dt1+KEY_DELTA >= KEY_CH_MINUS) ) { if ( (LastKeyPressed != CH_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_MINUS_DELAY) ) { LastKeyPressed = CH_MINUS; KeyPressed = CH_MINUS; LastTimeKeyPressed = TimeKeyPressed; } } //CH_PLUS else if ( (dt1-KEY_DELTA <= KEY_CH_PLUS) and (dt1+KEY_DELTA >=KEY_CH_PLUS) ) { if ( (LastKeyPressed != CH_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_CH_PLUS_DELAY) ) { LastKeyPressed = CH_PLUS; KeyPressed = CH_PLUS; LastTimeKeyPressed = TimeKeyPressed; } } //VOL_MINUS else if ( (dt1-KEY_DELTA <= KEY_VOL_MINUS) and (dt1+KEY_DELTA >=KEY_VOL_MINUS) ) { if ( (LastKeyPressed != VOL_MINUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_VOL_MINUS_DELAY) ) { LastKeyPressed = VOL_MINUS; KeyPressed = VOL_MINUS; LastTimeKeyPressed = TimeKeyPressed; } } //VOL_PLUS else if ( (dt1-KEY_DELTA <= KEY_VOL_PLUS) and (dt1+KEY_DELTA >=KEY_VOL_PLUS) ) { if ( (LastKeyPressed != VOL_PLUS) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_VOL_PLUS_DELAY) ) { LastKeyPressed = VOL_PLUS; KeyPressed = VOL_PLUS; LastTimeKeyPressed = TimeKeyPressed; } } //MODE else if ( (dt1-KEY_DELTA <= KEY_MODE) and (dt1+KEY_DELTA >=KEY_MODE) ) { if ( (LastKeyPressed != MODE) or (abs(TimeKeyPressed-LastTimeKeyPressed) >= KEY_MODE_DELAY) ) { LastKeyPressed = MODE; KeyPressed = MODE; LastTimeKeyPressed = TimeKeyPressed; } } if (KeyPressed != NONE) { Serial.print(char(255)); Serial.print(KeyPressed,DEC); } //Serial.print(dt1,DEC); //Serial.print(" "); //Serial.println(dt2,DEC); } }
все работало стабильно на XP и на Win 7, установил Win 8 Pro и после этого тишина.
Сам ардионо находит и опознан я даже с машины заново закачивал скеч все проходило без проблем, обновлял драйвера для Win8 на всякий случай нечего не изменилось.
В Serial Monitor смотрел при нажатии кнопок нет реакции, по идее вроде проблема в дровах, но они последние которые я нашел для Win8 Pro может нужны какие то другие? я ставил CDM 2.08.24 WHQL Certified, и закачивал через Ardoino 1.0.1.
Завтра попробую подключить к лептопу проверить работает все на XP Pro SP3 но это все ровно не помогает найти причину, есть ли у кого то идеи в чем может быть проблема?
Кроме идей перейти на Win7.
Причина по которой я перешел на Win 8 Pro это то что она выходит из Гибернацим очень быстро 30 сек, со временем приобрету SSD и будет за 5-10 сек.




Ответить с цитированием