Работает!!!
Что бы я делал без этого форума и его Админа, на котором все держится.
Chip
Поясни строки кода:
зачем второй байт?PHP код:bytes[0] = res_d & 255; // преобразовать в 2-байта
bytes[1] = (res_d & 768) >> 8;
Работает!!!
Что бы я делал без этого форума и его Админа, на котором все держится.
Chip
Поясни строки кода:
зачем второй байт?PHP код:bytes[0] = res_d & 255; // преобразовать в 2-байта
bytes[1] = (res_d & 768) >> 8;
Последний раз редактировалось kadushkin; 12.03.2012 в 00:06.
Потому что значение 1023 в один байт не укладывается
А вообще рекомендую более свежую версию скетча и софта
Учту, спасибо!
Вот финальная схема, которую я (в кавычках) наконец реализовал:
![]()
Код для этой схемы, передрал отсюда http://www.compcar.ru/forum/showpost...&postcount=227 и адаптировал под свою задачу
Код:// Функция проверки нажатия рулевой кнопки // Возвращает false если кнопка не была нажата // и true если нажата // ButtonName принимает значения в зависимости от нажатой кнопки +, -, >, R=>>|, L=|<<, S=SRC, X=None boolean WheelButonPush_IsPushed() { bool result; result=false; unsigned long buttonVal; buttonVal=0; ButtonName='X'; res_d = analogRead(WheelButtonsPin); if( res_d < LIMIT) res_d = LIMIT; delay(10); res_dt1 = analogRead(WheelButtonsPin); old_time = millis(); math_time = 0; while(math_time < 200) { real_time = millis(); math_time = real_time - old_time; res_dt1 = analogRead(WheelButtonsPin); if(res_dt1 < res_d-LIMIT || res_dt1 > res_d+LIMIT)break; } if( math_time > 70) { buttonVal=res_d; ButtonName='X'; // Serial.println (res_d); if ((buttonVal>25) && (buttonVal<45)) { ButtonName='-'; //35-36 result=true; } if ((buttonVal>60) && (buttonVal<85)) { ButtonName='+'; //72-73 result=true; } if ((buttonVal>110) && (buttonVal<135)) { ButtonName='S'; //122 result=true; } if ((buttonVal>175) && (buttonVal<200)) { ButtonName='R'; //187 result=true; } if ((buttonVal>275) && (buttonVal<295)) { ButtonName='L'; //285 result=true; } if ((buttonVal>415) && (buttonVal<440)) { ButtonName='>'; //429 result=true; } if ((buttonVal>645) && (buttonVal<670)) { ButtonName='X'; //658-659 result=false; } buttonVal=0; } return result; }
Последний раз редактировалось kadushkin; 14.03.2012 в 18:01.
Подскажите плз, собрал также, работает нормально, но где-то через минут 20 толи подвисает, толи еще чтото потом через пол минуты отпускает и опять нормально работает. куда нужно копать?
собрал на ардуине нано v3
Возможно ардуиной проблемы? попробуй другие скетчи
дома на 7ке работает. в машине на XP пишет FT_Open - Device not found
в чем может быть проблемка?
и еще в 7ке определяется как carmonitor joystik
а в ХР просто USB serial port (COM15)
Последний раз редактировалось DEL4ik; 23.08.2012 в 19:04.
Попробуй драйвер переустановить
kadushkin
не компилица твой код![]()
Небольшой "трикс" для владельцев ардуин без специального "кнопочного" входа.
PORTC - это очень хитрый порт
В часть его встроены внутренние "подтяжки". Что открывает чуть больший простор для творчества.Конкретно, ноги A0-A5.
Ниже схема и код, который без проблем снимает значения рулевых кнопок Киа Соренто с ноги А1.
Если где было, прошу сильно не пинатьPHP код://v_down=167
//v_up=124
//preset=235
//seek=25
//mode=67
void setup() {
Serial.begin(9600);
PORTC |= B00000010; //вот это самая главная строчка для корректной работы АЦП (нога А1) для А2 это будет выглядеть так PORTC |= B00000100;
}
void loop() {
Serial.print(analogRead(1));
Serial.print('\n');
delay(100);
}
Также, имейте в виду, что внутренней подтяжки может не хватить для конкретной резистивной матрицы, тогда придется подбирать делитель самостоятельно и ставить внешние резисторы.
Последний раз редактировалось BlkDem; 31.10.2012 в 13:20.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)