{"id":140,"date":"2016-04-28T12:37:29","date_gmt":"2016-04-28T12:37:29","guid":{"rendered":"http:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=140"},"modified":"2016-06-03T12:40:35","modified_gmt":"2016-06-03T12:40:35","slug":"zajecia-nr-3-komunikacja-szeregowa-arduino-z-pece-tem","status":"publish","type":"post","link":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/?p=140","title":{"rendered":"Zaj\u0119cia nr 3 &#8211; komunikacja szeregowa Arduino z PeCe-tem"},"content":{"rendered":"<p>Na naszych <strong>trzecich<\/strong>\u00a0zaj\u0119ciach powiedzieli\u015bmy sobie o:<\/p>\n<ul style=\"list-style-type: circle;\">\n<li>dalej o tablicach, bo s\u0105 <strong>wa\u017cne<\/strong>!<\/li>\n<li>programowanie strukturalne &#8211; tworzenie (niemych) funkcji, u nas void b\u0142ysk(int czas) &#8211; jako podstawowych cegie\u0142ek, kt\u00f3rych b\u0119dziemy cz\u0119sto u\u017cywa\u0107<\/li>\n<li>poznajemy inne <strong>typy danych\u00a0<\/strong>(czy wiesz, jakie warto\u015bci mo\u017cna w nich przechowywa\u0107?):\n<ul>\n<li>bajt (o rozmiarze 1 bajt &#8211; no bo niby jak inaczej!),<\/li>\n<li>char (czyli znak, te\u017c 1 bajt) &#8211; przy tej okazji poznajemy\u00a0<strong>ciapki<\/strong> (znaczki pojedynczego apostrofa\u00a0<strong>\\&#8217; \\&#8217;<\/strong>)<\/li>\n<li>bool (prawda\/fa\u0142sz, true\/false) &#8211; 1 bajt<\/li>\n<li>modyfikator\u00a0<strong>unsigned<\/strong><\/li>\n<li>modyfikator\u00a0<strong>long<\/strong><\/li>\n<li>stringi jak tablice znak\u00f3w,<strong>\u00a0<\/strong>poznajemy te\u017c\u00a0<strong>psie uszy\u00a0<\/strong>&#8211; czyli znaki ameryka\u0144skiego cytowania\u00a0<strong>\\&#8221; \\&#8221;<\/strong><\/li>\n<li>float &#8211; do przechowywania liczb rzeczywistych, np. float pi=3.141592; (4 bajty)<\/li>\n<\/ul>\n<\/li>\n<li>o komunikacji szeregowej z zamierzch\u0142ych czas\u00f3w PeCetowych &#8211; RS232<\/li>\n<li>emulator portu RS232 w dzisiejszych kompach &#8211; wykorzystujemy port USB (w tym kilka zgry\u017aliwych opinii o oprogramowaniu tego emulatora pod Windowsem &#8211; niestety, dzia\u0142a on s\u0142abiej ni\u017c analogiczne oprogramowanie pod Linuxa)<\/li>\n<li><strong>Serial.begin(9600) <\/strong>&#8211; rozpoczynamy transmisj\u0119 szeregow\u0105 z nasztm PCetem, ale &#8222;tracimy&#8221; piny #0 (nazwany RX &#8211; odbi\u00f3r danych) i #1 (nazwany TX &#8211; transmisja danych) na naszej p\u0142ytce Arduino (s\u0105 one zaj\u0119te rozmow\u0105 z PCetem). Dla bardziej dociekliwych dodam, \u017ce aby &#8222;odzyska\u0107&#8221; te piny musimy zako\u0144czy\u0107 transmisj\u0119 szeregow\u0105 poleceniem Serial.end() &#8211; informacja dla zaawansowanych<\/li>\n<li><strong>Serial.print(&#8222;<\/strong>cokolwiek<strong>&#8222;)\u00a0<\/strong> &#8211; m\u00f3wimy do PCeta, aby to us\u0142ysze\u0107, musimy otworzy\u0107\u00a0<em>Monitor portu szeregowego<\/em> w Arduino IDE. Trzeba pami\u0119ta\u0107 o konfiguracji\u00a0<em>Monitora<\/em> tak samo, jak to zrobili\u015bmy od strony Arduino<\/li>\n<li><strong>Serial.println(&#8222;<\/strong>inny napis<strong>&#8222;)<\/strong> &#8211; napis zako\u0144czony przej\u015bciem do nowej linii<\/li>\n<li><strong>Serial.available()<\/strong> &#8211; sprawdzamy, czy s\u0105 jakie\u015b dane do odebrania przez Arduino<\/li>\n<li><strong>Serial.read()<\/strong> &#8211; czytamy jeden bajt. Przy tej okazji \u0107wiczyli\u015bmy r\u00f3\u017cnic\u0119 pomi\u0119dzy:<\/li>\n<\/ul>\n<pre class=\"lang:arduino decode:true \">byte znak=Serial.read() \/\/ oraz\r\n\r\nchar znak=Serial.read().<\/pre>\n<p>Pami\u0119tasz, o co chodzi\u0142o? Co si\u0119 wy\u015bwietla\u0142o w obu przypadkach po wpisaniu jednej literki, np. A? czy przypominasz sobie moj\u0105 dygresj\u0119 o znakach ASCII oraz o kodowaniu klawiatury?<\/p>\n<ul style=\"list-style-type: circle;\">\n<li>wczytujemy napis (czyli ci\u0105g znak\u00f3w, np. wyraz <em>pomidor<\/em>)\u00a0z Seriala &#8211; no i c\u00f3\u017c? literka po literce?? Jak wi\u0119c wczyta\u0107 liczb\u0119, powiedzmy 107?<\/li>\n<li><strong>Serial.parseInt()<\/strong> jako funkcja czytaj\u0105ca dane nadchodz\u0105ce do Seriala i zamieniaj\u0105ce\u00a0je na liczb\u0119 ca\u0142kowit\u0105 (integer) &#8211; czyli wczytuj\u0105c liczb\u0119 &#8222;107&#8221; nie mamy ju\u017c trzech oddzielnych liczb (tj. 1, 0 i 7) tylko ca\u0142\u0105 liczb\u0119 107<\/li>\n<\/ul>\n<p>Po tych zaj\u0119ciach powiniene\u015b zna\u0107:<\/p>\n<ul>\n<li>umie\u0107 rozpoczyna\u0107 komunikacj\u0119 PCta z Arduino przy pomocy obiektu <strong>Serial.begin(<\/strong>szybko\u015b\u0107_transmisji<strong>)<\/strong><\/li>\n<li>pami\u0119ta\u0107 o roli pin\u00f3w RX (#0) i TX (#1) w komunikacji szeregowej UART<\/li>\n<li>zna\u0107 podstawowe funkcje &#8211; przynajmniej <strong>Serial.println(&#8222;<\/strong>cokolwiek<strong>&#8222;)<\/strong><\/li>\n<li>umie\u0107 czyta\u0107 znaki z klawiatury PCta, a tak\u017ce zamienia\u0107 te znaki na liczby<\/li>\n<\/ul>\n<h2>Praca domowa #1<\/h2>\n<p>Arduino + LEDy: wczyta\u0107 numer diody, kt\u00f3ra ma si\u0119 za\u015bwieci\u0107 (podpowied\u017a: pami\u0119tajmy o ciapkach, czyli '1&#8242;, '2&#8242; itd). Dodatkowo: je\u015bli dioda juz by\u0142a w\u0142\u0105czona, to j\u0105 zgasi\u0107 (podpowied\u017a: u\u017cyjmy pomocniczych zmiennych typu bool).<\/p>\n<h2>Praca domowa #2<\/h2>\n<p>Arduino + LEDy: wczytac liczb\u0119 b\u0142ysk\u00f3w dla wszystkich di\u00f3d, czyli ile razy maj\u0105 b\u0142ysn\u0105\u0107 LEDy (a potem nic ma si\u0119 nie dzia\u0107). Podpowied\u017a: wykorzysta\u0107 funkcj\u0119 zamieniaj\u0105c\u0105 wczytane znaki na liczb\u0119 ca\u0142kowit\u0105.<\/p>\n<h2>A co na kolejnych zaj\u0119ciach?<\/h2>\n<p>wy\u015bwietlacz 7-mio segmentowy! a mo\u017ce nawet rejest przesuwny?<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/thumbsnap.com\/s\/TONuRHLH.jpg\" alt=\"\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na naszych trzecich\u00a0zaj\u0119ciach powiedzieli\u015bmy sobie o: dalej o tablicach, bo s\u0105 wa\u017cne! programowanie strukturalne &#8211; tworzenie (niemych) funkcji, u nas void b\u0142ysk(int czas) &#8211; jako podstawowych cegie\u0142ek, kt\u00f3rych b\u0119dziemy cz\u0119sto u\u017cywa\u0107 poznajemy inne typy danych\u00a0(czy wiesz, jakie warto\u015bci mo\u017cna w nich przechowywa\u0107?): bajt (o rozmiarze 1 bajt &#8211; no bo niby jak inaczej!), char (czyli [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":215,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[51],"tags":[],"class_list":{"0":"post-140","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-talentyxxiw","9":"post-with-thumbnail","10":"post-with-thumbnail-large"},"_links":{"self":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=140"}],"version-history":[{"count":12,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/140\/revisions"}],"predecessor-version":[{"id":299,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/posts\/140\/revisions\/299"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=\/wp\/v2\/media\/215"}],"wp:attachment":[{"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/physics.uwb.edu.pl\/wf\/fi-bot\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}