R51oQS9Pi5qsc
Zdjęcie przedstawia różnej długości kabli, część jest sztywna, zakończona odsłoniętym metalem zagiętym pod kątem prostym. 2 grupy kabli są giętkie z dodatkowymi złączkami.

I_R_W15_M02 Budujemy pierwszy układ

Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Komunikacja z komputerem

Komunikacja na linii komputer‑Arduino odbywa się z wykorzystaniem protokołu UART. Jest to praktycznie ten sam interfejs komunikacyjny co RS232 opracowany przez firmę Gordon Bell, z tą różnicą, że RS232 pracuje przy napięciach od -15 V do 15 V, a UART wykorzystuje napięcia od 0 V do 5 V. UART jest protokołem szeregowym. Działa na zasadzie wysyłania ciągu bitów, które składane są w pojedyncze ramki informacji. Ramka protokołu UART składa się z:

  • bitu startu,

  • od 5 do 8 bitów danych,

  • bitu parzystości (opcjonalnego),

  • bitu stopu o wartości 1, 1,5 lub 2 bitów.

RMHOOE1RGHZAK
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY 3.0.

Dodatkowo piny cyfrowe 0 oraz 1 na płytce Arduino Uno są oznaczone jako RX oraz TX. Dzięki tym właśnie wyprowadzeniom możemy komunikować się za pośrednictwem protokołu UART z innymi urządzeniami.

Wysyłanie informacji z płytki do komputera

Aby wysyłać informacje z płytki Arduino do komputera, musimy określić w szkicu prędkość transmisji. Służy do tego polecenie Serial.begin(prędkość).

Linia 1. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik. Linia 3. zamknij nawias klamrowy. Linia 5. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. zamknij nawias klamrowy.

Ustawiliśmy prędkość 9600 bodówbodbodów (baudów). Wystarcza ona do komunikowania się z komputerem. Pamiętajmy, aby tę samą prędkość ustawić w Monitorze portu szeregowego. Klikamy Monitor portu szeregowego w Arduino IDE.

RPCERQDRHVBMH
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY 3.0.

Następnie na dole okna ustawiamy prędkość równą 9600.

R9SH1R6853KAL
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY 3.0.

Po wgraniu szkicu i włączeniu Monitora portu szeregowego nic na ekranie się nie pojawia. Dodajmy instrukcję wyświetlającą napis Witaj świecie.

Linia 1. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik. Linia 3. Serial kropka println otwórz nawias okrągły cudzysłów Witaj świecie cudzysłów zamknij nawias okrągły średnik. Linia 4. zamknij nawias klamrowy. Linia 6. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. zamknij nawias klamrowy.
R1BJRMRPEPKE5
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY 3.0.

Pierwsza symulacja

1
Krok 1 - Przygotowanie środowiska

Przejdźmy teraz do symulatora układów Tinkercad.

Znajdź na liście moduł Arduino Uno, kliknij na niego i przenieś na środek okna.

R1SX587OVVNGA
Źródło: Materiał własny, licencja: CC BY 3.0.
Krok 2 - Kodowanie

Teraz klikamy na przycisk Kod, z listy wybieramy Tekst, potwierdzamy chęć zmiany widoku i usuwamy zawartość, a następnie przechodzimy do pisania kodu.

R7KOL4J9A9PR2
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY 3.0.
Krok 3 - Uruchamianie

Aby uruchomić Monitor portu szeregowego, należy kliknąć na belkę z napisem: Konsola szeregowa.

Sprawdźmy, czy nasza komunikacja zadziała. Uruchamiamy symulację.

R1SHF7TTRVPPZ
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY 3.0.
Ważne!

Niestety środowisko Tinkercad ma problemy z polskimi znakami. Jeśli kogoś razi to bardzo w oczy możemy w kodzie usunąć polskie znaki diakrytyczne.

Ważne!

Zmiana kodu możliwa jest tylko wtedy, gdy symulacja jest wyłączona.

W celu usunięcia informacji wyświetlanych w Konsoli, należy nacisnąć przycisk Wyczyść.

Sterowanie płytką Arduino z komputera

Teraz napiszmy program, który za pomocą komendy wydanej w Monitorze portu szeregowego włączy lub wyłączy diodę.

Aby program działał prawidłowo, zbudujmy odpowiedni układ. Jest on bardzo podobny do tego skonstruowanego wcześniej. Różni się tylko tym, że dioda jest podpięta do pinu 9. zamiast 13., tak aby pokazać, że możemy sterować każdym pinem cyfrowym.

