Страница 3 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 21 по 30 из 59

Тема: Arduino и I-BUS

  1. #21
    Пользователь
    Регистрация
    16.07.2009
    Сообщений
    27
    Вес репутации
    186

    По умолчанию Re: Carduino и I-BUS

    Скорость не может быть отличной от 9600 т.к. шина работает именно с этой скоростью.

  2. #22
    Модератор Аватар для XsanderS
    Регистрация
    05.05.2008
    Возраст
    41
    Сообщений
    829
    Вес репутации
    389

    По умолчанию Re: Carduino и I-BUS

    Цитата Сообщение от neyro Посмотреть сообщение
    Скорость не может быть отличной от 9600 т.к. шина работает именно с этой скоростью.
    Скорость настройки IBUS порта должна быть 9600 а настройки скорости для передачи данных в комп можно и 115200
    хороший модем должен качать пиво!
    Мой проект

  3. #23
    Пользователь
    Регистрация
    21.10.2009
    Возраст
    38
    Сообщений
    44
    Вес репутации
    186

    По умолчанию Re: Carduino и I-BUS

    Цитата Сообщение от XsanderS Посмотреть сообщение
    efimomax использовал адаптер на транзисторах и для его целей было не важно что приходит главное стабильно и это он не однократно писал в своих сообщениях. здесь ситуация другая. Вы бы хоть один ткнули бы пальчиком или выложили прошивку через которую пытаетесь получить данные. Ребят так не возможно помочь.

    И еще один момент, я уверен что все слушают приходящие данные с Arduino с помощью IBUSAnaluser при этом никто не говорит какие настройки по скорости передачи данных выставляют в прошивке.
    XsanderS, я собственно хотел использовать твою прошивку для Nano, по этому у тебя про адапрер и спросил, т.к. в прогу Chip'а никакие данные не приходят. Ещё нля тестов пробовал код из первого поста, вот он данные читает, но не те.

    И ещё вопросик. Подскажи, пожалуйста, что делает этот кусок кода?
    В прошивке для Меги там понятно, а тут вроде после условия нет никакого действия, или я чего не правильно понял?

    PHP код:
          {
            if( 
    IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x11 ); // Нажал +
            
    else if( IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x10 ) ; // Нажал -
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x01 || IBUSbyte[4] == 0x11 ) ) ; // Нажата next
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x21 ) ; // Отпустил next
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x08 || IBUSbyte[4] == 0x18 ) ) ; // Нажата previous
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x28 ) ; // Отпустил previous
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x80 || IBUSbyte[4] == 0x90 ) ) ; // Нажата dial
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0xA0 ) ; // Отпустил dial
            
    else if( IBUSbyte[2] == 0xC8 && IBUSbyte[3] == 0x01 ) ; // Нажата R/T
          


  4. #24
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Carduino и I-BUS

    К сожалению у меня нет автомобиля БМВ и проверить нет возможности

  5. #25
    Пользователь
    Регистрация
    21.10.2009
    Возраст
    38
    Сообщений
    44
    Вес репутации
    186

    По умолчанию Re: Carduino и I-BUS

    Цитата Сообщение от Chip Посмотреть сообщение
    К сожалению у меня нет автомобиля БМВ и проверить нет возможности
    Это понятно. Ваша программа (IR Key) работает так как нужно. Её удалось успешно подружить с кодом из первого поста. Но вот данные в этом случае передаются совершенно искаженные. И если коды кнопок с руля можно соснифить, то о более широком функционале можно забыть, а команды с кнопок руля это только процентов 20 от того, что хочется реализовать. Вот прошивка XsanderS'a (с его адаптером) судя по всему принимает сигнал в таком виде, в котором он передается.

  6. #26
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Carduino и I-BUS

    В программе не учитывал последовательность и порядок выталкивания битов, при желании в коде для Arduino можно это исправить.

  7. #27
    Пользователь
    Регистрация
    21.10.2009
    Возраст
    38
    Сообщений
    44
    Вес репутации
    186

    По умолчанию Re: Carduino и I-BUS

    Цитата Сообщение от Chip Посмотреть сообщение
    В программе не учитывал последовательность и порядок выталкивания битов, при желании в коде для Arduino можно это исправить.
    Подскажите, пожалуйста, как из ардуино в вашу программу можно передать массив byte data[6] = {0x50, 0x04, 0x68, 0x32, 0x11, 0x1F} чтобы ваша программа восприняла его как команду "50046832111F" и выдала соответствующее сочетание клавиш, или так сделать невозможно в принципе?

    Я сейчас использую один байт для передачи в комп, всю обработку делаю на ардуино. Но неплохо бы разгрузить его маленько и передавать в комп всю команду, а там уже разбираться что с ней делать.

  8. #28
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: Carduino и I-BUS

    вот кусок кода из программы
    PHP код:
                 res_data:=FT_In_Buffer[5];
                  
    res_data:=(res_data shl 8) or FT_In_Buffer[4];
                   
    res_data:=(res_data shl 8) or FT_In_Buffer[3];
                   
    res_data:=(res_data shl 8) or FT_In_Buffer[2];
                    
    res_data:=(res_data shl 8) or FT_In_Buffer[1];
                    
    res_data:=(res_data shl 8) or FT_In_Buffer[0]; 
    Получается тот байт который пришел последним будет старшим байтом
    Последний раз редактировалось Chip; 19.01.2010 в 02:11.

  9. #29
    Модератор Аватар для XsanderS
    Регистрация
    05.05.2008
    Возраст
    41
    Сообщений
    829
    Вес репутации
    389

    По умолчанию Re: Carduino и I-BUS

    Цитата Сообщение от delach Посмотреть сообщение
    XsanderS, я собственно хотел использовать твою прошивку для Nano, по этому у тебя про адапрер и спросил, т.к. в прогу Chip'а никакие данные не приходят. Ещё нля тестов пробовал код из первого поста, вот он данные читает, но не те.

    И ещё вопросик. Подскажи, пожалуйста, что делает этот кусок кода?
    В прошивке для Меги там понятно, а тут вроде после условия нет никакого действия, или я чего не правильно понял?

    PHP код:
          {
            if( 
    IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x11 ); // Нажал +
            
    else if( IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x10 ) ; // Нажал -
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x01 || IBUSbyte[4] == 0x11 ) ) ; // Нажата next
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x21 ) ; // Отпустил next
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x08 || IBUSbyte[4] == 0x18 ) ) ; // Нажата previous
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x28 ) ; // Отпустил previous
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x80 || IBUSbyte[4] == 0x90 ) ) ; // Нажата dial
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0xA0 ) ; // Отпустил dial
            
    else if( IBUSbyte[2] == 0xC8 && IBUSbyte[3] == 0x01 ) ; // Нажата R/T
          

    Ты наверно имел ввиду этот кусок

    PHP код:
    {
            if( 
    IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x11 digitalWrite(8HIGH); // Нажал +
            
    else if( IBUSbyte[3] == 0x32 && IBUSbyte[4] == 0x10 digitalWrite(9HIGH); // Нажал -
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x01 || IBUSbyte[4] == 0x11 ) ) digitalWrite(10HIGH); // Нажата next
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x21 digitalWrite(10LOW); // Отпустил next
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x08 || IBUSbyte[4] == 0x18 ) ) digitalWrite(11HIGH); // Нажата previous
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0x28 digitalWrite(11LOW); // Отпустил previous
            
    else if( IBUSbyte[3] == 0x3B && ( IBUSbyte[4] == 0x80 || IBUSbyte[4] == 0x90 ) ) digitalWrite(12HIGH); // Нажата dial
            
    else if( IBUSbyte[3] == 0x3B && IBUSbyte[4] == 0xA0 digitalWrite(12LOW); // Отпустил dial
          

    1. Если тебе не надо по нажатию кнопок дергать пинами Arduino то этот кусок тебе не нужен. ниже кода для Мега описано как он работает и специально написал что код довольно специфичен, под пой проект заточенный. Так как мало кто использует версию Мега я упростил и подправил код для более компактных моделей Carduino, например Nano, Demilanova, Dcimila. этот упрощенный код ничего не делает кроме как выхватывает нажатия кнопок с шины и шлет эти данные в комп. Этот код в таком виде как он есть подойдет только для того чтобы подключить кнопки руля к компу, так как кроме информации о нажатии кнопок в комп ничего не просочиться.

    Подскажите, пожалуйста, как из ардуино в вашу программу можно передать массив byte data[6] = {0x50, 0x04, 0x68, 0x32, 0x11, 0x1F} чтобы ваша программа восприняла его как команду "50046832111F" и выдала соответствующее сочетание клавиш, или так сделать невозможно в принципе?
    Настройка порта IBUS 9600
    Настройка скорости передачи в комп 115200

    программа назначит на эти команда свой код.

    запускаешь программу, разворачиваешь ее, нажимаешь кнопку/шлеш в ком порт 50046832111F программа показывает код нажатия хххххххххх, затем этот код вписываешь в таком формате <хххххххххх>Key1=49 /> в файл config. Только в ручную, утилита для назначения комбинаций кнопок видит только первые 4 байта и на все пакеты в которых до 4го байта ничего не не меняется будет назначать один код нажатия.

    Я сейчас использую один байт для передачи в комп, всю обработку делаю на ардуино. Но неплохо бы разгрузить его маленько и передавать в комп всю команду, а там уже разбираться что с ней делать.
    Напиши все функции которые выполняет Carduino в твоем проекте. если в истории с IBUS Carduino служит только для передачи данных с шины в комп то зачем лишние нагрузки на Carduino лучше
    настроить отдельно связь с шиной.

    ЗЫ: Пишите что именно хотите реализовать (полностью) У меня сейчас проблемки, надо навести порядок в делах. Не могу сосредоточеться на форуме, но до конца этого месяца думаю разобраться и тогда помогу и если надо будет у себя протестирую.
    Последний раз редактировалось XsanderS; 20.01.2010 в 17:11.
    хороший модем должен качать пиво!
    Мой проект

  10. #30
    Пользователь
    Регистрация
    21.10.2009
    Возраст
    38
    Сообщений
    44
    Вес репутации
    186

    По умолчанию Re: Carduino и I-BUS

    Цитата Сообщение от Chip Посмотреть сообщение
    Получается тот байт который пришел последним будет старшим байтом
    Chip, спасибо! Теперь всё ясно.
    Просто я пытался сделать сначала как писал XsanderS:
    Цитата Сообщение от XsanderS Посмотреть сообщение
    файл Config нужно править руками но это не составит труда. выглядит он внутри примерно так:
    <50046832111F>Key1=49 />
    <50046832101E>Key1=50 />
    Прописал в конфиге именно <50046832111F>Key1=49 />. Но так работать не будет, если посылать в программу "50046832111F", то в кофиге нужно прописывать преобразованное в Dec число. Заминка вышла именно тут, думал что-то не так делаю.
    Цитата Сообщение от XsanderS Посмотреть сообщение
    Этот код в таком виде как он есть подойдет только для того чтобы подключить кнопки руля к компу...
    XsanderS, большое спасибо за развернутый ответ! Но обо всех этих тонкости можно начать думать когда данные из шины получится считать в ардуино. У меня (и ещё как минимум 2х людей на этом форуме) данные считываются в виде каши, из всего пакета, необъяснимым образом совпадает только первый байт. Я в первом своём сообщении спрашивал именно о схеме подключения. Пожаааалуйста поделись схемой

    Цитата Сообщение от XsanderS Посмотреть сообщение
    Напиши все функции которые выполняет Carduino в твоем проекте.
    Идей море, и передача нажатий кнопок в комп, это лишь малая часть проекта. Остальное крайне сложно реализовать, т.к. данные приходят криво.
    Последний раз редактировалось delach; 20.01.2010 в 23:50.

Страница 3 из 6 ПерваяПервая 123456 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

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

Ваши права

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