Передача данных между ардуино

Тема в разделе "Arduino & Shields", создана пользователем TiMoN816, 14 июн 2021.

  1. TiMoN816

    TiMoN816 Нерд

    Мега выводить ничего не будет. Когда подключал Нано вместо Меги, так и не смог разобраться почему на скорости 250кБод она не может адекватно принимать данные с первой Нано, а у Меги с этим проблем нет. Возможно с нано аппаратная проблема, но к сожалению другой нет, чтобы проверить.
     
  2. Feofan

    Feofan Нерд

    Как информация будет попадать из Меги в ГУ?
     
  3. parovoZZ

    parovoZZ Гуру

    Может взять микроконтроллер побыстрее, а не городить горбатого?
     
  4. TiMoN816

    TiMoN816 Нерд

    В качестве ГУ будет планшет, и через порт otg будет принимать команды, за остальные действия на андроид будет отвечать Tweaker.
     
  5. TiMoN816

    TiMoN816 Нерд

    Тогда нужно адаптировать весь код, а для меня это сейчас недоступно...
     
  6. b707

    b707 Гуру

    вот эти две фразы противоречат друг другу:
    Планшет не сможет ничего "получить по OTG". если мега не будет выводить.

    Сорри. мы вроде больше не ругаемся... но все же скажу - эта ветка такая длинная потому, что вы сами слабо представляете. как работает ваше железо и других постоянно путаете....
     
  7. TiMoN816

    TiMoN816 Нерд

    Да... Извиняюсь, совсем не подумал.... В принципе там будут только цифры от 1 и примерно до 20.
     
    Последнее редактирование: 17 июн 2021
  8. parovoZZ

    parovoZZ Гуру

    Нет никакого порта otg. OTG - это технология, которая реализуется на порту USB.
     
  9. TiMoN816

    TiMoN816 Нерд

    Код (C++):
    String inputString = "";
    boolean stringComplete = false;

    void setup() {
    Serial.begin(250000);
    String inputString = "";
    }

    void loop() {
    while (Serial.available()) {
      char inChar = (char)Serial.read();
      stringComplete = true;
      inputString += inChar;
      delay(1);
    }
    if (stringComplete==true){
      Serial.println(inputString);
    if(inputString == "< b 240 1FF 0B4331F10134FFFFFFFF0080\r\n"){
      Serial.println("OK");
    }
      inputString="";
    }
      stringComplete = false;
    }
    Вот и снова я, глуповатый, но упертый) В общем написал вот такой код. Как и хотел, строки перехватывает, сравнивает и если они идентичны отвечает "OK". Но вот теперь новая загвоздка. Как все знают(хотя, может и ни на всех авто так), перед включением зажигания есть еще одно положение ключа. У меня в этом положение уже начинает работать AVC-Lan шина и идет поток данных между блоками авто. При таком положении с шины приходит меньше строк и интервал между ними больше, и в это время мой код работает как часы))) Но вот когда включаю зажигание, поток данных увеличивается и интервал между ними уменьшается, то мой код просто не успевает это все обрабатывать....((( В коде есть delay(1), без этого данные не успевают собраться в одну строку и все символы выводятся отдельными строками. Возможно это и тормозит обработку, но если не применять delay, то тоже беда... Подскажите пожалуйста, как оптимизировать или исправить код.
     
    Последнее редактирование: 19 июн 2021
  10. TiMoN816

    TiMoN816 Нерд

    При замене строки ничего не изменилось.
     
  11. b707

    b707 Гуру

    убрать delay(1), а строчку обрабатывать только тогда, когда принят конец строки
     
  12. TiMoN816

    TiMoN816 Нерд

    Вчера разобрался, все сделал, работает так, как и хотел)))