• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
UART problem z odczytem wartosci
#1
Hej, kupiłem sobie bluetooth BT-201 który posiada wyjście UART gdzie wyświetlane są nazwy piosenek i możliwość sterowania przez komendy AT.

Poniżej z noty katalogowej wykaz parametrów UARTa:
Kod:
1>.Baud rate:115200bps(User can set by command)
  2>.Data bit:8bit
  3>.Stop bit:1bit
  4>.Check Digit:None
  5>.Control flow:None
  6>.Control command format: AT+<CMD>[<param>]rn
  7>.Return data format: <IND>[<param>]rn
  8>.AT+:The start of a control command.
  9>.<CMD>:Specific control command.
  10>.[<param>]:The parameter of CMD if need.
  11>.rn:Enter and Wrap.
  12>.<IND>:The start of return data.


Ok, więc zadowolony wziąłem zakurzone UNO żeby podsłuchać co tam jest na wyjściu ale mam same krzaki, kod do odczytu poniżej:

Kod:
#include <SoftwareSerial.h>
SoftwareSerial BTserial(3, 2); // RX, TX

char c=' ';
boolean NL = true;

void setup()
{
    Serial.begin(115200);
    Serial.print("Nasluchuje:");
    Serial.println(" ");

//  Default (38400)
    BTserial.begin(115200); 

}

void loop()
{
    // Read from the Bluetooth module and send to the Arduino Serial Monitor
    if (BTserial.available())
    {
        c = BTserial.read();
        Serial.write(c);
    }


    // Read from the Serial Monitor and send to the Bluetooth module
    if (Serial.available())
    {
        c = Serial.read();
        BTserial.write(c);  

        // Echo the user input to the main window. The ">" character indicates the user entered text.
        if (NL) { Serial.print(">");  NL = false; }
        Serial.write(c);
        if (c==10) { NL = true; }
    }
}


A to przykładowy wynik z konsoli:
Kod:
⸮1kp0ppp0ps
⸮2kpppp00p3
⸮⸮kp00p00⸮⸮
⸮⸮k0pp0p0p0
MF+/LEN⸮ ` `⸮⸮s


Lena Sattelite utwór, więc coś tam mniej więcej pokazuje, ale może coś źle robię i mnie nakierujecie ?

Na komendy AT tez reaguje, bo wypluwa tez krzaczki na monitorze.
 
#2
Ustaw odpowiednią prędkość w monitorze portu, bo domyślnie jest 9600, a ty masz w programie 115200.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
#3
(25-11-2019, 22:42)Robson Kerman napisał(a): Ustaw odpowiednią prędkość w monitorze portu, bo domyślnie jest 9600, a ty masz w programie 115200.

Na to wpadłem, po ustawieniu pokazuje to co wysłałem Sad

[Obrazek: Adnotacja-2019-11-25-220534.png]
 
#4
A czemu masz tak?
char c=' ';
a tego nie rozumiem
// Echo the user input to the main window. The ">" character indicates the user entered text.
if (NL) { Serial.print(">"); NL = false; }
Serial.write©;
if (c==10) { NL = true; }
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
#5
(25-11-2019, 23:38)Jarewa0606 napisał(a): a tego nie rozumiem
        // Echo the user input to the main window. The ">" character indicates the user entered text.
        if (NL) { Serial.print(">");  NL = false; }
        Serial.write©;
        if (c==10) { NL = true; }
Kod 10 to '\n' (nowa linia). Czytelniej byłoby "c == '\n\'" niż posługiwanie się kodem znaku. Reszta jest już jasna choć trochę to przekombinowane i można zrobić dużo prościej bez użycia flagi.
 
#6
Na innych przykładach z internetu mam dokładnie ten sam efekt, więc zostawiłem ten co używam jak już jest taka potrzeba.
 
#7
Ktoś coś doda ?
 
#8
(26-11-2019, 19:27)error105 napisał(a): Ktoś coś doda ?
Pewnie to, że daj zlecenie na rozwiązanie problemu. Za kilka k zł na pewno znajdziesz chętnego.
Inna opcja, tańsza, kupienie archiwalnych numerów "Elektroniki dla wszystkich". Poczytasz i pewnie sam dasz radę.

To niestety wymaga czasu. Ja uczę sie 30 lat i nadal nie wszystko wiem.
 
#9
Zmiana prędkości UART modułu wystarczyła, uf, dobrze że zaoszczędziłem kilka tysięcy Smile
 
  


Skocz do:


Przeglądający: 1 gości