Płyta i terminal prawdopodobnie nie używają tej samej prędkości transmisji. Sprawdź prawy dolny róg terminala szeregowego Arduino i upewnij się, że jest ustawiony na 9600.
Dane szeregowe
Komunikacja szeregowa polega na wysyłaniu całego strumienia danych po jednym bicie. Jest to w przeciwieństwie do standardowego portu równoległego, który wysyła jeden bajt na raz. Oba urządzenia muszą wiedzieć, z jaką prędkością wysyłane są dane. Ponadto oba urządzenia muszą działać z tą samą prędkością. Nazywa się to szybkością transmisji.
Szybkość transmisji
Baud tak naprawdę oznacza tylko liczbę impulsów na sekundę. W kontekście komunikacji szeregowej oznacza to, ile bitów jest przesyłanych na sekundę. Jedną z najczęstszych wartości jest 9600, ale są też inne, które są współczynnikami lub wielokrotnościami 9600. Nie ma to jednak znaczenia, o ile oba urządzenia działają z tą samą prędkością.
Jeśli wysyłam Ci wiadomości szybciej niż je otrzymujesz, tracisz dane. Jeśli wysyłam ci wiadomości wolniej niż je otrzymujesz, masz bzdury pomieszane z tym, co ci wysłałem.
Dane, parzystość, bity stopu
Jeśli spojrzysz na dokumentację begin()
, zobaczysz, że może ona przyjąć dwa parametry:
Serial.begin(speed)
Serial.begin(speed, config)
Mamy nadzieję, że rozumiesz teraz szybkość, to są bity na sekundę, z którymi Arduino będzie się komunikować.
Drugi parametr, config
pozwala skonfigurować kilka innych rzeczy na temat szeregowej transmisji danych. Są to bity Data, Parzystość i Stop. Zobaczysz na stronie to wartości takie jak 5N1
, 6N1
iSERIAL_8N1 (the default)
Pierwsza liczba reprezentuje liczbę bitów danych. Drugi znak mówi ci, jaki jest rodzaj bitu parzystości. E
dla parzystości parzystej, O
parzystej nieparzystej lub N
bez parzystości. Trzecia liczba mówi, ile bitów stopu.
Tak naprawdę, przy 8N1 mamy 10 bitów wysyłanych na każde 8 bitów „twoich” danych. 1 bit startowy, 8 bitów danych i 1 bit stopu.
W każdym razie obie strony muszą uzgodnić te informacje, a także prędkość. Terminal szeregowy Arduino nie daje możliwości zmiany tych ustawień, ale robią to inni, więc musisz upewnić się, że wszystkie ustawienia konfiguracji są takie same.
Więcej informacji na wiki: Asynchroniczna komunikacja szeregowa