Проблема передачи данных с пк.

Тема в разделе "Arduino & Shields", создана пользователем ALeska811, 6 дек 2021.

  1. ALeska811

    ALeska811 Нерд

    ну я с примера смотрел, а что не так?
     
  2. issaom

    issaom Гуру

    Теме 4 года, сейчас бы я конечно обошёлся и без математических операторов. Но, я тогда никуда не торопился, поэтому приложуха на ПК работала как нужно. Никто Вам не мешает вместо ахриневания свой вариант предложить. (а то судя по вашим постам складывается ощущение что ничего другого вы и не умеете больше)
     
  3. Asper Daffy

    Asper Daffy Иксперд

    Да, оно идейно не так, а потому не скажешь "что" - всё. Сам подход неверный.
     
  4. Asper Daffy

    Asper Daffy Иксперд

    Так и есть :-(
     
  5. ALeska811

    ALeska811 Нерд

    Так почему у меня может неправильно работать?
     
  6. issaom

    issaom Гуру

    Вот пример кода просто для RGB светодиода:
    Код (C++):
    uint8_t r = 0;
    uint8_t g = 0;
    uint8_t b = 0;
    char incoming[2];


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

    void loop() {

      if (Serial.readBytes(incoming, 6) == 6) {
        for (uint8_t i = 0; i < 6; i++) {
          if (incoming[i] < ':') incoming[i] = incoming[i] & B00001111;
          else incoming[i] = 9 + incoming[i] & B00001111;
        }
        r = incoming[0] << 4;
        r = r | incoming[1];
        g = incoming[2] << 4;
        g = r | incoming[3];
        b = incoming[4] << 4;
        b = r | incoming[5];
        Serial.println(r, DEC);
        Serial.println(g, DEC);
        Serial.println(b, DEC);
      }
    }
    В консоль бахаете 3 числа в 16 ом формате
    Например если нужно передать (R 255,G 255,B 255) отправляете FFFFFF, соответственно если нужно будет отправить 9,9,9 отправляете 090909, 10,10,10 - 0A,0A.0A и.т.д толком не тестировал - но вроде должно работать.... Никаких пробелов, точек запятых и парсингов не нужно. Обязательно почитать как работает оператор Serial.readBytes().
    Неправильно может работать потомучто 155200 это не моментально, скорее всего приложение написано таким образом, что она заваливает Arduino информацией и та не успевает её обрабатывать. (да еще с таким мегапарсингом как у Вас) Буквы 16-тиричной системы только в верхнем регистре. Нижнюю часть тоже можно свернуть в цикл - но это уже сами сами.
     
    Последнее редактирование: 7 дек 2021
  7. Asper Daffy

    Asper Daffy Иксперд

    Я вам ещё несколько дней назад написал:
    Вы думали, что я пошутил? Не работает у Вас именно из-за этого.
     
  8. ALeska811

    ALeska811 Нерд

    Можете пожалуйста скинуть код, как сделать?
     
  9. parovoZZ

    parovoZZ Гуру

    Коды команд в виде чисел размерностью один байт.