Na naszych trzecich zajęciach powiedzieliśmy sobie o:
- dalej o tablicach, bo są ważne!
- programowanie strukturalne – tworzenie (niemych) funkcji, u nas void błysk(int czas) – jako podstawowych cegiełek, których będziemy często używać
- poznajemy inne typy danych (czy wiesz, jakie wartości można w nich przechowywać?):
- bajt (o rozmiarze 1 bajt – no bo niby jak inaczej!),
- char (czyli znak, też 1 bajt) – przy tej okazji poznajemy ciapki (znaczki pojedynczego apostrofa \’ \’)
- bool (prawda/fałsz, true/false) – 1 bajt
- modyfikator unsigned
- modyfikator long
- stringi jak tablice znaków, poznajemy też psie uszy – czyli znaki amerykańskiego cytowania \” \”
- float – do przechowywania liczb rzeczywistych, np. float pi=3.141592; (4 bajty)
- o komunikacji szeregowej z zamierzchłych czasów PeCetowych – RS232
- emulator portu RS232 w dzisiejszych kompach – wykorzystujemy port USB (w tym kilka zgryźliwych opinii o oprogramowaniu tego emulatora pod Windowsem – niestety, działa on słabiej niż analogiczne oprogramowanie pod Linuxa)
- Serial.begin(9600) – rozpoczynamy transmisję szeregową z nasztm PCetem, ale „tracimy” piny #0 (nazwany RX – odbiór danych) i #1 (nazwany TX – transmisja danych) na naszej płytce Arduino (są one zajęte rozmową z PCetem). Dla bardziej dociekliwych dodam, że aby „odzyskać” te piny musimy zakończyć transmisję szeregową poleceniem Serial.end() – informacja dla zaawansowanych
- Serial.print(„cokolwiek„) – mówimy do PCeta, aby to usłyszeć, musimy otworzyć Monitor portu szeregowego w Arduino IDE. Trzeba pamiętać o konfiguracji Monitora tak samo, jak to zrobiliśmy od strony Arduino
- Serial.println(„inny napis„) – napis zakończony przejściem do nowej linii
- Serial.available() – sprawdzamy, czy są jakieś dane do odebrania przez Arduino
- Serial.read() – czytamy jeden bajt. Przy tej okazji ćwiczyliśmy różnicę pomiędzy:
byte znak=Serial.read() // oraz char znak=Serial.read().
Pamiętasz, o co chodziło? Co się wyświetlało w obu przypadkach po wpisaniu jednej literki, np. A? czy przypominasz sobie moją dygresję o znakach ASCII oraz o kodowaniu klawiatury?
- wczytujemy napis (czyli ciąg znaków, np. wyraz pomidor) z Seriala – no i cóż? literka po literce?? Jak więc wczytać liczbę, powiedzmy 107?
- Serial.parseInt() jako funkcja czytająca dane nadchodzące do Seriala i zamieniające je na liczbę całkowitą (integer) – czyli wczytując liczbę „107” nie mamy już trzech oddzielnych liczb (tj. 1, 0 i 7) tylko całą liczbę 107
Po tych zajęciach powinieneś znać:
- umieć rozpoczynać komunikację PCta z Arduino przy pomocy obiektu Serial.begin(szybkość_transmisji)
- pamiętać o roli pinów RX (#0) i TX (#1) w komunikacji szeregowej UART
- znać podstawowe funkcje – przynajmniej Serial.println(„cokolwiek„)
- umieć czytać znaki z klawiatury PCta, a także zamieniać te znaki na liczby
Praca domowa #1
Arduino + LEDy: wczytać numer diody, która ma się zaświecić (podpowiedź: pamiętajmy o ciapkach, czyli '1′, '2′ itd). Dodatkowo: jeśli dioda juz była włączona, to ją zgasić (podpowiedź: użyjmy pomocniczych zmiennych typu bool).
Praca domowa #2
Arduino + LEDy: wczytac liczbę błysków dla wszystkich diód, czyli ile razy mają błysnąć LEDy (a potem nic ma się nie dziać). Podpowiedź: wykorzystać funkcję zamieniającą wczytane znaki na liczbę całkowitą.
A co na kolejnych zajęciach?
wyświetlacz 7-mio segmentowy! a może nawet rejest przesuwny?