Serial печатается дважды?

У меня есть проблема , когда отправить 1 или 0 по модулю Bluetooth последовательный монитор печатается два раза (ПОЛУЧЕНО SMS) . в чем дело ?

Это мой код :

   char BluetoothData = 0 ; 
void setup() {
  // initialize serial communication:
  Serial.begin(9600);
    for (int pin = 1; pin <= 13; pin++)
     {
       pinMode(pin, OUTPUT); // sets the digitals pin  as outputs
       digitalWrite(pin, LOW); // sets the digitals pin off defult intial states 
     }  
       Serial.println("ALL LEDs NOW OFF \n "); 
       Serial.println("Please, Enter : ( 1 to Turn on All LEDs )  or ( 0 to Turn off LEDs ) \n");
}
void loop() {            
  // read the sensor:
  if (Serial.available() > 0) {

        BluetoothData = Serial.read();
            Serial.print("*** RECEIVED SMS *** : ==>> ");
            Serial.println(BluetoothData);

        if (BluetoothData == '1'){ 
        for (int Pin = 1; Pin <= 13; Pin++) {
          digitalWrite(Pin, HIGH);
          }  
          Serial.println("ALL LEDs NOW ON");
         }
        // turn all the LEDs off:
   else if (BluetoothData == '0') {
        for (int Pin = 1; Pin <= 13; Pin++) {
          digitalWrite(Pin, LOW);
          }
          Serial.println("ALL LEDs NOW OFF"); 
         }
  }
   delay(100);  
} 

Это фото для последовательного монитора

, 👍1

Обсуждение

Пожалуйста, не публикуйте фотографии выходных данных, а выделите текст, а затем скопируйте/вставьте текст в вопрос в виде кода с отступом, @user3629249

для удобства чтения и понимания: 1) пожалуйста, последовательно отступайте от кода. Отступ после каждой открывающей скобки" {". Неиндентировать перед каждой закрывающей скобкой '}'. Предложите, чтобы каждый уровень отступа составлял 4 пробела., @user3629249

опубликованный код не содержит функции " main ()", а не необходимых операторов "#include". Так как же нам воспроизвести проблему?, @user3629249

Я не могу понять все функции и условия сайта. Я слаб в этом, есть ли видео, которое объясняет этот вопрос?, @Khalid Abu-Khadija


2 ответа


Лучший ответ:

2

Вероятно, в первый раз, потому что вы получили символ " 1 " или "0". Второй символ, вероятно, является "\0 " или "\d", символом конца строки или конца строки.

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

Serial.println((int)(BluetoothData));

Вы, вероятно, видите ценность для '0' (48), '1' (49), конец строки "0" конца строки "13" или, может быть, " 10 " (новая строка).

,

большое спасибо , парень, верное решение :), @Khalid Abu-Khadija

пожалуйста., @Michel Keijzers


1

В IDE Arduino вы должны выбрать в меню "Без конца строки" вместо "Новая строка". В противном случае вы отправляете дополнительное "\n".

,