Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
vpr:laborky:uart:arduino_pc [29. 11. 2017, 15.49] xstoican vytvořeno |
vpr:laborky:uart:arduino_pc [13. 12. 2017, 13.52] (aktuální) xstoican |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== UART: Posílání textu a čísel do PC ====== | ====== UART: Posílání textu a čísel do PC ====== | ||
+ | <WRAP center round info 60%> | ||
+ | Vysvětlete, co znamená zkratka UART a co je to sériová komunikace a sériová linka. Jak se posílají data z Arduina do počítače (přes USB) a z počítače do Arduina? Jaké funkce k tomu používáme? Uveďte ukázkový kód, který načte text z počítače a odpoví zpátky. Které části Arduina UNO a které části Arduina Leonardo se na komunikaci podílejí? | ||
+ | </WRAP> | ||
+ | |||
+ | UART je hardware, který dokáže poílat data po sériové lince libovolnou rychlostí a v různých formátech. Na arduinu jsou 3 nebo 4 piny: | ||
+ | GND - společné zemění | ||
+ | Rx - receiver | ||
+ | Tx - transmitter | ||
+ | napájení (není nutné vždy propojit) | ||
+ | |||
+ | Na arduino jsou piny 0 a 1, Rx a Tx. Vnitřně jsou propojeny s USB převodníkem. | ||
+ | |||
+ | Sériová komunikace posílá bity po jedné lince jednotlivě. Často se používá i druhá linka s hodinovým signálem, ale ta není vždy nutná. | ||
+ | |||
+ | ===== Funkce ===== | ||
+ | |||
+ | |||
+ | Na arduinu používáme objekt Serial a jeho funkce: | ||
+ | Serial.print (text, číslo, znak atd.); Vypíše z čipu do seriové linky. | ||
+ | |||
+ | Serial.println (text, číslo, znak atd.); Je stejný jako Serial.print, ale vypíše s odřádkováním. | ||
+ | |||
+ | Serial.read (); Vrátí kód jednoho znaku, který přišel do čipu. | ||
+ | |||
+ | Serial.readString (); Stejný jako Serial.read, ale vrátí celý řetězec textu. | ||
+ | |||
+ | Serial.parseInt (); Vrátí celé přečtené číslo. | ||
+ | |||
+ | Serial.available (); Vrátí počet znaků které přišly do čipu a čekají na přečtení. | ||
+ | |||
+ | Serial.begin (rychlost); Nastaví na začátku komunikace její rychlost (v baudech). Většinou to je 9600. | ||
+ | |||
+ | Příklad: | ||
+ | |||
+ | <code>void setup() { | ||
+ | Serial.begin(9600); //nastaví rychlost komunikace | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | Serial.println("Nabidka:"); //vypíše nabídku s odřádkováním | ||
+ | Serial.println("a: pizza 99kc"); | ||
+ | Serial.println("b: kebab 50kc"); | ||
+ | Serial.println("c: hamburger 25kc"); | ||
+ | Serial.println("d: cola 15kc"); | ||
+ | Serial.println("vyberte a,b,c nebo d"); | ||
+ | while (Serial.available() == 0); //čeká dokud nepřijdou nějaká data pro přečtení | ||
+ | int data = Serial.read(); //kód jednoho znaku se uloží jako "data" | ||
+ | if (data == 'a') { | ||
+ | Serial.println("Castka 99kc byla strzena z vaseho uctu, uzijte si svoji pizzu!"); //odpoví podle předchozí odpovědi | ||
+ | } | ||
+ | else if (data == 'b') { | ||
+ | Serial.println("Castka 50kc byla strzena z vaseho uctu, uzijte si svůj kebab!"); //odpoví podle předchozí odpovědi | ||
+ | } | ||
+ | else if (data == 'c') { | ||
+ | Serial.println("Castka 25kc byla strzena z vaseho uctu, uzijte si svůj hamburger!"); //odpoví podle předchozí odpovědi | ||
+ | } | ||
+ | else if (data == 'd') { | ||
+ | Serial.println("Castka 15kc byla strzena z vaseho uctu, uzijte si svoji colu!"); //odpoví podle předchozí odpovědi | ||
+ | } | ||
+ | Serial.println(); //vynechá jeden řádek | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
Tudor Alexandru Stoican | Tudor Alexandru Stoican |