Символы не отображаются должным образом на последовательном мониторе в Arduino

Может ли кто-нибудь сказать мне, почему символы не печатаются должным образом на последовательном мониторе Arduino? Я вставляю код arduino.

#include <SoftwareSerial.h>

 #include <LiquidCrystal.h>

    // initialize the library with the numbers of the interface pins

      LiquidCrystal lcd(12,11,5,4,3,2);

     int bluetoothTx = 15;
      int bluetoothRx = 14;

        SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

         int incomingByte;

         void setup() {
         pinMode(53, OUTPUT);
         Serial.begin(9600);
           lcd.begin(16, 2);
           lcd.clear();
           bluetooth.begin(115200);        // The Bluetooth Mate defaults to 115200bps
            delay(320);                     // IMPORTANT DELAY! (Minimum ~276ms)
             bluetooth.print("$$$");         // Enter command mode
             delay(15);                      // IMPORTANT DELAY! (Minimum ~10ms)
                bluetooth.println("U,9600,N");  // Temporarily Change the baudrate to    9600, no parity
                bluetooth.begin(9600);          // Start bluetooth serial at 9600

                lcd.print("done setup");

               }

                void loop()

                  {
                    lcd.clear();
                     Serial.print("in loop");
                   //Read from bluetooth and write to usb serial
                    if(bluetooth.available()) {
                    Serial.print("BT here");
                    char toSend = (char)bluetooth.read();
                     Serial.print(toSend);
                        lcd.print(toSend);
                       delay(3000);  
                   }delay(3000); 
         }

Может ли кто-нибудь взглянуть на это. Он не печатает символ, который я предоставляю, вместо этого он печатает что-то еще, например «y» с двумя точками наверху и т. Д. Пробовал почти все доступные решения.


person user3020345    schedule 21.04.2014    source источник


Ответы (3)


Ваши проблемы могут быть одним из двух. Первым и самым простым для проверки является ОБЩЕЕ ЗАЗЕМЛЕНИЕ. Вы подключили только контакты RX и TX или также контакт GND (земля)? Убедитесь, что заземление BT-сопряжения подключено к заземлению Arduino.

Если вы это сделали, то ваша проблема связана со скоростью передачи данных. Я почти уверен, что SoftwareSerial не может читать со скоростью выше 57600 бод. Документы Arduino.cc говорят, что он может читать со скоростью 115200, но в других местах говорят, что он будет писать только до 115200.

Чтобы проверить это, вам нужно будет либо изменить настройки для этого на Bluetooth Mate, либо использовать Mega или Leonardo, у которых будет аппаратный последовательный порт (отличный от того, который используется для USB), который вы сможете настроить для 115200.

Если вы попробуете использовать аппаратный последовательный порт либо на Mega, либо просто с помощью FTDI или чего-то еще, и сообщения по-прежнему выглядят искаженными, возможно, Bluetooth-помощник на самом деле не настроен для разговора по 115200, как он утверждает. Попытка прочитать документацию или протестировать с другими скоростями передачи.

person calumb    schedule 22.04.2014

Проверьте, присутствует ли ошибка по одной из следующих причин: -

1) Вы не дали никакой команды для выхода из режима данных. После установки скорости передачи на 9600 вы сразу переключаетесь на петлю. Вы не подали команду на выход из командного режима.

2) У меня тоже была такая же проблема, когда я использовал модуль Wi-Fi RN171. Причина проблемы в моем случае заключалась в том, что я отправлял данные на модуль Wi-Fi в формате целочисленный вместо uint_8. При последовательном чтении с модуля Wi-Fi с помощью arduino mega я читал его в формате символов.

Вы должны помнить, что int на самом деле является 16-битным целым числом со знаком. Поэтому при отправке данных в модуль Bluetooth вы должны отправлять их как значения uint_8 или ASCII символов, которые вы хотите отправить. Вы также должны прочитать его в том же формате, в котором вы его отправили.

3) Если это не ошибка, то, как сказал calumb, может быть ошибка при установке модуля bluetooth в командный режим. Вы не проверили ответ от модуля bluetooth, действительно ли он находится в командном режиме или нет. Вы должны прочитать ответ CMD от модуля bluetooth и в конце каждой команды ответ ack, чтобы подтвердить, что он действительно сделал то, что вы хотите.

person Damon    schedule 09.05.2014

Это может быть связано с одновременным анализом данных Bluetooth. это может произойти при одновременной отправке двух разных данных. попробуйте контролировать поток данных.

person Dilakshan Sooriyanathan    schedule 19.04.2017