27.12.2012, 12:15 | #351 | |
Старший Пользователь
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
|
Цитата:
|
|
27.12.2012, 14:25 | #352 |
Administrator
Регистрация: 15.06.2005
Город: Москва
Регион: 77, 97, 99, 177
Машина: Lexus RX400h
Сообщений: 832
|
580, 320, 510 тоже самое что и было
__________________
Все для arduino. |
27.12.2012, 15:48 | #353 | |
Бывалый писикарщик
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
|
Теперь вроде видно порядок смены значений, вечерком повнимательнее проанализирую и и скажу какие значения и где изменить
Цитата:
__________________
Opel Zafira B --- ГАЗ 21 ВОЛГА в 21 веке --- Скин OpelZafira для RideRunner --- Скин CFStyle для RideRunner Плагин RRCheckEngine --- CFStyle для iCar DS --- iCarVOBD --- iCarDuino --- iCarCoreTemp --- iCarNotes --- iCarVoiceCommander |
|
27.12.2012, 21:31 | #354 |
Бывалый писикарщик
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
|
2 folv
Попробуй такую процедуру для энкодера Код:
void encoder_1() { if( encoder1_key_millis + encoder1_key_wait_millis*2 < millis() ) { encoder1_key_old = 0; } if( encoder1_millis + encoder1_wait_millis < millis() ) { encoder1_millis = millis(); encoder1_dt = analogRead(ENCODER1_PIN); // прочитать данные АЦП if( encoder1_dt >= 0x224 && encoder1_dt <= 0x264 ) { // Здесь обрабатываем удержание кнопки encoder1_key = ENCODER1_PIN; encoder1_key = (encoder1_key << 16) | 0x030000EE; if ( encoder1_key == encoder1_key_old ) { // Здесь обрабатываем удержание кнопки if( encoder1_key_millis + encoder1_key_wait_millis < millis() ) { bytes[0] = encoder1_key & 0xFF; // преобразовать в 4-байта bytes[1] = (encoder1_key & 0xFF00) >> 8; bytes[2] = (encoder1_key & 0xFF0000) >> 16; bytes[3] = (encoder1_key & 0xFF000000) >> 24; Serial.write( bytes,4); // отправить прочитаное значение компьютеру encoder1_key_millis = millis(); encoder1_key_wait_millis = encoder1_key_wait; //ir_wait_next; } } else { // Здесь обрабатываем первое нажатие кнопки encoder1_key_millis = millis(); encoder1_key_wait_millis = 50; //ir_wait_first; } encoder1_key_old = encoder1_key; } else { if( encoder1_dt >= 0x3C0 && encoder1_dt <= 0x3FF && encoder1_key3 != 1 ) { if( (encoder1_key2 == 2) && (encoder1_key3 == 3)) { bytes[0] = 0xEE; // преобразовать в 2-байта bytes[1] = 0; bytes[2] = ENCODER1_PIN; bytes[3] = 1; Serial.write( bytes,4); // отправить прочитаное значение компьютеру } else { if( (encoder1_key2 == 3) && (encoder1_key3 == 2) ) { bytes[0] = 0xEE; // преобразовать в 2-байта bytes[1] = 0; bytes[2] = ENCODER1_PIN; bytes[3] = 2; Serial.write( bytes,4); // отправить прочитаное значение компьютеру } } encoder1_key1=encoder1_key2; encoder1_key2=encoder1_key3; encoder1_key3=1; } else { if( encoder1_dt >= 0xC3 && encoder1_dt <= 0x113 && encoder1_key3 != 2 ) { encoder1_key1=encoder1_key2; encoder1_key2=encoder1_key3; encoder1_key3=2; } else { if( encoder1_dt >= 0x120 && encoder1_dt <= 0x160 && encoder1_key3 != 3 ) { encoder1_key1=encoder1_key2; encoder1_key2=encoder1_key3; encoder1_key3=3; } } } } } } И ещё в адуино V.7 лучше вешать на аналоговый пин №7 резестивные кнопки. А энкодеры на 5 и 6-й пин.
__________________
Opel Zafira B --- ГАЗ 21 ВОЛГА в 21 веке --- Скин OpelZafira для RideRunner --- Скин CFStyle для RideRunner Плагин RRCheckEngine --- CFStyle для iCar DS --- iCarVOBD --- iCarDuino --- iCarCoreTemp --- iCarNotes --- iCarVoiceCommander |
28.12.2012, 06:45 | #355 | |
Старший Пользователь
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
|
Цитата:
в адуино V.7 сразу переписал PHP код:
Последний раз редактировалось Bersenev; 28.12.2012 в 10:51. |
|
28.12.2012, 13:14 | #356 |
Старший Пользователь
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
|
1. Можно вопросик ели это не секрет
if( encoder1_dt >= 0x224 && encoder1_dt <= 0x264 ) - это для кнопки я понял как вычислить А для вращения в влево и право - не допонял эти значения if( encoder1_dt >= 0x3C0 && encoder1_dt <= 0x3FF && encoder1_key3 != 1 ) if( encoder1_dt >= 0xC3 && encoder1_dt <= 0x113 && encoder1_key3 != 2 ) if( encoder1_dt >= 0x120 && encoder1_dt <= 0x160 && encoder1_key3 != 3 ) 2. Длина проводов до енкодора кретична или нет? |
28.12.2012, 13:48 | #357 |
Бывалый писикарщик
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
|
if( encoder1_dt >= 0x3C0 && encoder1_dt <= 0x3FF && encoder1_key3 != 1 ) - 3FF выдаётся когда в энкодер находится в нулевом положении, когда не нажата ни одна кнопка. Но в связи с тем что и в этом положении бывает дребезг (видно из скриншотов), то задаём некоторый диапозон задав минимальное значение 3C0 if( encoder1_dt >= 0xC3 && encoder1_dt <= 0x113 && encoder1_key3 != 2 ) if( encoder1_dt >= 0x120 && encoder1_dt <= 0x160 && encoder1_key3 != 3 ) При повороте в одну сторону у тебя происходит выдача таких значений 3FF -- F3 -- 140 -- 3FF, а в другую 3FF -- 140 --F3 -- 3FF. Отсюда и диапазон для F3 (C3 - 113), а для 140 (120 - 160). Разумеется всё в шестнадцатеричной системе При тестах были метровые провода, всё работало без сбоев
__________________
Opel Zafira B --- ГАЗ 21 ВОЛГА в 21 веке --- Скин OpelZafira для RideRunner --- Скин CFStyle для RideRunner Плагин RRCheckEngine --- CFStyle для iCar DS --- iCarVOBD --- iCarDuino --- iCarCoreTemp --- iCarNotes --- iCarVoiceCommander |
28.12.2012, 19:15 | #358 |
Старший Пользователь
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
|
Данный скетч из шапки на ардуино Nano V.4 не помещается - большой размер
|
28.12.2012, 19:37 | #359 |
Старший Пользователь
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
|
А в этом плагине реализовано - двойное нажатие и поворот с нажатием?
|
28.12.2012, 21:29 | #360 |
Бывалый писикарщик
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
|
Можно выкинуть из скетча код не используемых функций
__________________
Opel Zafira B --- ГАЗ 21 ВОЛГА в 21 веке --- Скин OpelZafira для RideRunner --- Скин CFStyle для RideRunner Плагин RRCheckEngine --- CFStyle для iCar DS --- iCarVOBD --- iCarDuino --- iCarCoreTemp --- iCarNotes --- iCarVoiceCommander |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|