PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка программ > Программы управления > iCarDS

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2012, 12:15   #351
folv
Старший Пользователь
 
Аватар для folv
 
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
folv is a jewel in the roughfolv is a jewel in the roughfolv is a jewel in the rough
По умолчанию

Цитата:
Сообщение от Bersenev Посмотреть сообщение
По предыдущему скриншоту увидел.



Так и должно быть. Теперь сделай следующее. Запусти терминал, нажимай на энкодер секунд 5, делай скриншот. Потом перезапускай или сбрасывай терминал и вращай энкодер в одну сторону секунд 5, делай скриншот, а потом тоже самое в другую сторону. И выкладывай скриншоты
понажимал по 5 сек., вот что получилось
Миниатюры
Нажмите на изображение для увеличения
Название: нажатие кнопки.jpg
Просмотров: 741
Размер:	81.8 Кб
ID:	29115   Нажмите на изображение для увеличения
Название: вращение в лево.jpg
Просмотров: 731
Размер:	74.5 Кб
ID:	29116   Нажмите на изображение для увеличения
Название: вращение в право.jpg
Просмотров: 729
Размер:	72.5 Кб
ID:	29117  
folv вне форума   Ответить с цитированием
Старый 27.12.2012, 14:25   #352
admin
Administrator
 
Аватар для admin
 
Регистрация: 15.06.2005
Город: Москва
Регион: 77, 97, 99, 177
Машина: Lexus RX400h
Сообщений: 831
admin is a glorious beacon of lightadmin is a glorious beacon of lightadmin is a glorious beacon of lightadmin is a glorious beacon of lightadmin is a glorious beacon of lightadmin is a glorious beacon of light
По умолчанию

580, 320, 510 тоже самое что и было
__________________
Все для arduino.
admin вне форума   Ответить с цитированием
Старый 27.12.2012, 15:48   #353
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от folv Посмотреть сообщение
понажимал по 5 сек., вот что получилось
Теперь вроде видно порядок смены значений, вечерком повнимательнее проанализирую и и скажу какие значения и где изменить

Цитата:
Сообщение от admin Посмотреть сообщение
580, 320, 510 тоже самое что и было
Так никто не сомневался, но кроме самих значений важен ещё и порядок их смены.
Bersenev вне форума   Ответить с цитированием
Старый 27.12.2012, 21:31   #354
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

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-й пин.
Bersenev вне форума   Ответить с цитированием
Старый 28.12.2012, 06:45   #355
folv
Старший Пользователь
 
Аватар для folv
 
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
folv is a jewel in the roughfolv is a jewel in the roughfolv is a jewel in the rough
По умолчанию

Цитата:
Сообщение от Bersenev Посмотреть сообщение
2 folv

Попробуй такую процедуру для энкодера

Если заработает, то сделай то же самое для второго энкодера

И ещё в адуино V.7 лучше вешать на аналоговый пин №7 резестивные кнопки. А энкодеры на 5 и 6-й пин.
Все заработало, большое спасибо!
в адуино V.7 сразу переписал
PHP код:
int ENCODER1_PIN ;  // аналоговый вход(пин) для первого энкодера
int ENCODER2_PIN ;  // аналоговый вход(пин) для второго энкодера 
int RES_PIN ;       // аналоговый вход(пин) для резестивных(рулевых) кнопок 

Последний раз редактировалось Bersenev; 28.12.2012 в 10:51.
folv вне форума   Ответить с цитированием
Старый 28.12.2012, 13:14   #356
folv
Старший Пользователь
 
Аватар для folv
 
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
folv is a jewel in the roughfolv is a jewel in the roughfolv is a jewel in the rough
По умолчанию

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. Длина проводов до енкодора кретична или нет?
folv вне форума   Ответить с цитированием
Старый 28.12.2012, 13:48   #357
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от folv Посмотреть сообщение
А для вращения в влево и право - не допонял эти значения

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). Разумеется всё в шестнадцатеричной системе

Цитата:
Сообщение от folv Посмотреть сообщение
2. Длина проводов до енкодора кретична или нет?
При тестах были метровые провода, всё работало без сбоев
Bersenev вне форума   Ответить с цитированием
Старый 28.12.2012, 19:15   #358
folv
Старший Пользователь
 
Аватар для folv
 
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
folv is a jewel in the roughfolv is a jewel in the roughfolv is a jewel in the rough
По умолчанию

Данный скетч из шапки на ардуино Nano V.4 не помещается - большой размер
Миниатюры
Нажмите на изображение для увеличения
Название: 555.png
Просмотров: 757
Размер:	32.0 Кб
ID:	29123  
folv вне форума   Ответить с цитированием
Старый 28.12.2012, 19:37   #359
folv
Старший Пользователь
 
Аватар для folv
 
Регистрация: 08.11.2005
Возраст: 52
Город: Пыть-Ях
Регион: 86
Машина: Toyota RAV4 2008
Сообщений: 342
folv is a jewel in the roughfolv is a jewel in the roughfolv is a jewel in the rough
По умолчанию

А в этом плагине реализовано - двойное нажатие и поворот с нажатием?
folv вне форума   Ответить с цитированием
Старый 28.12.2012, 21:29   #360
Bersenev
Бывалый писикарщик
 
Аватар для Bersenev
 
Регистрация: 23.04.2009
Возраст: 53
Город: Ставрополь
Регион: 26
Машина: Opel Zafira 2007
Сообщений: 5,275
Bersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant futureBersenev has a brilliant future
По умолчанию

Цитата:
Сообщение от folv Посмотреть сообщение
Данный скетч из шапки на ардуино Nano V.4 не помещается - большой размер
Можно выкинуть из скетча код не используемых функций
Bersenev вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 01:32.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot