Данные из COM порта

Тема в разделе "Arduino & Shields", создана пользователем Ser8191, 1 май 2016.

  1. Ser8191

    Ser8191 Нерд

    Здравствуйте. Имею такой код. Как мне сделать, чтобы при отправке в порт, скажем, числа "13" моё условие работало и светодиод загорался.

    Код (C++):
    int val;
    int ledPin =13;
    boolean ledOn=false;
    void setup() {
        pinMode(ledPin, OUTPUT);
        Serial.begin(115200);
    }

    void loop()
    {
    if (Serial.available())
    {
    val = Serial.read();

    if (val == 110) // n = 110 in dec
    {
      ledOn=!ledOn;
    digitalWrite(ledPin, ledOn);
    }

    }
    }
     
  2. Ser8191

    Ser8191 Нерд

    Код (C++):
    if (val == 4951) //
    Отправляю в порт 13, не работает.
     
  3. Onkel

    Onkel Гуру

    функция Serial.real() дает байт, а не целое , так что при получении даст 1, при следующем 3, а не 13 сразу и не 4951
     
  4. Benny_Ray

    Benny_Ray Нерд

    Вот так должно бы работать + стоит защита от флуда в порт, но отправлять нужно не "13" а ".13". Точка используется как маркет для сброса всего что содержится в переменной message т.к. туда может попасть что угодно.

    Код (C++):
    int val;
    int ledPin = 13;
    string message;
    boolean ledOn = false;

    void setup() {
        pinMode(ledPin, OUTPUT);
        Serial.begin(9600);
    }

    void loop() {
        while (Serial.available()) {
            char inChar = Serial.read();
            message += inChar;

            if (message == ".") {
                message = "";
            }

            if (message == "13") {
                ledOn=!ledOn;
                digitalWrite(ledPin, ledOn);
                message = "";
            }
        }
    }
     
    Последнее редактирование: 4 май 2016