RUCCJNNMK4JPV
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY 3.0.

W funkcji setup() ustawiamy pin numer 9 jako pin wyjściowy. Następnie inicjujemy transmisję szeregową i ustawiamy jej prędkość.

Linia 1. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. pinMode otwórz nawias okrągły 9 przecinek OUTPUT zamknij nawias okrągły średnik. Linia 3. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik. Linia 4. zamknij nawias klamrowy.

Używając instrukcji warunkowej if sprawdzamy, czy została wysłana do płytki jakaś informacja. Jeżeli tak było, odczytujemy ją za pomocą deklaracji Serial.read(); i zapisujemy w zmiennej typu char o nazwie znak.

Linia 1. char znak średnik. Linia 3. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. if otwórz nawias okrągły Serial kropka available otwórz nawias okrągły zamknij nawias okrągły zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 5. znak znak równości Serial kropka read otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 7. if otwórz nawias okrągły znak znak równości znak równości apostrof 1 apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. digitalWrite otwórz nawias okrągły 9 przecinek HIGH zamknij nawias okrągły średnik. Linia 9. zamknij nawias klamrowy else if otwórz nawias okrągły znak znak równości znak równości apostrof 2 apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. digitalWrite otwórz nawias okrągły 9 przecinek LOW zamknij nawias okrągły średnik. Linia 11. zamknij nawias klamrowy. Linia 12. zamknij nawias klamrowy. Linia 13. zamknij nawias klamrowy.

Założyliśmy, że liczba 1 będzie włączać diodę LED podpiętą do pinu 9., natomiast liczba 2 będzie tę diodę wyłączać.

Korzystamy znowu z instrukcji warunkowej if i tym razem sprawdzamy, co znajduje się w zmiennej znak. Informacja pobrana z portu szeregowego jest znakiem 1 lub 2. Jeżeli jest to znak 1, to ustawiamy stan pinu 9. na wysoki; natomiast jeżeli jest to liczba 2, ustawiamy stan pinu 9. na niski. Wgrywamy szkic do płytki Arduino i sprawdzamy czy działa prawidłowo.

Poniżej prezentujemy pełen program.

Linia 1. char znak średnik. Linia 3. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 4. pinMode otwórz nawias okrągły 9 przecinek OUTPUT zamknij nawias okrągły średnik. Linia 5. Serial kropka begin otwórz nawias okrągły 9600 zamknij nawias okrągły średnik. Linia 6. zamknij nawias klamrowy. Linia 8. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. if otwórz nawias okrągły Serial kropka available otwórz nawias okrągły zamknij nawias okrągły zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. znak znak równości Serial kropka read otwórz nawias okrągły zamknij nawias okrągły średnik. Linia 12. if otwórz nawias okrągły znak znak równości znak równości apostrof 1 apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 13. digitalWrite otwórz nawias okrągły 9 przecinek HIGH zamknij nawias okrągły średnik. Linia 14. zamknij nawias klamrowy else if otwórz nawias okrągły znak znak równości znak równości apostrof 2 apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 15. digitalWrite otwórz nawias okrągły 9 przecinek LOW zamknij nawias okrągły średnik. Linia 16. zamknij nawias klamrowy. Linia 17. zamknij nawias klamrowy. Linia 18. zamknij nawias klamrowy.

Po wgraniu szkicu otwieramy Monitor portu szeregowego i wpisujemy znak 1. Aby ta instrukcja (znak) została wysłana do Arduino, wciskamy [Enter] lub klikamy przycisk Wyślij.

Słownik

GND
GND

skrót od angielskiego słowa ground oznaczającego masę układu

UART
UART

(ang. Universal Asynchronous Receiver and Transmitter) uniwersalny asynchroniczny odbiornik i nadajnik

zmienna typu char
zmienna typu char

zmienna wielkości 1 bajta, przechowuje wartości od -128 do 127

płytka stykowa
płytka stykowa

płytka służąca do budowania prototypów układów elektronicznych bez potrzeby lutowania

bod
bod

(ang. baud) jednostka prędkości transmisji, określająca ile razy w ciągu sekundy zmienia się stan medium transmisyjnego; w przypadku łącza, w którym operuje się wyłącznie symbolami 0 i 1, prędkość transmisji wynosząca 1000 bodów oznacza przesłanie 1000 bitów w ciągu sekundy; symbolem boda (bauda) jest Bd