Страница 5 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 41 по 50 из 59

Тема: Arduino и I-BUS

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

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

    Я уже писал чего хочу добиться и код высылал.

    #include <NewSoftSerial.h>

    NewSoftSerial ibus(7, 8);
    byte tmp;

    void setup() {
    Serial.begin(9600);
    ibus.begin(9600);
    }

    void loop()
    {
    if (ibus.available() > 0) {
    tmp = ibus.read();
    Serial.print(tmp, HEX);
    }
    }

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

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

    Цитата Сообщение от neyro Посмотреть сообщение
    Я уже писал чего хочу добиться и код высылал.

    #include <NewSoftSerial.h>

    NewSoftSerial ibus(7, 8);
    byte tmp;

    void setup() {
    Serial.begin(9600);
    ibus.begin(9600);
    }

    void loop()
    {
    if (ibus.available() > 0) {
    tmp = ibus.read();
    Serial.print(tmp, HEX);
    }
    }
    Попробуй вот так

    PHP код:
    #include <NewSoftSerial.h>

    NewSoftSerial ibus(78);
    byte tmp;

    void setup() {
    Serial.begin(9600);
    ibus.begin(9600);
    }

    void loop()
    {
    if (
    ibus.available() > 0) {
    tmp ibus.read();
    Serial.write(tmp);
    }

    У меня работает. Попробуй в машине, я тестировал на столе симулируя посылки еще одним Arduino.
    хороший модем должен качать пиво!
    Мой проект

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

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

    Ошибка твоя в том что Serial.print(tmp, HEX) отправляет в кодировке ASCII, а не в бинарном формате.

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

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

    Цитата Сообщение от Chip Посмотреть сообщение
    Ошибка твоя в том что Serial.print(tmp, HEX) отправляет в кодировке ASCII, а не в бинарном формате.
    На сколько я понимаю, neyro просто хотел с помощью этого кода посмотреть через терминал, что именно получает ардуино из шины.
    Вот такой код наглядно выводит в ком порт строку "1F32AA6FF1E".
    Но тут используется статический массив, а если командой ibus.read() считать в массив data[] данные из шины, а потом послать эти данные на ком порт, то на экране терминала видишь полную ерунду.

    PHP код:
    byte data[6] = {0x1F0x320xAA0x060xFF0x1E};

    void setup() {
      
    Serial.begin(9600);
    }

    void loop() {
      for (
    int i=0<= 6i++){   
        
    Serial.print(data[i], HEX);
      }
      
    Serial.println();
      
    delay (1000);


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

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

    Цитата Сообщение от delach Посмотреть сообщение
    На сколько я понимаю, neyro просто хотел с помощью этого кода посмотреть через терминал, что именно получает ардуино из шины.
    Совершенно верно, данные в аски видно в терминале и другая прога на другом порту паралельно через адаптер rolf resler'a получает эти же данные, соответственно при сравнении ардуино выдает правильные первые 1-2-3-4 байта сообщения, а потом ерунду....и так в каждом сообщении. Сегодня времени опять потестить не было...займусь завтра, выложу сюда лог для сравнения...вдруг кто-нибдуь поймет в чем дело может быть.
    Последний раз редактировалось neyro; 22.01.2010 в 23:01.

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

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

    XsanderS, спасибо за готовность помочь страждущим
    Цитата Сообщение от XsanderS Посмотреть сообщение
    У меня работает. Попробуй в машине, я тестировал на столе симулируя посылки еще одним Arduino.
    Есть подозрение, что под "работает" мы Все понимаем разные вещи... т.е. тот метод, который ты описал в посте №29 работает несомненно!
    Цитата Сообщение от XsanderS Посмотреть сообщение
    запускаешь программу, разворачиваешь ее, нажимаешь кнопку/шлеш в ком порт 50046832111F программа показывает код нажатия хххххххххх, затем этот код вписываешь в таком формате <хххххххххх>Key1=49 /> в файл config.
    НО Программа Chip'a не была написана для решения этой задачи, и в силу своей специфики считывает данные "наоборот", потом преобразовывает HEX в DEC и уже это мы видим на экране. В этом случае не важно, посылаем мы 50046832111F или например FFFFFFFF, важно чтобы ардуино СТАБИЛЬНО считывал и пересылал код посылаемый кнопками руля, даже не смотря на то, что этот код может быть кривым.

    Мне (и как я понял neyro) не нужно посылать полученные команды в прогу Чипа, хочется добиться именно того, чтобы ардуино считал код правильно! И всё, дальше уже можно делать с ним всё что хочешь.

    XsanderS, если сможешь найти врямя, не мог бы ты проверить на машине (не на симуляторе) как работает код от neyro?
    А конкретно, хочется узнать, при нажатии на "+" на руле ты увидишь 50046832111F или что-то другое?

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

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

    Все никак не могу добраться до машины, чтобы проверить. Но в данный момент я на 99% уверен, что дело в таймерах newsoftserial (не правильно подобраны) - нужно выяснить у автора как подбираются таймеры.(почему таймеры ? - на форумах newsoftserial у неокторых есть похожие проблемы с приемниками GPS).

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

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

    да, действительно проблема в newsoftserial. сегодня попробовал с Arduino Mega.

    PHP код:
    byte tmp;

    void setup() 
    {
    Serial.begin(9600);
    Serial1.begin(9600);
    }

    void loop()
    {
    if (
    Serial1.available() > 0) {
    tmp Serial1.read();
    Serial.write(tmp);
    }

    Результат: приходят корректные данные. Тут же попробовал с другим Arduino с использованием софтового порта

    PHP код:
    #include <NewSoftSerial.h>

    NewSoftSerial ibus(78);
    byte tmp;

    void setup() {
    Serial.begin(9600);
    ibus.begin(9600);
    }

    void loop()
    {
    if (
    ibus.available() > 0) {
    tmp ibus.read();
    Serial.write(tmp);
    }

    Результат: первые 2-3 байта и каша. Посмотрев на это дело в trminal поигравшись с настройками стоп байтов и числом приходящих байтов увидел более менее похожие на правду данные.
    хороший модем должен качать пиво!
    Мой проект

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

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

    Спасибо, теперь стало понятнее. Буду использовать обычный Serial.
    Последний раз редактировалось delach; 31.01.2010 в 11:13.

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

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

    Итак, был приобретен Arduino Mega, на вскидку (10 минут тестов, в гараже холодно... ) считывание теперь происходит практически идеально, а вот как отправить данные в шину не понятно....у кого-нибудь есть рабочий код отправки даных в шину ? Если просто отправлять к примеру так:
    byte data[6] = {0x1F, 0x32, 0xAA, 0x06, 0xFF, 0x1E};

    void setup() {
    Serial1.begin(9600);
    }

    void loop() {
    for (int i=0; i <= 6; i++){
    Serial1.print(data[i]);
    }
    то данные или не уходят или похоже уходят в каком то кривом формате...
    Для связи с шиной используется схема на оптопарах + чип MAX.
    Последний раз редактировалось Chip; 08.03.2017 в 02:51.

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

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

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

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

Ваши права

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