You are on page 1of 422
Ld ARDUINO 65 PRAKTYCZNYCH PROJEKTOW JOHN BOXALL A A mn ‘Tytul oryginalu: Arduino Workshop: A Hands-On Introduction with ‘Thumaczenie: Mikolaj Szezepaniak ISBN: 978-83-216-8002-3 5 Projects Original edition Copyright © 2013 by John Boxall. All rights reserved. Published by arrangement with No Starch Press, Ine, Polish edition copyright © 2014 by Helion SA All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, inchiding photocopying, recording or by any information storage retrieval system, without permission from the Publish Wszelkie prawa zastrzezone. Nieantoryzowane rozpowszechnianie calosci lub fragmenta niniejsze} publikacji w jakiejkolwiek postaci jest zabronione, Wykonywanie kopii metoda kserograficzn, fotograficang, a takZe kopiowanie ksigZki na noniku fllmowym, magnelycznym Tub innyi powoduje nanuszenie praw autorskich niniejszej publikaeji Wozystkie znaki wystepuigce w tekscie sq zastrzezonymi znakami finmow wlasciciel. i baz towarowyini ich Wydawnictwo HELION dolozyto wszelkich starai, by zawarte w tej ksigzee informacje byly kompletne i rzetelne. Nie bierze jednak Zadnej odpowiedzialnosci ani za ich wykorzystanie, ani za zwigzane 2 tyin ewentuahne naruszenie praw patentowych lub attorskich. Wydawnictwo HELION nie ponosi réwniez Zadnej odpowiedzialnosei za ewentualue skody wynikle z wykorzystania informacji zawartych w ksigzce. Wydawnictwo HELION ul, Kosciuszki le, 44-100 GLIWICE. tel, 32.231 22 19, 32 230 98 63 ennai: helion@helion pl WWW: http://helion.pl (ksiggamnia internetowa, katalog ksiazek) Pliki z prayldadami omawianymi w ksigizce moma male%é pod adresem: Sip:ilfip.helion plipraykladylardupp.zip Drogi Czytelniku! Jezeli cheesz ocenié te ksigzke, zajrzyj pod adres http:/ihelion.pliuserfopinielardupp_ebook Mojesz.tam wpisaé swoje uwagi, spostrzezenia, recenzig. Printed in Poland. ‘© Poled ksigake na Facebook.com 1 Ksiggarnia internetowa ‘+ Kup w wes} paplerowe} 1 Lubig tol» Nasza spolecanosé © Ocen ksiatke Ksigzke dedykuje diwom osobom, ktdre zawsze we mnie wierzyly mojej mamie i mojej najdroiszej Kathleen Spis tresci PODZIEKOWANIA ' WPROWADZENEE .. Nieograniczone modliwosci Popularnosé Czeéci i akcesoria .. Wymagane oprogramowanie System Mac OS X en System Windows XP i nowsze System Ubuntu Linux 9.04 i nowsze Bezpieczeristwo Co dale)? 2 PIERWSZE SPOJRZENIE NA PLYTKE ARDUINO I SRODOWISKO IDE Plytka Arduino reste Wprowadzenie do srodowiska IDE Obszar polece Obszar tekstu Obszar komunikatéw .... . A ‘Tworzenie pierwszego szkicu w srodowisku IDE .. Komentarze Funkcja setup() Sterowanie sprzetem Funkcjaloop() .. Weryfikacja szkicu ...... Wysylanie i uruchamianie szkicu Modyfikowanie szkicu Co dale)? 3 PIERWSZE KROKI Planowanie projektéw ...... Kilka stow o elektrycznosci Natezenie . Napiecie Moc . : Komponenty elektroniczne Rezystor ..... Dioda LED .. Plytka uniwersalna Projekt nr 1: tworzenie fali migajacych diod LED Algorytm Sprzet Szkic. Schemat Uruchamianie szkicu ..... Stosowanie zmiennych Zmiana jasnoéci diod LED za pomoca modulacji szerokosci impulsu Projekt nr 3: przyktad zastosowania metody PWM Dodatkowe komponenty elektroniczne Tranzystor . Dioda prostownicza .... Prekainik .. Obwody zasilane wyzszym napigciem Co dalej? 4 ELEMENTY SKLADOWE OBWODOW Stosowanie schematéw obwodéw Identyfikacja komponentéw .. Potaczenia na schemacie obwodu Analiza prayktadowego schematu Kondensator Mierzenie pojemnosci kondensatora Odczytywanie wartosci kondensatoréw Rodzaje kondensatoréw Wejécie cyfrowe Projekt nr 4; przyldad uiycia cyfrowego wejécia Algorytm Sprzet Schemat obwodu SAKIC sessssttnnnrseeee Modyfikowanie szkicu .. ‘Wyjagnienie szkicu ...... ‘Tworzenie stalych za pomoca wyrazenia #define Odezytywanie stanu pindw cyfrowych Podejmowanie decyzii za pomoca wyrazenia if. Podejmowanie dodatkowych decyzji za pomoca wyraien if-then-else .. ‘Zmienne logiczne Operatory poréwnania taczenie wielu operacii poréwnania Projekt nr 5: sterowanie ruchem samochodowym ae Algorytm Sprzet Schemat .. Szkic o Uruchamianie szkicu e Sygnaty analogowe kontra sygnaly cyfrowe . Dziatania arytmetyczne w systemie Arduino Zmienne typu float Operatory poréwnania liczb . Poprawa precyzji pomiaréw sygnatu analogowego za pomoca napiecia referencyinego Stosowanie zewnetrznego napiecia referencyjnego .... Stosowanie wewnetrznego napiecia referencynego Rezystor nastawny .. Brzgczyki piezoelektryczne « Schemat elementu piezo Proje nr 7: praktyczne wykorzystanie brzeczyka piezo Projekt nr 8: budowa szybkiego termometru Cel Sprzet Schemat .. Szkic Doskonalenie szkicu . Co dale)? 5 PRACA Z FUNKCJAMI Projekt nr 9: tworzenie funkcji powtarzajacej okreslone dziatanie Projekt nr 10: tworzenie funkcji ustawiajacej liczbe cykli wiqczania diod Tworzenie funkeji zwracajace| wartosé — spistreéci 7 Projekt nr ||: budowa szybkiego termometru z migajacymi diodami LED Sprzet .. Schemat 118 Szkic 118 Wyéwietlanie danych odbieranych od plytki Arduino w oknie monitora portu szeregowego . Monitor portu szeregowego . Projekt nr 12: wyswietlanie temperatury w oknie monitora portu szeregowego Diagnozowanie systeméw za pomoca monitora portu szeregowego ... 123 Podejmowanie decyzji za pomoca wyrazen while 124 Konstrukcja do-while 125 Wysylanie danych z monitora portu szeregowego do systemu Arduino Projekt nr 13: mnozenie liczby przez dwa .. Zmienne typu long Projekt nr 14: stosowanie zmiennych typu long .. Co dalej? 6 LICZBY, ZMIENNE I DZIALANIA ARYTMETYCZNE Generowanie liczb losowych .. Generowanie liczb losowych na podstawie napiecia na wolnym pinie .. Projekt nr 15: tworzenie elektronicznej kostki do gry .. Sprzet Schemat Szkic Modyfikowanie szkicu Krétkie wprowadzenie w gwiat liczb binarnych ....- Zmienne typu byte «... Zwigkszanie liczby dostepnych pinéw cyfrowych za pomoca rejestréw przesuwajacych Projekt nr 16: tworzenie wodwietlacza liczb binarnych ztozonego z diod LED .....140 SPIZEE ener taczenie rejestru przesuwajacego 74HC595 Szkic... Projekt nr 17: implementacja binarnego quizu Algorytm Szkic. Tablice Definiowanie tablicy ..... Odwolywanie sie do wartosci w tablicy Zapisywanie i odczytywanie danych przechowywanych w tablicach Siedmiosegmentowe wyswietlacze LED Sterowanie wyswietlaczem LED ...... Projekt nr 18: tworzenie wyswietlacza jednocyfrowego Sprzet Schemat Szkic WySwiedlanie dwéch cy. e Projekt nr 19: sterowanie dwoma modutami wyswietlaczy siedmiosegmentowych LED 154 Sprzet Schemat .. Modulo ... Projekt nr 20: budowa termometru cyfrowego Sprzet Szkic Moduly wyswiedaczy matrycowych LED Schemat obwodu wyswietlacza matrycowego LED - taczenie obwodu Arytmetyka bitowa Operator koniunkeji bitowej Operator alternatywy bitowej Operator bitowej alternatywy wykluczajace} Operator negacji bitowe| .. : Operatory bitowego przesuniecia w lewo iw prawo Projekt nr 21: tworzenie wyswietlacza matrycowego LED Projekt nr 22: wyswietlanie obrazéw na wyswietlaczu matrycowym LED Projekt nr 23: wyéwietlanie obrazu na wyéwietlaczu matrycowym LED Projekt nr 24: prezentacja animacji na wyswietlaczu matrycowym LED Szkic 169 Co dale)? 170 7 WYSWIETLACZE CIEKLOKRYSTALICZNE .. 71 Znakowe moduly LCD . A172 Obstuga znakowego modutu LCD w szkicu .... wlTB Wyswiedlanie tekstu 174 Wyéwietlanie zmiennych i liczb .. 175, 176 178 179 oe 180 Projekt nr 25: definiowanle znalcéw nlestandardowych Graficzne moduly LCD . taczenie graficznego modutu LCD Stosowanie modutu LCD . Sterowanie wyswietlaczem . Projekt nr 26: funkcje tekstowe w praktyce .. 180 Tworzenie zlozonych efelctow wizualnych 181 Projekt nr 27: budowa szybkiego termometru z wyswietlana historia 183 Algorytm . 183 Sprzet 183 Spistreéci 9 Szkic... . 184 Wynik : seven seveessesene 185 Modyfikowanie szkicu 186 Co dale)? .. faa: . 186 8 ROZSZERZANIE MOZLIWOSCI PLATFORMY ARDUINO .. 187 Moduly . . 188 Plytka prototypowa ProtoShield . . 190 Projekt nr 28: tworzenie modutu niestandardowego z osmioma 191 Sprzet 192 ‘Schemat 192 Uktad plytid prototypowej ProtoShield 192 Projekt... 193 Lutowantie komponentow .. seve seveeereeee 194 Modyfikacja modutu niestandardowego 195 Rozszerzanie szkicow za pomoca bibliotek 196 Importowanie bibliotek dla modulow . 196 Karty pamigci microSD . 201 Testowanie karty microSD . 201 Projekt nr 29: zapisywanie danych na karcie pamieci 202 Projekt nr 30: budowa urzadzenia rejestrujacego temperature .. 205 Sprzet 208 Szkic fee soe 205 Zarzadzanie czasem wykonywania aplikacii za pomoca funk} milis() i micros() . 208 Projekt nr 31: budewa stopera .210 Sprzet 210 Schemat obwodu 210 Szkic... sn 210 Przerwania ..n. 213 Tryby przerwan 213 Konfiguracja przerwan . 214 Aktywowanie i dezaktywowanie przerwati .. 214 Projekt nr 32: stosowanie przerwat . 214 Szkic. so 214 Co dalej? 216 9 KLAWIATURY NUMERYCZNE Stosowanie klawiatury numerycznej taczenie klawiatury numerycznej . A Programowanie obstugi klawiatury numeryczngj..... 219 Testowanie szkicu 7 - . 220 Podejmowanie decyzji za pomoca konstrukeji switch-case 220 Projekt nr 33: tworzenie zamka sterowanego klawiatura numeryczna SZKIC eer Dziatanie szkicu Testowanie szkicu Co dale)? 10 ODCZYTYWANIE DANYCH WEJSCIOWYCH UZYTKOWNIKA ZA POSREDNICTWEM EKRANOW DOTYKOWYCH ... Ekrany dotykowe ..... : taczenie ekranu dotykowego Projekt nr 34: adresowanie obszaréw na ekranie dotykowym 227 Sprzet Szkic Testowanie szkicu .... : Odwzorowywanie punktéw dotknigcia ekranu ... Projekt nr 35: budowa dwustanowego przetacznika dotykowego Sie Dziatanie szkicu Testowanie szkicu se Projekt nr 36: budowa przetacznika dotykowego podzielonego na trzy obszary Mapa ekranu dotykowego .. SEKI essere Dziatanie szkicu Co dale)? W RODZINA PRODUKTOW ARDUINO Projekt nr 37: budowa wlasnej platformy Arduino na plytce uniwersalnej Sprzet Schemat obwodu ..... Uruchamianie szkicu testowego Bogata rodzina plytek Arduino Plytka Arduino Uno... Plytka Freetronics Eleven .. Plytka Freeduino Plytka Boarduino ...... Plytka Arduino Nano Plytka Arduino LilyPad ....... Plytka Arduino Mega 2560 ... Plytka Freetronics EtherMega Plytka Arduino Due Co dale)? spis resci WI 12 SILNIKI | RUCH Woprawianie urzadzen w ruch za pomoca silnikéw wykonawezych Wybér silnika wykonawezego Laczenie silnika wykonawczego Uruchamianie silnika wykonawezego Projekt nr 38: budowa termometru analogowego . 256 . 256 a . 257 ay Sprzet ... oe 259 Schemat 259 Szkic 260 Stosowanie silnikéw elektrycznych Tranzystor Darlingtona TIP120 Projekt nr 39: sterowanie sil Spraet Schemat 261 262 .262 . 262 . 263 Szkic . 264 Projekt nr 40: budowa robota gasienicowego i sterowanie tym robotem 265 Sprzet 265 Schemat 267 Szkic... .270 Wykrywanie kolizii Projekt nr 41: wykrywanie kolizji robota za pomoca Schemat Szkic ... Caujniki odleglosci na podczerwiert taczenie obwodu Testowanie czujnika odleglosci na podczerwiert Projekt nr 42: wykrywanie kol za pomocg czujnika odleglogci na podczerwie .219 Ultradzwiekowe czujniki odlegtosci ............... 7 7 . 281 taczenie czujnika ultradzwiekowego 282 Stosowanie czujnika ultradzwiekowego . 282 ofiy) 272 273 . 273 276 276 276 Testowanie ultradawielowego czujnika odlegtosci . 282 Projekt nr 43: wykrywanie kolizji robota za pomoca ultradéwiekowego czujnika odlegtosc seve 284 SAKIC ssesstnetnnstnitnis . : : son 284 Co dale? .. . 287 13 STOSOWANIE SYSTEMU GPS NA PLATFORMIE ARDUINO Czym jest GPS? Testowaniie modulu GPS. Projekt nr 44: budowa prostego odbior Sprzet Szkic. Wyswietlanie potozenia na ekranie LCD 12 Projekt nr 45: budowa precyzyjnego zegara korzystajacego z systemu GPS . Spraet Szkic Projekt nr 46: rejestrowanie potozenia ruchomego obiektu w czasie Sprzet Sc : ‘Wyéwiedanie zarejestrowanych lokalizaeji na maple Co dale? iss 14 BEZPRZEWODOWE PRZESYEANIE DANYCH .... Stosowanie niedrogich moduléw komunikac|i bezprzewodowe| .. Projekt nr 47: zdalne, bezprzewodowe sterowanie urzadzeniem Sprzet sktadajacy sie na obwéd nadajnika .. Schemat nadajnika ...... Sprzet sktadajacy sie na obwéd odbiornika Schemat odbiornika Szkic nadajnika Szkic odbiornika ...... Moduly bezprzewodowego przesylania danych XBee — wiekszy zasieg i szybsza transmisja . Projekt nr 48: transmisja danych za pomoca modutéw XBee Szkic Konfiguracia komputera pod katem odbierania danych Projekt nr 49: budowa zdalnie sterowanego termometru Sprzet Uklad urzadzenia Szkic Obstuga urzadzenia Co dale)? 15 ZDALNE STEROWANIE ZA POMOCA PODCZERWIENI Czym jest podezerwier? Praygotowanie do uzycia podczerwieni Odbiornik podczerwieni Pilot Szkic testowy Testowanie uktadu Projekt nr 50: zdalne sterowanie systemem Arduino na podczerwieh Sprzet Szkic Rozszerzanie szkicu spis tresei I Projekt nr 51: budowa zdalnie sterowanego robota . 325 Sprzet .. 325 Szkic 326 Co dale? 328 16 ODCZYTYWANIE ETYKIET RFID Wewnetrzna budowa urzadzert RFID Testowanie sprzetu .. Schemat 329 330 331 ooo Testowanie schematu .... 331 Projekt nr 52: budowa prostego systemu kontroli dostepu na bazie technologii RFID 333 Szkic ... 7 333, Dziatanie ‘zkicu 7 335 Zapisywanie danych we wbudowanej pamigci EEPROM systemu Arduino 336 Odczytywanie i zapisywanie danych w pamigci EEPROM .. 337 Projekt nr 53: budowa systemu kontroli dostepu RFID 338 su 338 Datalanie szkieu . 341 Co dale .. 341 17 MAGISTRALE DANYCH Magistrala PC . 344 Projekt nr 54: stosowanie zewnetrznej pamieci EEPROM .. 346 SPIZQE evsensteesteneee 346 Schemat 346 Szkic 347 oe 350 . 350 . 350 oe 352 e353) 353 354 ELL) Projekt nr 55: stosowanie uktadu ekspandera portow . Magistrala SPI . taczenie pinéw Implementacja obstugi magistrali SPI Wysylanie danych do urzadzenia SPI Projekt nr 56: stosowanie cyfrowego rezystora nastawnego .356 Spraet 356 Schemat . 357 we 357 359 18 ‘ZEGARY CZASU RZECZYWISTEGO ... taczenie modutu RTC Projekt nr 57: wyéwietlanie daty i godziny na podstawie zegara czasu rzeczywistego .. Sprzet Szkic Dziatanie szkicu .........:..00s000 Projekt nr 58: tworzenie prostego zegara cyfrowego Sprzet SAIC es . Dziatanie szkicu i generowane wyniki Projekt nr 59: budowa systemu kontroli czasu pracy na bazie technologii RFID Sprzet 372 SZKIC sree 373 Dziatanie szkicu 377 Co dale)? 19 INTERNET .. Czego potrzebujemy? ..... Projekt nr 60: budowa zdalnej sta: Sprzet Szkic Rozwiazywanie problemow Dziatanie szkicu Projekt nr 61: éwierkajace Arduino Sprzet SAKIC seerseeneee . Sterowanie systemiem Arduino Za posrednictwem strony internetowel Projekt nr 62: konfiguracja ustugi Teleduino i zdalne sterowanie systemem Arduino ... Sprzet Szkic Zdalne sterowanie systemem Arduino Co dale)? monitoringu 20 KOMUNIKACJA W SIECI TELEFONII KOMORKOWE] ... Konfigurowanie i testowanie sprzetu Zmiana czestotliwosci pracy .... spis resi 1S. Projekt nr 63: budowa dzwoniacego Arduino 400 Sprzet .. 400 Schemat 401 SAKIC cereesernteee 401 Dziatanie szkicu .. oe re 402 Projekt nr 64: budowa systemu Arduino wysytajacego SMS-y 403 Szki . ; a . soe 403 Dziatanie szkicu 404 Projekt nr 65: konfiguracja systemu sterowanego za pomoca wiadomosci SMS 405 Sprzet ... 405 Schemat 405 SAIC ssrssen oe 405, Dziatanie szkicu . 408 Co dale)? anne ninttsnnnnininnnntininnnnininitinnisitinnnannnsntt 408 SKOROWIDZ 16 Podziekowania Cheialbym najpierw wyrazié ogromna wdziecznos¢ zespolowi pra- cujacemu nad rozwojem Arduino: Massimowi Banziemu, Davidowi Cuartiellesowi, Tomowi Igoe, Gianluce Martinowi i Davidowi Mellisowi. Bez Waszej wizji, ale tez ciezkiej pracy to wielkie dzielo nie byloby mozliwe. Dziekuje takze mojemu recenzentowi, Marcowi Alexandrowi, za jego zaan- gatowanie, wiedze, sugestie, wsparcie, pomysly i dlugie rozmowy, a take za wiel- kq wytrwalogé, hezcenng podczas realizacji tak wielkiego projektu. Cheialbym tex podzigkowaé nastepujacym organizacjom za udostepnienie obraz6w i okazang pomoc: adafruit industries, Agilent Technologies, Gravitech, Freetronics, Oomlout, Seeed Studio, Sharp Corporation i SparkFun. Jestem wi- nien szczeg6lne podzigkowania firmie Freetronics, ktorej doskonale produkty umodliwily realizacje opisanych tutaj projekt6w. Dzigkuje réwniez wszystkim programistom, kt6rzy poswigcili sw6j wolny czas na tworzenie bibliotek dla platformy Arduino — to dzieki ich zaangazowanin praca konstruktor6w jest duzo prostsza Jestem teZ pod wrazeniem pracy zespolu rozwijajgcego projekt Fritzing, czyli doskonate narzedzie open source do projektowania obwod6w, kt6re wyko- rzystywalem niemal na kazdym kroku podczas pisania tej ksiqzki. Daigkuje take nastepujacym osobom (kolejnosé nazwisk jest praypadkowa) za achgty do pracy, wsparcie, inspiracje: Iraphne Childs, Limor Fried, Jonatha- nowi Oxerowi, Philipowi Lindsayowi, Nicole Kilah, Kenowi Shirriffowi, Nathanowi Kemnedy'emu, Davidowi Jonesowi oraz Nathanowi Seidle’owi. Lwreszcie dzigkuje wszystkim pracownikom wydawnictwa No Starch Press: Sondyze Silverhawk za pomyst napisania tej ksiqzki, Serenie Yang za pomoc re- dakcyjna, nieskoriczona ciexpliwos¢ i hezcenne sugestie, Billowi Pollockowi za wsparcie i rady oraz za konsekwentne sugerowanie alternatywnych, lepszych sposobéw thumaczenia pewnych zagadnies Arduino. 65 praktycznych projektow Wprowadzenie Niemal kazdemu z nas zdarzaja sie sytuacje, w ktérych przyglada si jakiemus gadzetowi i zastanawia sie, jak to urzadzenie naprawde dziala? Mote to byé zdalnie sterowany model lodzi, system sterujacy praca windy, automat sprzedajacy (i zliczajacy wrzucane monety) Tub jakaé elektroniczna zabawka. Wielu z nas idzie krok dalej i marzy o budowie wlasnego robota lub uktadu elektronicznego na potrze- by kolejki elektrycznej lub w celu zbierania i analizowania danych 0 pogodzie. Od czego nalezy zacza Plytka Arduino (pokazana na rysunku 1.1) moze macznie ulatwi¢ odkrywanie tajemnic urzadzeni elektronicznych poprzez praktyezne eksperymenty. System Arduino, ktérego oryginalng wersjg zaprojektowali Massimo Banzi i David Cuartielles, oferuje modliwos¢ budowy interaktywnych projekt6w (zdalnie ste- rowanych robot6w, systeméw sledzenia pozyeji wedlug sygnahu GPS czy gier elek- troniczych) za stosunkowo niewysoka cene. Projekt Arduino jest dynamicznie rozwijany od momentu wprowadzenia na rynek w 2005 roku. Wokst tego projektu powstat dobrze prosperujacy przemyst stale wspierany przez osoby, ktérych cecha wsp6lng jest dazenie do tworzenia nowych rozwiqzai. Spolecznos¢ konstruktor6w obejmuje zaréwno osoby prywat- ne, jak i wieksze grupy, w tym organizacje komercyjne, kluby hobbystow oraz instytucje edukacyjne — wszystkie te osoby i podmioty sq zainteresowane eks- perymentami z systemem Arduino. Rysunek 1.1. Plytka Arduino Aby docenié réanorodnoéé projekt6w realizowanych na bazie systemu Ardu- ino, wystarczy przeszukaé internet. Kazdy moze hez trudu znale%é listy grup udo- stepniajgcych programy i kursy wprowadzajace w swiat system Arduino — wszystkie te materialy sq przygotowywane przez kreatywnych hobbystéw. Nieograniczone mozliwosci 20 Wystarezy pobieénie przeirzeé te ksigzkg, aby zrozumieé, Ze plytka Arduino moze sluzyé zarwno do realizacji tak prostych zadan jak miganie niewielkim Zrédlem Swiatla, jak i do bardziej zlozonych zastosowal, jak komunikacja 2 telefonem komérkowym., Istnieje tez mndstwo rozwigzah posrednich o przecigtnym po- ziomie zlozonosci. Warto na przyklad zapozmaé sig 2 urzaelzeniem zaprojektowanym przez Philipa Lindsaya (patrz rysunek 1.2). Wiadomosci tekstowe mo’ za posrednictwem telefon komérkowego. Komunikaty é wySwietlane na przyKlad w salach tanecznych. Urzadzenie uzywa plytki Arduino i modulu telefonu komérkowego do otrzymywania wiadomosei tekstowych wysylanych zinnych telefon6w (podobnie jak w projekcie nr 65). Komunikat stepnie przekazyw punktowymi, Rysunek 1.2. Tekst wiadomosci SMS na wyswietlaczu z matrycq punktowg Rozdziat | Duze wySwietlacze, ktore mozna dosé latwo laczyé z systemem Arduino, sa dostepne w przystepnych cenach, zatem nie ma potrzeby budowy samego wy- Swietlacza od podstaw. (Wigcej informacji na temat tego projektu mozna znalesé na stronie http://www labradoc.com/ijfollower p/project-sms-text-scroller) Czy system Arduino mona wykorzystaé do zorganizowania niepowtarzalnych oswiadezyn? Tyler Cooper chcial w oryginalny spos6b oswiadezyé sig swojej dziewczynie i zbudowal w tym celu urzqdzenie nazwane ,urzadzeniem do od- wrdconego geocachingu” — czyli niewielkie pudelko zawierajace pierscionek zareczynowy (patyz rystmek 1.3). Po przeniesieniu pudetka w odpowiednie miej- sce (okreslane na podstawie sygnaht GPS) zamek otwieral sig, udostepniajgc ro- mantyczna wiadomosé i sam pierscionek. Podobne urzadzenie moma latwo zbudowaé samemu za pomoca plytki Arduino, odbiornika GPS, modulu LCD (na przyklad takiego jak w rozdziale 13.) oraz niewielkiego silnika wykonawezego, Ktory hedzie zabezpieczat zawartosé pudelka do momentu jego przeniesienia we wlasciwe miejsce. Takée niezbedny kod Zr6dlowy jest dosé prosty — odpo- wiednie rozwiqzanie moina zaimplementowaé w zaledwie kilka godzin. Najbar- dziej czasochlonnym zadaniem jest wybér odpowiedniego pudelka, w kt6rym zaniesci sig caly system. (Wigcej informacji na temat tego projektu mozna znalezé na stronie hitp://learn.adafruit.com/reverse-geocache-engagement-box/). Rysunek 1.3. Oryginalne oswiadczyny przy uzyciu systemu Arduino A oto inny ciekawy przyklad. Kurt Schulz cheial monitorowaé poziom nala- dowania baterii w swoim skuterze elektryczym. Kiedy jednak odkryl, jak prosta jest praca z systemem Arduino, znacznie rozwingt sw6j projekt — w ten spos6b powstal kompleksowy system zarzadzania skuterem elektryeznym nazwany Scooterputer. System Scooterputer nie tylko mierzy poziom napigcia baterii, ale tez wySwietla biezaca predkos¢, przebyty odcinek, kat nachylenia pokonywa- nego wzniesienia, temperature, godzine, date, pozyci¢ GPS itp. System obejmuje tez modul telefonu komputerowego, dzieki czemu moze byé uzywany zdalnie zar6wno do éledzenia trasy, jak i wylgezenia silnika (w razie kradziezy skutera) Werowadzenie 21 2 Calym systemem mozna sterowaé za pomoca niewielkiego ekranu dotykowego (patrz rysunek 1.4). Kaéda fankej¢ tego systemu mozna traktowaé jako osobny element skladowy. Podobny system mona zhudowaé w zaledwie kilka weekend6w. (Wiecej informacji o projekcie mozna znalezé na stronie http://www.janspace. com/b2evolution/arduino.php/2010/06/26/scooterputer/) Rysunek 1.4. WySwietlacz systemu Scooterputer (dzieki uprzejmosci Kurta Schulza) I wreszcie warto wspomnieé o Johnie Sariku, milosniku popularnej lami- glowki Sudoku i cyfrowych lamp jarzeniowych (wyswietlaczy Nixie). John pola- cayl obie pasje i zbudowal wielki, 81-cyfrowy komputer do gry w Sudoku! Usytkownik moze rozgrywaé pelng gre na planszy 9X9, a system Arduino za- raqdza rozgrywka i sprawdza poprawnosé podawanych wartosci. Mimo Ze projekt Ww tej formie wielu poezatkujacym konstruktorom moze sig wydaé zaawansowany, w rzeczywistosci jest modliwy do zrealizowania przez kazdego, a zastosowane uklady elektroniczne nie sq zhyt skomplikowane. Gotowe urzadzenie jest dosé duze i doskonale prezentuje sig na Scianie (patrz rysunek 1.5). (Wigcej informacji © projekcie mozna zaleZ¢ na stronie http://trashbearlabs.wordpress.com/2010/ 07/09{nixie-sudoku/) System Arduino zostal uzyty takée do budowy urzadzenia TwypeWriter przez firme Oomlout. W urzadzenin wykorzystano plytke Arduino z modulem sieciowym (ang. Ethernet shield) podlaczonym do internetu w celu przeszuki- wania Twittera pod katem okreslonych sl6w kluezowych. W momencie znale- zienie wystapienia jednego z tych slow Kluczowych odpowiedni wpis jest w sylany do elektronicznej maszyny do pisania w celu wydrukowania, Plytka Arduino jest polaezona z ukladem Klawiatury tej maszyny, dzieki czemu moze emulowaé proces wpisywania tekstu przez prawdziwego uzytkownika (patrz ry- sunek 1.6). (Wigcej informacji na temat projektu mozna znaleZé na stronie Aitp:/foomlout.co.uk/blog/twitter-monitoring-typewritter-twypwriter/), Rozdziat | Rysunek 1.5. Plansza do Sudoku zlozona z cyfrowych lamp jarzeniowych Rysunek 1.6. Urzqdzenie TwypeWriter To tylko kilka przypadkowo wybranych przykladéw ilustrujacych mozliwosei oferowane przez system Arduino. Kazdy z nas moze latwo tworzyé whasne projekty — po przeczytanin tej ksiqéki aden, nawet najbardziej zaawansowany projekt nie powinien sprawié wigkszego Mopotu, Werowadzenie 23 Popularnos¢ Czesci Populamnosé platformy Arduino rosnie kazdego dnia. Czytelnicy, ktérym najla- wie) przychodzi nauka w szerszym gronie, moga poszukaé w internecie stron dla hasta Cult of Arduino, aby poznaé osiagnigcia innych uaytkownikow i talic do grup pracujgcych nad projektami na bazie platformy Arduino. Czlonkowie tych grup nierzadko sq prawdziwymi artystami, ktérych pomyslowosé podczas bu- dowy projektw bywa naprawde zaskakujqca. Niekt6rzy z nich probuja nawet two- rzyé wlasne mate plytki zgodne z Arduino. Wspélpraca z tymi grupami moze hyé ciekawym doswiadczeniem, pozwoli poznaé interesujacych Indzi i umoéliwi dziclenie sig wlasn wiedzq na temat systemu Arduino z innymi hobbystami. i akcesoria Jak kazde urzadzenie elektroniczne, plytka Arduino jest dostepna w wielu skle- pach detalicmych, ktore oferuja szeroka game produktéw i akcesoriw, Praed dokonaniem zakupu warto sig upewnié, ze przedmiotem transakeji rzeczywis jest oryginalna plytka Arduino, nie jedna z jej podrébek. W przeciwnym razie urzadzenie najprawdopodobniej nie bedzie dzialalo prawidlowo lub bedzie du- 20 mniej wydajne. W dluzszej perspektywie budowa projekt6w na bazie taiszych zamiennikéw moze sig okazaé drozsza niz w przypadku stosowania oryginal. nych komponent6w. Liste dostawedw plytki Arduino mozna znaledé na stronie Iittp:/larduino.cclen/Main/Buy/. Ponizsza lista zawiera spis aktualnie dzialajqcych sklepow (w kolejnosei alfa- hetycze}), ktére sam moge polecié jako dostawe6w czesci i akcesori6w dla plat- formy Arduino: Adafruit Industries (http.//www.adafruit.com/) DigiKey (hitp:/www.digikey.com/) Jameco Electronics (http://twww.jameco.com/) Little Bird Electronics (hitp://www.litilebirdelectronics.com/) Newark (hutp://www.newark.com/) nicegear (http.//www.nicegear.co.nz/) Oomlout (hitp://www.oomlout.co.uk/) RadioShack (http://toww.radioshack.com/) . . . . . . . . BRS Components (htip://vww.rs-components.com/) . SparkFun Electronics (littp://exwee.sparkfun.com/) Jak latwo stwierdzié podezas lektury dalszej czeSci tej ksiaZhi, poshiguie sie wieloma produktami zgodnymi z platforma Arduino zakupionymi w sklepie Freetronies (http://www freetronics.com/). Wszystkie niezbedne komponenty sq jednak dos¢ populame, zatem mozna je bez trudu znalezé ake w imnych sklepach: 24° Rozdzial | Nie nalezy jednak spieszyé sig z zakupami. Zachgcam najpierw do przeczy- tania pierwszych kilku rozdzialow, ktére pozwola lepiej zrozumieé, co naprawde hedzie potrzebne do realizacji wlasnych projektéw — w ten sposéb mozna unikngé nieprzemyslanego kupowania zbednych produktéw: Wymagane oprogramowanie UWAGA Do programowania systemu Arduino wystarczy dowolny komputer z zainstalo- wanym oprogramowaniem, ktére zwykle okresla sig mianem zintegrowant Srodowiska programowania (ang. integrated development environment — IDE) Warunkiem uruchomienia tego oprogramowania jest dysponowanie jednym z na- stgpujacych systeméw operacyjnych: Mac OS X lub nowszy; H_ Windows XP (32- lub 64-hitowy) lub nowszy; Linux (32- lub 64-bitowy), dystrybucja Ubuntu lub podobna. Warto teraz pobraé i zainstalowaé to srodowisko IDE, zatem powinienes od razu przejs¢ do punktu poswigconego wlasciwemu systemowi operacyjnemu i po- stepowaé zgodnie z instrukcjami w tym punkcie. Warto tez sprawdzié, czy dyspo- nujesz przewodem USB potrzehnym do polgczenia platformy Arduino z kom- puterem, i — w razie jego braku — dokupié odpowiedni przewod. Nawet udytkownicy, ktérzy nie majq jeszeze plytki Arduino, moga bez trudu pobraé Srodowisko IDE i zapoznaé sig z jego mozliwosciami. Poniewaz numery wers srodowiska IDE sa dosé ezesto zmieniane, wersje opisane w tej ksigzee moga byé inne niz numery biezqcych wersji, jednak same procedury instalacji powinny pozostaé identyezne. Jud po praekazaniu oryginalnego wydania tej ksiqki do druku wystqpily pewne problemy zwiqzane = instalaciq w systemic Windows 8, Uzytkownicy systema Win- dows 8 powinni odwiedzi¢ forum poswigcone platformie Arduino (hitp://arduino.ce/ forwnjindex.php/topic,91651.15hin)), na ktdrym wyjasniono problem i zasugero- wano odpowiednie rozwigzania. System Mac OS X W tym podpunkcie opisano procedure pobierania i konfiguracji srodowiska Arduino IDE w systemie Mac OS X. Instalacja Srodowiska IDE Aby zainstalowaé srodowisko IDE w systemie Mac, nalezy wykonaé nastepujace kroki: W przegladarce internetowej (na przyklad Safari) nalezy otworzyé strong udostepniajaca wersje srodowiska IDE do pobrania pod adresem http://arduino.cclen(Main/Software/ (patrz rysunck 1.7). Werowadzenie 25 Arduino ~ Software Bio /arduno.cc/en/Main sofware € Ss Download Next steps Arduino .0 5 (lease notes, owed by Google Code Getting Started Reference + Windows sales, Windows AP file) Evironment ++ MacOSX Examples + soure rag Download Arduino 1.5 BETA (with support for Arduino Oue Board) Rysunek 1.7. Strona udostepniajqca srodowisko IDE do pobrania otwarta w przegladarce Safari 2. Nalezy Miknaé link Mac OS X. Rozpocznie sig pobieranie pliku. Postgp tego procesu i komunikat o pobraniu pliku bed widoczne w oknie Pobieranie (patrz rysunek 1.8). Pobleranie | _vymaz Rysunek 1.8. Informacja 0 zakoriczeniu pobierania pliku 3. Po zakoriczeniu pobierania nalezy dwukrotnie Kliknaé plik, aby rozpoczaé proces instalacji. Na ekvanie zostanie wySwietlone okno podobne do tego zrysunku 1.9. o arduing ©- fg ‘rou. app Applications ¥ FTowUSaSerilDriver_10.4_ 10.5.10.6mpkg Rysunek 1.9. Nowy folder srodowiska Arduino IDE 26 = Rozdzial |. UWAGA. Plik reprezentowany praez irsecig ikong na rysunku 1.9 wymaga instalacji tylko w sytuacji, gdy stosowana plytka Arduino jest starsza od obecnej wersji Uno. 4, Naledy przeciagnaé ikong Arduino nad folder Applications i zwolnié przycisk myszy. W takcie kopiowania tego pliku zostanie wyswietlone tymezasowe okno ze stanem tego procesu. 5. Nalezy teraz podlgezyé plytky Arduino do komputera Mae za pomoey przewodu. USB. Po lactkiej chwili zostanie wyswietlone olao dialogowe podobne do tego zrysunku 1.10. Anew network interface has been detected. ‘he’tleven _“netort interface hs not bee a TOY TeSce tp this interface, une Network reference, Canes) Coie) Rysunek 1.10. Komunikat o wykryciu plytki Arduino. W niektorych przypadkach komunikat moze wskazywa¢ urzqdzenie Uno (zamiast Eleven) 6. Nalezy teraz Milnaé przycisk Network Preferences..., a nastepnie przycisk Apply (w wyswietlonym oknie Network). Komunikat o statusie not configured mozna zignorowaé. Konfiguracja srodowiska IDE Po pobranin srodowiska IDE nalezy wykonaé nastepujace kroki, aby otworzyé i skonfigurowa¢ to srodowisko: 1. Naledy otworzyé folder Prograny w programie Finder (patrz rysunek 1.11), a nastepnie dwukrotnie Kliknaé ikong Arduino.app. @00 BiPearamy ] GAs om (#-)(a- @ IB vary mj Bw e Ai Bi tiorko ‘bum 2 ‘App Storeapp ‘Arouino.app 5 Dotumeny ata (Gi Pobrane rzeczy Giri a @ @ Simons € oy i obrasks ‘Auromaterape ——Dashboardapp ——_—FaceTimeapp Rysunek 1.11. Folder Applications 2. Na ekranie moze sig pojawié okno z ostrzezeniem o otwieraniu aplikacj pobranej z internetu. W takim przypadku nalezy kliknaé przycisk Ottedr aby kontynuowaé. Na ekranie zostanie wyswietlone zainstalowane srodowisko IDE (patrz rysunek 1.12). Werowadzenie 27 ch bea ao CT 25 11+] a Rysunek 1.12. Srodowisko IDE w systemie Mac OS X 3. Proces konfiguragji jest juz prawie zakoniezony — do praygotowania srodowiska Arduino IDE do pracy wystarcza juz tylko dwa kroki. Po pierwsze, nalezy okresli¢, do ktérego gniazda podlaczono plytke Arduino. W tym celu nalezy wybraé opeje /dev/tty.usbmodem 1d 11 z menu Narzedzia/Port szeregowy (patyz rysunek 1.13). Sakic Pomoc. mo ‘Automatyczne formatowanie xT ‘Acchiwizu) s2kic Napraw kodowanie i zataduj ponownie Monitor portu szeregowego omM Eee a > (sev/eunusbmodemia) rogramator ‘dev/tty Bluetooth-POA-Sync Mivpal Beotlosdes Idev/cu.Bluetooth-PDA-Sync /dev/tty.Bluetooth-Modem Idev/cu.Bluetooth-Modem Rysunek 1.13. Wybér portu USB 4, Ostatni krok polega na okresleniu, kt6rq wersje plytki Arduino podtgezono do komputera. To bardzo wazne, poniewaz réznice dzielace poszezegélne modele sq dos¢ istotne. Uzytkownicy dysponujacy najbardziej popularnym: modelem Uno powinni wybraé opeje Narsedzia/Plytka/Arduino Uno (patyz rysunek 1.14). R6znice dzielgce poszczegélne plytki Arduino zostang szezegdlowo wyjasnione w rozdziale 11. Sprzgt i oprogramowanie sq teraz gotowe do pracy. Usytkownicy systemu Mac OS X mogg przejé¢ do podrozdzialu ,Bezpieczehstwo” na koficu tego ro2- dialu, 28 = Rozdzial | Sekic ETETZETN Pomoc. SQ 2 Tw127AM_Q ‘Automatyczne formatowanie xT ‘Archiwizuj szkic Napraw kodowanie | zaladu) ponownie Monitor portuszeregowego XM NL + 20 Uro Arduino Duemilanove w/ATne92328 Arduino ecm or Duxmtanove ATega168 Ardine Nano) Afmega328 Arduino Novo! Atmegat68 Arduino Mega 2860 oF Megs ADK Arduino Mega ixTmegal280), Arduino ona Epon wee Min ATmega328 Mw ATmege68 Adain Erne Acai Fe Arduino BT ATme93328 Arding BT w ATmegal68 tive Arun US Liye Arduino w/ATmepa328 Lined Arduino w ATmegales frduin reo Pv in (X16 Mie w/ ATneg328 Arduino Pre or ro Mm V, 16 Mia w/ ATneg68 Adin Poor re Mn (5V, 8 mew ATmegs28 Arduino Pre or ro Mimi 3V. 8 Mike w/ A mega Adana NG or older w/ ATmeaalS8 fdaino NG or elder aT mega Fl Nobel Cd Arduino Robot Netor Programator > \Wypal Bootloader Rysunek 1.14. Wybér wlasciwej wersji plytki Arduino System Windows XP i nowsze W tym podpunkcie opisano procedure pobierania oprogramow: sterownika i konfiguracji srodowiska IDE w systemie Windows. ia, instalacji Instalacja srodowiska IDE Aby zainstalowaé srodowisko Arduino IDE w systemie Windows, nalezy wykonaé nastepujace kroki: 1. W przegladarce internetowej (na przyklad Firefox) nalezy otworzyé strong udostgpniajaca wersjg Srodowiska IDE do pobrania pod adresem hitp://arduino.cclen/Main/Software] (patrz rysunek 1.15). 2. Nalezy Kliknaé link Windows (ZIP file). Przegladarka wyswietli olno dialogowe podobne do tego z rysunku 1.16. Nalezy wybraé opejg Ottwérz za pomocq Eksplorator Windows, a nastepnie Kliknaé praycisk OK. Postep proces pobierania pliku mozna wySwietli¢, Klikajac ikong Pokas okno pobierania plikew (patrz rysunek 1.17). 3. Po zakoniczeniu pobierania nalezy dwukrotnie Miknaé plik — na ekranie zostanie wyéwietlone okno podobne do tego z rysunku 1.18. Werowadzenie 29 D vine Settee E.G wainocce isnot Download Next steps Arduino 0 lease notes), hosted by Google Code: ttng Stated Reference “+ Windows Installer, Windows (21 le) aa + MacOSX : amples 4 Limo gobi, 6 bit Q + rooree Download Arduino 1.5 BETA (with support for Arduino Due Board) you have the new Due Board you mast download the 12 version, Once you gt the softwar follow hi Download “yp: Compras app Fle 929 6) re part eogcodcer Posten pens: Asinino 105 ome [note =) © pe apm te cee stich ow ge ps (ence) (atztiad © Artin Sete 8 wtinaeei eo! . ‘wane DS intense Download ‘Arduino .0.(viasond Peotone en 97792908 + Windows stale, amie wate pebans 4 MacOSX. LE Err + Lino gobi, 6 bit - + soure ne Download Arduino 1.5 BETA (with support for Arduino Due Board) you have the new Due Board'you must downlad the 15.2 version Once you get the softrare follow thi. a oooaaaaa=aNDTDYT.)” : Rysunek |.17. Praeglagdarka Firefox wyswietlajgca postep pobierania pliku 30° Rozdzial 1. Ving Dat &¢ oweter Es priya Omieniipe| | Ge Felder omer 4 Wzesziym tygedniu 7) atdino-105-nindows Dts 6-031955, Rysunek 1.18. Pakiet srodowiska IDE 4, Folder nazwany arduino-1.0.5 (lub podobny, zaleznie od wersji) nalezy skopiowaé w miejsce przechowywania aplikacji. Po skopiowaniu foldern nalezy przejsé do miejsca docelowego i znale%é ikong aplikacji Arduino (patrz rysunek 1.19). Aby ulatwié dostep do aplikacji w przyszlosci, warto umiescié skréot do pliku aplikacji na pulpicie systemu Windows. OTE = opie Cy wes +] 9] Prey over 1 (rg ~ ih Ob Neg Nowy oe, poe a al ere Sap eee eee i Dpktany (a 2 | | Bisncrayaonds_ tence oak ate oan? giana | arise Sears msa605 158 te cre: 1505-17 228, Rysunek 1.19. Folder srodowiska IDE z zaznaczong ikong aplikacji Arduino Instalacja sterownikow Nastepne zadanie polega na instalacji sterownikéw interfejsu USB plythi Arduino. 1. Nalegy teraz podlaczyé plytke Arduino do komputera PC za pomaca przewodu USB. Po krotkiej chwili zostanie wyswietlony komunikat 0 bledzie (z informacja Sterownik urzqdzenia nie zostal poprawnie zainstalowany Tub podobna). Wystarczy 2amknaé to okno dialogowe lub chmurke. 2. Nalezy otworzyé Panel sterowania systemu Windows. Po otwarciu Menedera urzadzei nalezy przewina¢ liste w dol i znalez¢ pozycig reprezentujaca plytke Arduino (patrz rysunek 1.20). Wprowadzenie 31 Pik Aksja Widek Pomoc @9|n/ 0! a le p Inne uradzenia th Arduino UNO Kary grafiezne © Karty seciowe S Ktewiatury Rysunek 1.20. Menedzer urzqdze 3. Nalezy Klikngé element Arduino Uno w sekeji Inne urzadzenia i wybraé z menu kontekstowego opcj¢ Aktualizuj oprogramowanie sterownika W wyswietlonym okie dialogowym nalezy wybraé opcjg Preegladaj md komputer w poszukiwaniu oprogramowania sterownika. Po wyswietleniu nastepnego okna dialogowego nalezy Kliknaé przycisk Przegladaj i praejsé do folderu drivers w nowo zainstalowanym folderze srodowiska Arduino IDE (patrz rysunek 1.21). Nalezy teraz kliknaé przycisk OK. Pup oy Biblte 8 Grupa domows B Amel Ul Uveaiedn posfeldery |) | 4188 Komputer 2B Dyskoalny (2) 4 ardvinesns ‘amples tarde > Pozwél mi wybt komputerze Uta aera zinta i a Rysunek 1.21. Lokalizacjo folderu drivers 4, W nastepnym oknie dialogowym nalezy Klikngé przycisk Dalej. System Windows moze teraz wyswiellié komunikat o braku modliwosei werylikacji wydawey oprogramowania sterownika, W takim przypadku nalezy Klikngé przycisk Mino to instaluj ten sterownik. Po kxétkie] chwili system Windows poinformuje uzytkownika 0 zakoficzeniu instalaeji sterownika i wyswietli numer portu COM, do kt6rego podlgczono plytky Arduino (patrz rysunek 1.22) Rozdziat | Gb Upte ive Stare ding UND RS (COMI) Windows has successfully updated your driver software Rysunek 1.22. Komunikat o prawidtowej aktualizacji sterownikéw Konfiguracja srodowiska IDE Proces instalacji i konfiguracji jest juz prawie zakonezony — do zakonezenia konfiguracji srodowiska Arduino IDE wystarcza dwwa kroki. 1. Nalezy otworzyé srodowisko Arduino IDE. Uzytkownik musi wskazaé srodowisku IDE rodzaj gniazda, do kt6rego podlaczono plytke Arduino —w tym celu nalezy kliknaé port Narzedzia/Port szeregowy, a nastepnie wybraé numer portu COM zgodnie z komunikatem wyswietlonym podezas aktualizacji sterownika. y Ostatni krok polega na okresleniu, ktéra wersje plytki Arduino podlaczono do komputera. To o tyle waine, Ze r6zne modele plytki Arduino zasadniczo r6inia sig od siebie. Uzytkownicy dysponujacy Uno powinni wybraé opcjg Narzedzia/Plyika/Arduino Uno. Rémice dzielace poszczegélne plytki Arduino zostana szczegélowo wyjasnione w rozdziale 11 Po skonfigurowaniu srodowiska Arduino IDE mona przejéé do podroz- dziahu ,Bezpieczeristwo” w dalszej czeSci tego vozdzialu. System Ubuntu Linux 9.04 i nowsze Ponizsze instrukeje przygotowano z myslq 0 uzytkownikach systemu Ubuntu Linux, ktérzy cheq pobraé i skonfigurowaé srodowisko Arduino IDE. Instalacja srodowiska IDE Aby zainstalowaé srodowisko IDE, nalezy wykonaé nastepujace kroki: 1. W przegladarce internetowej (na przyklad Firefox) trzeha otworzyé strong udostepniajaca, wersje srodowiska IDE do pobrania pod adresem hutp://arduino.cclen/Main/Software] (patrz.rysunek 1.23). 2. W zale¢mosei od stosowanego systemu nalezy klikna¢ link 32-bit hub 64-bit obok slowa Linux. Po wyswietleniu okna dialogowego podobnego do tego zrysunku 1.24 nalezy wybrac opeje Otwérz za pomocq Menedéer archiwow i klikngé przycisk OK. Wprowadzenie 33 34 err se ra) [@ arduino-softuare © [B arduino.ce ACCC Download Arduino 1.05 (release notes), hosted by Google Code: “© Windows Insta, Windows (ZIP file) + MacOS Xx + Limo 32 bit 64 bit Rysunek 1.23. Strona udostepniaigca srodowisko IDE do pobrania otwarta w przegladarce Firefox w systemvie Ubuntu Ener Rozpoczeto pobleranie pk (@ arduino-1.05inuxsagz “Typ pliku: Archiwum gap (21,0MB) ‘Adres: tp: farduina.googlecode-com Po zakofczenlu pobleranla: (© (otuérzza pomocg | Menedter archinéw (domysley) zapise plik Zapamigta)te decyre dla wszysthich pikOwtego typa An OK Rysunek 1.24. Pobieranie pliku 3. Po pobraniu pliku archiwum zostanie wyswietlone w programie Archive Manager (patrz.rysunek 1.25). Folder nazwany arduino-1.0.5 (lub podobny, zaleinie od wersji) nalezy skopiowaé w miejsce przechowywania innych aplikacji lub do folderu domowego. errs reer Sy eee oe) @ | Pototenie: [ia Nazwa + Rozmiat hp Data modyfikaci lim erduino-s05 619MB—atolog 17 maj2012, 18:22 1 obiekt (61,9 mB) Rysunek 1.25. Pakiet srodowiska IDE Rozdziat | Konfiguracja srodowiska IDE Nalez y jeszeze skonfigurowaé srodowisko IDE 4. W pierwszym kroku nalezy podlaezyé plytke Arduino do komputera PC za pomoca przewodu USB. Poniewaz w tym kroku trzeha uruchomié srodowisko Arduino IDE, nalezy znalezé skopiowany wezesniej folder arduino-1.0,5 i dwakrotnie kliknaé plik arduino (patrz rysunek 1.26) a a | Oe =a = = "mm -@ = Rysunek 1.26. Folder srodowiska IDE z zaznaczonym plikiem arduino 2. Jesli zostanie wyswietlone okno dialogowe podobne do tego z rysunku 1.27, nalezy kliknaé praycisk Uruchom, aby uruchomié srodowisko IDE (patrz rysunek 1.28). Gale enn ore ocrajwcerminla, | wysate (an) (ORRRERE Rysunek 1.27. Nadawanie uprawnier uruchamiania srodowiska IDE eonun Rysunek 1.28. Srodowisko IDE w systemie Ubuntu Werowadzenie 35 3. Po uruchomieniu srodowiska IDE nalezy jeszcze okresli¢ rodzaj gniazda, do kt6rego podlgczono plytky Arduino. Z menu Narzedzia/Port szeregowy nalezy wybraé opeje /den/ttyACMx, gdzie x to pojedyneza cyfra (zwykle jest dostepny tylko jeden port z taka nazwa). 4, Nalezy nastepnie okreélié, kt6rq wersje plytki Arduino podlgezono do komputera. To 0 tyle wazne, ze r6zne modele plytki Arduino zasadniczo r6inig sig od siebie. Uzytkownicy dysponujacy Uno powinni wybraé opcig lzia/Plytka/Arduino Uno. Roanice dzielace poszezegdlne plytki Arduino zostang szczegdlowo wyjasnione w rozdziale 11 Sprzet i oprogramowanie sa teraz gotowe do pracy: Bezpieczenstwo Jak przy kazdym hobby czy pracy, takze w tym przypadku tylko od nas zalezy hezpieczeristwo nasze i osdh w naszym otoczeniu. W tej ksigzce hedg omawial metody realizacji projekt6w przy uzyciu prostych narzedzi recznych, urzqdzen elektryeznych zasilanych bateriami, ostrych nozykéw i przecinakow, a w niekté- rych przypadkach takze lutownicy. Zaden z projekt6w nie bedzie wymagal bez- posredniej ingerencji w urzadzenia zasilane pradem o napigciu sieciowym, Za- dania tego rodzaju nalezy pozostawié elektrykom dysponujaeym odpowiednimi uprawnieniami i doswiadezeniem. ‘Tizeba pamigtaé, Ze kontakt z pradem siecio- wym moze doprowadzié do smierci. Co dalej? 36 Przed nami mndstwo zabawy i eickawa przygoda — bedziemy tworzyli rzeczy, Ktore wiekszosci z nas do tej pory wydawaly sig niemodiwe do zbudowania. W tej Isigzce opisze 65 projekt6w na bazie plyti Arduino, od bardzo prostych do dose skomplikowanych. Wszystkie te rozwiqzania zaprojektowano z mysla o ulatwianiu konkretaych czymnosei. Do dziela! Rozdziat | Pierwsze spojrzenie na ptytke Arduino i Srodowisko IDE W tym rozdziale przyjrzymy sie blizej plytce Arduino oraz oprogra- mowaniu (srodowisku IDE), ktére bedzie sluzylo do wysylania szkicow (ang. sketch; tak sq nazywane programy pisane dla tej platformy) na sa- ma plytke Arduino. Oméwig podstawowy szkielet szkicu oraz kilka pro- stych funkeji, kt6re mozna implementowaé w ramach szkicéw. Na koficu tego rozdzialn stworzymy i wyslemy pierwszy wspélny szk Ptytka Arduino Czym dokladnie jest Arduino? Zgodnie z defi ’ ja na oficjalnej stronie inter netowej Arduino (http://towt.arduino.cel): Arduino jest platforma open sour » do tworzenia prototypéw elektronicznych zhudowana na bazie elastycanego, latwego w wéycin sprzetn i oprogramowania, Platforme stworzono z myslq o artystach, projektantach, hobbystach i wszyst- kich, ktérzy sq zainteresowani budowg interaktywnych obiekt6w lub srodowisk. 38 Méwiae najprosciej, Arduino jest miniaturowym systemem komputerowym, ktory mozna programowaé za pomocg odpowiednich instrukeji w celu operowa- nia na danych wejsciowych i wyjSciowych w najrézniejszych formach. Dostepny obecnie model plytki Arduino (nazwany Uno) jest stosunkowo maly — duzo mniejszy niz przecigina dloh doroslego czlowieka (patrz rystmek 2.1), Rysunek 2. |. Plytka Arduino Uno jest dose mala System Arduino, mimo Ze na pierwszy rzut oka sprawia dosé niepozorne wra- Zenie, umotliwia tworzenie urzadzef zdolnych do interakeji ze Swiatem zewnetr2- nym. Dzigki mozliwosci lgczenia tego systemu z niemal wszystkimi dostepnymi urzadzeniami wejSciowymi i wyjsciowymi (czujnikami, wskaZnikami, wyswietla- czami, silnikami itp.) konstruktor moze zaprogramowaé wszystkie interakcje nie- zhedne do stworzenia funkcjonalnego rozwigzania. Na przyklad artySci wyko- rzystali te platiorme do budowy instalacji z migajacymi swiatlumi reagujqcymi na ruch przechodniéw. Uczniowie szkoly sredniej zbudowali autonomiczny r0- bot wykrywajacy i gaszacy plomienie. Geografowie zaprojektowali systemy moni- torowania temperatury i wilgotnosci (gromadzone pomiary byly wysylane do biura w formie wiadomosci tekstowych). Wystarezy poswiecié chwile na przeszukanie internetu, aby znaleaé mnéstwo innych, réwnie zaskakujacych przyadéw. Przejdémy teraz do bliészej analizy sprzetu sktadajgcego sie na plytke Arduino Uno (tzw. elementéw fizycznych tego systemu). W razie probleméw ze zrozumie- niem przeznaczenia opisywanych tutaj element6w nie ma powodu do zmartwies, poniewaz wszystkie te komponenty zostana bardziej szezegélowo oméwione w dal- szych rozdzialach tej ksiaghi. Rozdzial 2. Zacanijmy od przegladu najwaéniejszych komponentéw na plytee Uno. Z le- wej strony plytki sq dostgpne dwa zlgcza (patrz rysunek 2.2). Rysunek 2.2. Port USB i zlgcze zasilania Z lewej strony zamontowano zlacze USB (od ang. universal serial bus). Zlae cze to spelnia trzy wazne zadania: zapewnia zasilanie plytki, wysyla instrukeje do systemu Arduino lub wysyla dane z i do komputera. Po prawej stronie zain- stalowano zlqcze zasilania. Za posrednictwem tego ztgcza mozna zasilaé plytke Arduino, stosujgc standardowy zasilacz sieciowy. W srodkowej ezesci (nieco blizej dolnej krawedzi) zainstalowano serc czyli mikrokontroler (patrz rysunek 2.3). plytki, Rysunek 2.3. Mikrokontroler Mikrokontroler jest .mézgiem” platformy Arduino. To miniaturowy kompu- ter obejmujqcy procesor (odpowiedzialny za wykonywanie rozkaz6w), zawierajq- cy réime typy pamieci (w ktérych sq przechowywane dane i instrukcje zapisane w szkicach) oraz obslugujqcy wiele kanal6w wysylania i otrzymywania danych. Bezposrednio pod mikrokontrolerem znajduja sig dwa wiersze malych gniazd (patrz rysunek 2.4). Pierwszy wiersz udostepnia polaczenia zasilania i umodliwia podlaczenie zewnetrznego przycisku RESET. Drugi wiersz oferuje szesé wejsé analogowych praydatnych podezas mierzenia sygnaléw elektryemych ze zmieniajgcym sie napieciem. Co wiecej, piny Ad i AS moga byé uzywane takze do wysylania danych do innych urzadzen i odbierania danych od tych urzadzefi. Pray gérnej krawe- dzi plytki zamontowano dwa dodatkowe wiersze gniazd (patrz rysunek 2.5). Pierwsze spojrzenie na plytke Arduina i rodowisko IDE 39 Rysunek 2.4. Gniazda zasilania i analogowe - i D2 ee ate) 1 iy en at Rysunek 2.5. Piny wejse i wyjse cyfrowych Gniazda ozaczone etykietami od 0 do 13 pelnig fankejg pindw wejécia- wyjécia (I/O). Za posrednictwem tych pin6w moéna albo wykrywaé sygnaly elektryczne, albo generowaé te sygnaly na potrzehy innych wnzadzeni. Piny ozna- czone numerami 0i 1 dodatkowo pelnia funkeje portn szeregowego, ktéry umoz liwia wysylanie danych do innych urzadzen i odbieranie danych od tych urzadz (podobnie jak w przypadku zlqeza USB uzywanego do komunikacji z komput rem). Piny oznaczone znakiem tyldy (~) moga dodatkowo generowaé sygnaly elektryezne o réiych napigciach, ktére sq przydatne na przyklad podezas ge~ nerowania efektw swietInych lub sterowania silnikami elektrycznymi. Na plytce momma tez malezé bardzo przydatne elementy nazywane diodami LED (od ang. light-emitting diodes). Te niewielkie wzadzenia swieca, gdy prze- plywa przez nie prad. Na plytce Arduino zainstalowano cztery diody LED: jedna Z prawej strony (oznaczona etykieta ON i wskazujaca zasilanie calej plytki) oraz tuzy w odrebnej grupie (patrz rysunek 2.6). Rysunek 2.6. Diody LED na plytce Arduino 40 Rozdziat 2. Diody LED oznaczone etykietami TX i RX Swieca odpowiednio w czasie wysylania i odbierania danych przez system Arduino za posrednictwem portu szeregowego i zlgcza USB. Dioda LED oznaczona litera 1. jest dostepna dla programisty (jest polaczona z pinem cyfrowym wejscia-wyjscia nr 13). Niewielki czarny prostokat na lewo od diod LED to mikrokontroler sterujacy interfejsem USB — to dzieki niemu plytka Arduino mode wysylaé dane do komputera i od- bieraé dane z komputera bez potrzeby kazdorazowego implementowania roz- wigzai niskopoziomowych. I wreszcie na rysunku 2.7 pokazano przycisk RESET. Rysunek 2.7. Praycisk RESET Tak jak w przypadku tradycyjnych komputeréw, takze w systemie Arduino: czasem co$ nie idzie po naszej mysli — jesli zawodza wszystkie inne rozwigza- nia, nalezy zresetowaé i ponownie uruchomié system Arduino. Przycisk RESET na plytce Arduino (patrz rysunek 2.7) sluzy wlasnie do ponownego uruchami: nia systemu w cel rozwizywania powaznych probleméw. Jedna z najwiekszych zalet systemu Arduino jest latwosé jego rozszerzania, czyli dodawania fizycenych urzqdzeh wprowadezajacych nowe funkcje. Dwa wier- sze gniazd po obu stronach plytki Arduino umodliwiaja podlyczanie do systemu taw. moduléw, czyli dodatkowych plytek z odpowiednio rozmierzonymi pinami. Na przyklad na rysunku 2.8 pokazano modul zawierajgcy interfejs sieci inter- netowej (Ethernet), dzigki ktéremu system Arduino moze sig komunikowaé za posrednictwem sieci lokalnej lub internetu. Modul dodatkowo oferuje sporo miejsca dla ewentualnych niestandardowych obwod6w. Rysunek 2.8. Modut sieciowy zainstalowany na plytce Arduino Pietwsze spojrzenie na plytke Arduino i srodowisko IDE 41 Warto zwrécié uwage na wiersze gniazd dostepne takze na tym module. Dzigki nim istnieje motliwosé dodawania kolejnych modutéw ponad modulem sieciowym. Na rysunku 2.9 pokazano przykladowa strukturg obejmujaca dodat- kowy modul z duzym wyswietlaczem, ezujnikiem temperatury, dodatkowa pa- migcia oraz wielka dioda LED. Rysunek 2.9. Modul z wyswietlaczem cyfiowym i czujnikiem temperatury Warto podkreslié, ze to do uzytkown wykorzystanie poszczegélnych pinéw wejsciowych i wyjsciowyeh przez insta- lowane moduly, tak aby nie dochodzito do konflikt6w pomigdzy tymi urzadzenia- mi. Istnieje tez mozliwos¢ dokupienia zupelnie pustych plytek, na ktorych kazdy mode budowaé wlasne obwody. Do tego zagadnienia wrécimy w rozdziale 8. Waimym uzupelnieniem dla komponent6w sprzgtowych skladajacych sig na latformy Arduino jest oprogramowanie, czyli zbi6r instrukcji okreslajacych, co jak ten sprzet ma robié. Oprogramowanie dzieli sig na dwa typy: pierwszym z nich jest zintegrowane srodowisko programowania (IDE), kt6re zostanie omé- wione w dalszej czeSci tego rozdzialu; drugim typem sq szkice platformy Arduino tworzone przez samych uzytkownikow. Srodowisko IDE, ktére nalezy zainstalowaé na zwyklym komputerze, do przygotowywania szkicéw i wysylania ich na plytke Arduino. ca systemu nalezy zwracanie uwagi na luzy Wprowadzenie do srodowiska IDE Srodowisko programowania Arduino IDE przypomina prosty edytor tekstu (patz rysunek 2.10). Okno srodowiska zostalo podzielone na trzy glowne obszary: obszar polecen, obszar tekstu i obszar komunikatow. 42 Rozdziat 2. @ <0 0 lece : COE o = tlementy menu a i] tkony obs weiss Obszar “|< + komunikatow Rysunek 2.10. Srodowisko programowania Arduino IDE Obszar polecen Widoczny na rysunku 2.10 obszar poleceti obejmuje pasek tytutu, elementy memu oraz ikony. Pasek tytulu wyswietla nazwe pliku szkicu (w tym przypadku sketch_jun06a) oraz wersj¢ samego Srodowiska IDE (w tym przypadku Arduino 1.0.5). Pod paskiem tytulu sq dostepne elementy menu (Plik, Edycja, Szkic, Na- reedzia i Pomoc) oraz ikony — poszczegélne elementy tych sekeji zostana opisane ponize} Elementy menu Tak jak w przypadku edytor6w tekstu, takze w Srodowisku Arduino IDE uzyt- Kownik moze Klikngé jeden z element6w menu, aby wySwietlié dostepne opcje. Menu Plik zawiera opcje umodliwiajace zapisywanie, ladowanie i drukowa- nie szkicéw, hogaty zbi6r przykladowych szkicéw dostepnych do otwarcia oraz wading ope)g Preferencje. Menu Edycja obejmuje standardowe fimkeje kopiowania szukiwania (znane z edytoréw tekstu). whlejania i prze- Menu Szkic zawiera polecenia weryfikacji szkicu przed wyslaniem na plytke oraz opcje folderéw szkic6w i importowania bibliotek. Menu Narzedsia zawiera réine funkeje i polecenia umodliwiajace wybor typu plytki Arduino oraz portu USB. Pierwsze spojrzenie na plytke Arduina i rodawisko IDE 43 44 Menu Pomoc zawiera linki do rozmaitych temat6w ulatwiajgcych prace 2e srodowiskiem IDE oraz opcig wySwietlania biezace] wersji tego Srodowiska. Ikony Pod menu znajduje sig szes¢ ikon. Umieszczenie kursora myszy nad kaédq 2 tych ikon powoduje wySwietlenie jej nazwy. Poszezegéne ikony (od lewej strony) opisano ponizej Werufikuj — kliknigcie tej ikony powoduje sprawdzenie, czy szkic systemu Arduino jest prawidlowy i nie zawiera bledéw programistycznych. Zaladuj — Klikniecie tej ikony powoduje sprawdzenie szkicu i wystanie go na plytke Arduino, Nowy — Kiknigcie tej ikony powoduje otwarcie nowego, pustego szkicu wnowym oknie. Otwérz — ta ikona umoiliwia otwarcie zapisanego szkicu. Zapisz — Kliknigcie tej ikony powoduje zapisanie otwartego szkicu. Jesli wezeSniej nie okreslono nazwy tego szkicu, uzytkownik zostanie poproszony 0 jej podanie. Monitor portu szeregowego — Miknigcie tej ikony powoduje otwarcie no- wego okna prezentujacego dane wysylane pomigdzy plytka Arduino a sro- dowiskiem IDE. Obszar tekstu Obszar tekstu (widoczny w srodkowej czesci zrzutu z rysunku 2.10) jest w istocie miejscem tworzenia szkicéw. Nazwa biezacego szkicu jest wyswietlana w za- Kladce w lewym g6rym rogu obszaru tekstu. (Domyshna nazwa zawiera hiezqcq date). Kod szkicu mozna wpisywaé dokladnie tak, jak wpisuje sig tekst w edyto- ze tekstu Obszar komunikatéw Obszar komunikatéw jest widoczny w dolnej czesci rysunku 2.10. Komunikaty srodowiska Arduino IDE sq wyswietlane wlasnie w tym ezamym polu. Widoczne komunikaty sq uzaleznione od biezqcej sytuacji i obejmnjq informacje 0 weryli- kacji szkic6w, aktualizacjach stanu srodowiska itp W prawym dolnym rogu obszaru komunikatéw jest wyswietlana nazwa sto- sowanej plytki Arduino oraz numer portu USB, do kt6rego ta plytka zostata podlaczona (w tym przypadku odpowiednio Arduino Uno i COMI). Rozdzial 2. Tworzenie pierwszego szkicu w srodowisku IDE 'UWAGA 1u Arduino ma postaé zbioru instrukcji przygotowanych z mysla 0 re= alizaeji okreslonego zadania. Inaczej méwige, szkic jest programem. W tym pod- rozdziale zostanie utworzony i wyslany na plytke Arduino prosty szkic powo- dujacy miganie diody LED na tej plytce (pat rysunek 2.11). Dioda bedzie whgczana i wylqezana w 1-sekundowych odstepach. Rysunek 2.11. Dioda LED na plytce Arduino (obok wielkiejlitery L) Jesli nie rosumiess poszezegdlnych polecen: w ramach szkicu, nie m do smartwier. Moim celem w tym podrozdziale jest tylko mozna spowodowaé okreslone dzialania plytki Arduino — chcialbym, aby ta prosta prezentacja byla zachetq do dalszej lektury i poznawania bardziej zloxonych roxwigzan. W pierwszym kroku nalezy podlaczyé plytke Arduino do komputera za po- moca przewodu USB. Nalezy nastepnie otworzyé srodowisko IDE, wybraé opejg Narzedzia/Port szeregowy i sprawdziG, czy zostal wybrany odpowiedni port USB. Dzicki temu uzytkownik moze byé pewien, ze plytka Arduino jest prawidlowo podlaczona. Komentarze Warto zaczaé szkic od komentarza, ktory w przyszlosci bedzie przypominal, do czego sluzy ten program. Komentarz to notatka dowolnej dhugosci umieszezona w samym szkicu i napisana z myslq 0 uzytkownikach. Komentarze w szkicach 53 przydatng forma zamieszezania informacji zaréwno dla samego tworcy progra mu, jak i dla innych programistéw — w ten spos6b mozi pisywat w szkic instrukeje jego stosowania oraz rozmaite szezegély na temat d: mu. Podezas programowania plytki Arduino (tworzenia szkicéw) warto dodawaé komentarze opisujace intencje programisty. Takie komentarze beda cennym 2r6- dem informacji dla samego tworcy programy, jesli wréci do swojego szkicu po dluzszym czasie. Aby dodaé komentarz zajmujacy pojedynezy wiersz, nalezy umiesci¢é w ko- dzie dwa prawe ukosniki (//), a nastepnie wlasciwy komentarz: i tic Blink LED; autor: Mary Smith; data: 2012-09-09 Pierwsze spojrzenie na plytke Arduina i érodawisko IDE 45 46 Dwa prawe ukosniki informuja srodowisko IDE, Ze tekst nastepujacy po tych znakach ma byé ignorowany podezas weryfikacji szkicu. (Jak juz wspo- mnialem, weryfikacja szkicu polega na sprawdzenin przez srodowisko IDE, czy kod programu nie zawiera bledéw)) Aby umiesci¢ w kodzie komentarz zajmujacy co najmniej dwa wiersze, nalezy wpisaé sekwencje zakéw /* w wierszu poprzedzajacym komentarz oraz sekwen- cjg */ w wierszu nastepujqcym po komentarzu: /* Szkic Arduino Blink LED ‘autor: Mary Smith; data: 2012-09-09 */ Tak jak dwa prawe ukosniki powoduja ignorowanie nastepujacego po nich tekstu, tak symbole /* i */ sprawiaja, ze Srodowisko IDE ignoruje tekst pon dzy nimi, Po wpisaniu komentarza opisujacego przeznaczenie danego szkicu systemu Arduino (w jednej z opisanych powyzej form) nalezy zapisaé ten szkic, wybie~ rajac opcje Plik/Zapisz jako. Szkicowi nalezy jeszcze nadaé jakas krétka nazwe (na przyklad blinky), a nastepnie kliknaé przycisk Zapisz. Domyslnym rozszerzeniem plik6w ze szkicami systemu Arduino jest .ino — srodowisko IDE powinno automatycznie dodaé to rozszerzenie do nazwy pliku. Oznacza to, ze plik szkicu w tym przypadku zostanie nazwany blinky.ino (nowy szkic powinien byé widoczny w szkicowniku dostepnym w menu Plik). Funkeja setup() Nastepnym krokiem w procesie tworzenia kazdego szkicu jest dodanie funkeji void setup(). Funkeja zawiera 2hidr instrukeji wykonywanych przez. system Arduino tylko raz — bezposrednio po wlaczeniu lub ponownym wruchomieniu. Aby utworzyé funkejg setup(), nalezy umiesei¢ w szkicu (pod dodanymi weze- Sniej komentarzami) nastepujace wiersze: void setup() { } Sterowanie sprzetem Zadaniem programu jest wymuszenie migania diody LED na plytce Arduino, Dioda LED jest polaczona z pinem cyfrowym nr 13 platformy Arduino. Pin cy- frowy moze stuzyé alho do wykrywania sygnalu elektrycznego, alho do genero- wania takiego sygnatu na podstawie wydawanych polecet. W tym projekcie be dzie generowany sygnal elektryczny wlaczajacy diode LED. Na pierwszy rzut Rozdzial 2. OSTRZEZENIE oka operowanie na sygnalach przekazywanych za posrednictwem pin6w cyfro- wych moze sig wydawaé alozone, jednak wszystkie niezhedne techniki zostang, opisane w dalszych rozdzialach. Na razie skoncentrujmy sig na Wworzeniu pierw- szego szkicw. Nalegy teraz umiescié w szkicu nastepujacy kod pomiedzy dwoma nawiasa- mni Klamrowymi ({ oraz )) pinMode(13, OUTPUT); // wsfawia pin cyfrowy nr 13 jako wyjscie Liczba 13 na powyzszym listingu reprezentuje numer portu cyfrowego, ktérego dotyezy ta instrukeja. W tym przypadku program whaeza tryb danych wyjécio~ wych (0UTPUT) dla pinu nr 13, zatem wskazany pin hedzie stuzyt do generowania sygnal6w elektryeznych. Gdyby pin mial sluzyé do wykrywania przychodzacych sygnal6w elektrycanych, nalezaloby zastosowaé tryb INPUT. Warto zwrécié uwage na Srednik (;) na koricu wywolania funkeji pinNode(). Kazde wywolanie funkeji w szkicach systemu Arduino musi sig koficzyé srednikiem. Warto teraz ponownie zapisaé szkic, aby nie stracié efektéw dotychczasowej pracy. Funkcja loop() Musimy pamigtaé, ze celem tego szkicu jest ciggle miganie diody LED. Ozna cza to, ze naledy stworzyé funkejg 1o0p(), kt6ra spowoduje, Ze system Arduino hedzie wielokrotnie wykonywal instrukeje zapisane w szkicu do momentu odlq- czenia zasilania lub nacisniecia przycisku RESET. Aby utworzyé pusta funkejg 1oop(), kod wyrééniony pogrubieniem nalezy umiescié za fumkejg void setup(). Nowa funkejg koniecznie trzeba zakoniezyé pra- wym nawiasem Klamrowym (}). Uzupelniony szkic warto ponownie zapisa i Sekie Arduino Blink LED autor: Mary Smith; data: 2012-09-09 */ void setup() { pinMode(13, OUTPUT); // ustawia pin eyfrowy nr 13 jako wyjscie } void loop() { 1] tutaj nalety umiesci¢ kod gléwnej petli programu } Srodowisko liwie czesto samemu zapisywaé swoja prace! rduino IDE nie sapisuje sskicéw automatycanie, zalem warto mos Pierwsze spojrzenie na plytke Arduina i éredawisko IDE 47. 48 Nalezy teraz wypelni¢ funkcjg void Toop() wlasciwymi instrukejami, ktére eda wykonywane przez system Arduino. W tym celu trzeha umiescié nastepujacy kod pomigdzy nawiasami Klamro- wymi wyznaczajacymi granice tej funkeji. Po wpisaniu kodu warto klikngé ikong Weryfikuj, aby sprawdzié, czy nowe instrukeje sq prawidlowe: digitalWrite(13, HIGH); // wiqcza pin cyfrowy nr 13 delay(1000); // wsirzymuje dzialanie na sekunde digitalWrite(13, LOW); // wylgcza pin cyfrowy nr 13 delay(1000); // wstrzymuje dzialanie na sekunde Przeanali teraz, poszczegélne elementy tego fragmentu kodu, Fankeja digitalWrite() steruje napigciem pinu cyfrowego (w tym przypadku pinu nr 13 polaczonego z dioda LED). Prackazanie za posrednictwem drugiego parametru tej funkeji wartosci HIGH powoduje ustawienie tzw. stanu wysokiego, w ktérym przez pin przeplywa prad, powodujge Swiecenie diody LED. (Wywolanie tej samej funkcji z parametrem LOW spowoduje odcigcie zasilania i — tym samym —wylgezenie diody LED). Po wlaczeniu diody LED szkic wstrzymuje dzialanie na 1 sekunde za pomoca funkeji delay (1000). Funkeja delay() wstrzymuje wykonywanie szkicu na okre- Slony czas — w tym przypadku na 1000 milisekund, czyli 1 sekunde. Zasilanie diody LED jest nastepnie wylaczane za pomoca wywolania funkeji digitalWrite(13, LON). I wreszcie szkic wstrzymuje dzialanie na jedna sekunde w czasie, gdy dioda jest wylaczona (ponownie za pomoca wywolania delay (1000)), Kompletny szkic powinien mieé nastepujacq postac: p Szkic Arduino Blink LED ‘autor: Mary Smith; data: 2012-09-09 Wi void setup() ( pinMode(13, OUTPUT); // ustervia pin cyfrowy nr 13 jako wyjsete } void loop() { digitalWrite(13, HIGH); // wlacza pin eyfrowy nr 13 delay(1000); // wsirzymuje dzialanie na sekunde digitalWrite(13, LOW); // wylacza pin cyfrowy nr 13 delay(1000); // wstrzymuje dzialanie na sekunde Przed przystapieniem do dalszych dzialan koniecznie nalezy zapisaé szkic! Rozdzial 2. Weryfikacja szkicu ja szkicu pozwala stwierdzi¢, czy wszystko zostalo prawidlowo zapi- sane, tj. w spos6h, ktéry w Aby sprawdzié poprawnosé i chwile poczel ozliwi interpretacje kodu przez system Arduino. kompletnego szkicu, nalezy Hilna¢ ikone Weryfikuj na zakoniczenie testu. Po sprawdzeniu szkicu w oknie komu- nikat6w powinna zosta¢ wySwietlona stosowna informacja (patrz rysunek 2.12). Rysunek 2.12. Szkic zostat prawidlowo zweryfikowony Komunikat Kompilowanie zakoriczone informuje uzytkownika, Ze szkie jest prawidlowy i moze by¢ wyslany na plytke Arduino. W oknie komunikatéw jest tez wySwietlana informacja 0 pamigci zajmowanej przez sprawdzony szkic (w tym przypadku 1076 bajtw). Laczna ilosé pamigci dostepnej na platfonmie Arduino wynosi 32 256 hajtow. Co staloby sie, gdyby szkic nie byt poprawny? Przypusémy na przyklad, Ze pro- gramista zapomnial 0 Sredniku na kofcu drugiego wywolania funkcji delay (1000). Jesli szkic zawiera blad, Kliknigcie ikony Weryfikuj spowoduje wyswietlenie w oknie komunikat6w informacji 0 znalezionych usterkach (przyKlad takiego komunikatu pokazano na rysunku 2.13). ielLey (1000) yanje ¢ re ere ee Rysunek 2.13. Okno komunikatéw z informacjq o bledzie wykrytym podczas weryfikacji kodu Z komunikatu wynika, ze blad wystapil w fimkeji void 1oop(). Komunikat wskazuje tez numer wiersza, ktéry w ocenie srodowiska IDE zawiera 2r6dlo bledu (zapis blinky:16 oznacza, %e chodzi o 16. wiersz szkicu blinky), oraz wyswietla sam blad (w tym przypadku brakujgey srednik: error: expected ';" before *)' Pierwsze spojrzenie na plytke Arduina i érodawisko IDE 49 token). Srodowisko IDE powinno tez wyréznié na 261to miejsce znalezienia bledu lub fragment kodu bezposrednio za tym miejscem. Takie rozwigzanie macmie ulatwia lokalizacj¢ i eliminowanie bled6w. Wysytanie i uruchamianie szkicu Po sprawdzeniu, czy kod zostal wpisany prawidlowo, nalezy zapisaé szkic, upewnié sig, Ze plytka Arduino jest podlczona do komputera, a nastepnie Klikngé ikone Zaladuj. Srodowisko IDE byé moze ponownie zweryfikuje szkic, po czym wysle sprawdzony program na plytky Arduino. W trakcie wysylania diody LED ozna- ykietami TX i RX na plytce Arduino (patrz rysunek 2.6) powinny migaé, sygnalizujac przckazywanie informacji pomigdzy ty plytka a komputerem. Czas na chwily prawdy — plytka Arduino powinna teraz wykonywaé wyslany szkic. Jesli kod zostat przepisany prawidlowo, dioda LED powinna co sekunde zapalaé sig i gasnaé! Gratulacje, Whasnie opanowales umiejgtnosé wpisywania, weryfikacji i wy- ylania szkicéw systemu Arduino. czone Modyfikowanie szkicu Juz po urvchomieniu szkicu programigci czesto podejmuja decyzj¢ 0 zmianie jego dzialania, na przyklad poprzez modyfikacjg czasu oczekiwania pomigdzy wlaczaniem a wylaczaniem diody LED. Srodowisko IDE, ktére pod wieloma wzgledami przypomina edytor tekstu, umodliwia otwieranie zapisanych weze- Sniej szkicéw, modyfikowanie ich kodu, ponowne zapisywanie szkicéw i wysy- lanie na plytke Arduino, Aby na przyktad awiekszyé czestotliwosé migania dio- dy LED, wystarezy zmienié parametry obu wywolan finkcji delay (). Jesli dioda ma zimienia stan co jedna czwarta sekundy, nalezy rametru do 250: zmniejszyé wartosé tego pa- delay(250); // wstrzymuje dzialanie na jedna czwarta sekundy Po wprowadzeniu zmian nalezy ponownie wyslaé szkic na plytky. Dioda LED powinna teraz migaé caterokrotnie szybciej (powinna zapalaé sig i gasnaé co 250 milisekund). Co dalej? 50 Skoro potrafisz juz pisaé, edytowaé, zapisywaé i wysylaé szkice systemu Ardu- ino, mozesz przystapi¢ do lektury nastepnego rozdzialu, w ktérym wyjasnig m.in., jak uzywaé dodatkowych funkeji, jak implementowaé dobre projekty oraz | konstruowaé podstawowe obwody elektroniczne. Rozdzial 2. Pierwsze kroki W tym rozdziale: ® opanujesz zasady przygotowywania dobrych projekt6w; = poznasz podstawowe wlasciwosci pradu elektrycznego; a2 zumiesz dzialanie rezystora, diody LED, tranzystora, diody prostowniczej i przekaénika; = uzyjesz plytki uniwersalnej do budowy obwod6w bez koniecznosci lutowania; = nauczysz sie, jak za pomoca zmiennych calkowitoliezbowych, petli i cyfrowych pinow wyjsciowych tworzyé rézne efekty wizualne przy uzyciu diody LED. Caas tchngé troche Zycia w plytke Arduino. Jak niedlugo pokaze, praca z plat- forma Arduino to cos wigcej niz tylko budowanie systemow na bazie tej plyt, W tym rozdziale opisze, jak planowaé projekty w taki spos6b, aby pomysly kon= struktora przybraly reczywista forme. W dalszej czesei wprowadze podstawy elektrycznosei. Znajomosé wlasciwosei pradu elektrycznego jest kluczem do zrozumienia tej ksigzki — hez dobrego rozumienia przynajmniej podstaw elek- trycznosei trudno byloby tworzyé wlasne projekty. W tym rozdziale opisze takze Komponenty elektroniczne niezbedne do budowy tych projekt6w. I wreszcie wprowadze kilka nowych funkeji, ktére moza stosowaé w roli element6w skla- dowych podezas tworzenia szkicéw systemu Arduino. Planowanie projektow UWAGA . Zdefiniowanie celu. Tworca projektu musi okresli¢, co chee . Napisanie algorytmu, Algorytin to zbidr instrukeji opisujacy Podezas prac nad pierwszymi kilkoma projektami czesto wystepuje pokusa roz- poczynania realizacji od napisania szkicu implementujacego nowy pomysl. Zanim jednak bedzie mozna praystapié do pisania szkicu, nale2y wykonaé kilka prostych krok6w, aby przygotowaé sie do budowy projektu. Plytka Arduino nie czyta w my- ‘h programisty — musi otrzymaé precyzyjne instrukeje. Co wigcej, nawet jesli te instrukeje moga by¢ prawidtowo wykonane przez system Arduino, wynik ich wykonania nie musi byé zgodny z oczekiwaniami tworcy (na przyklad wskutek przeoczenia jakiegos niepozornego szezegotu), Niezaleznie od tego, czy tworzony projekt odpowiada tylko za miganie diody, czy ma byé zautomatyzowanym modelem kolejki elektrycanej, warunkiem sukcesu jest szezegélowy plan dzial Podezas projektowania systeméw na bazie platformy Arduino nalezy wykonaé nastepujace kroki: ia. siggnaé jak projekt ma 6w niezbednych realizowaé zdefiniowany cel. Algorytm reprezentuje liste krol do osiagnigcia przyjetego celu. Wybor sprzetu, Nalezy okresh do plytki Arduino. , jak komponenty projektu zostana podlaczone . Napisanie szkieu. Nalezy utworzyé wstypna wersjg programu, ktory hedzie opisywal dzialanie systemu Arduino. . Laczenie komponentow. Nalezy polaczyé wszystkie komponenty, przygotowaé obwody i podlaczyé inne potrzebne elementy do plytki Arduino, . Testowanie i diagnozowanie projektu. Czy system dziala? Na tym etapie moéna zidentytikowaé ewentualne bledy i znalezé ich przyezyny (w szkicu, polgczeniach sprzgtowych lub algorytmie). Im wiecej ezasu twérea projektu poswieci na planowanie dzialan, tym mniej probleméw wystapi na etapie testowania i diagnozowania projektu. Nawet w dobre zaplanowanych projektach wystepyje czasem xjawisko prserostu funkeji (ang, feature creep). Wspomniane zjawisko ma miejsce wledy, gdy twérca projektu wpada na nowe pomysty i probuje je zrealizowad w ramach istuiejgcego projektu, na sile dodajqe koleine elementy do systemu. Jesli projekt ma byé zmie- niony, nie warto probowaé dodawania lub modyfikowania roxtwigzaii w istuigjqcym systemie, Lepszym rozwigzaniem jest rozpoczecie uowego projeklu (w tym po- nowne sdefniowanie jego celu) 52 Rozdzial 3 Kilka stow o elektrycznosci Warto teraz poswigci¢ troche czas na oméwienie podstaw elektryeznosci, po- niewaz juz za chwile przystapimy do budowy obwodéw elektronicznych na ba- zie plytki Arduino. W najwigkszyim skrocie elektrycznos¢ to forma energii, kt6ra moéna dosé latwo wykorzystaé i przeksztalcié w ciepto, swiatlo, ruch lub moe. Elektrycznos¢ ma trzy gléwne wlasciwosci, ktére sq hardzo wazne w kontekscie budowy projektéw: natezenie, napigcie i moc. Natezenie Przeplyw energii elektrycznej przez ohw6d okresla sig mianem nalezenia (ang, current). Natgzenie pradu elektrycznego przeplywa przez obw6d od dodatniej strony Zrédla zasilania (na przyklad baterii) do ujemnej strony arédla zasilania. Prad o stalym natezenin i kierunku przeplywu okresla sig mianem pradu stalego (ang. direct current — DC). W tej ksiqéce nie ede poruszal temata pradu zmiennego (ang, alternating current — AC). W niekt6rych obwodach ujemna stoona érédla zasilania jest okveslana mianem usiemienia (ang. gromd — GND). Niewielkie natgzenia wyraza sig w miliamperach (mA), gdzie 1000 miliamperéw to | amper Napiecie Napiecie (ang, voltaze) jest miara r6znicy potencjaléw elektryeznych pomigdzy dwoma punktami obwodu elektrycznego (dodatnig i ujemng strong érédla zasi- lania). Napiecie elektryezne wyraza sie w woltach (V). Im wy2sze jest napiecie, tym szybciej prad przeplywa przez obw6d Moc Moe jest miara pracy wykonywanej przez wzadzenie zasilane energig elektryczng (Konwersji tej energii z jednej postaci na inna). Moc jest wyrazana w watach (W) Na przyklad Zardwka 0 mocy 100 W swieci duzo jasniej od zaréwki o mocy 60 W, poniewaz przeksztalca wigcej energii elektrycznej na swiatlo. Istnieje prosty wz6r matematyczny opisujacy relacjg pomiedzy napigeiem, natgZeniem i moca: Moc (W) = Napigcie (V) x NatgZenie (A) Komponenty elektroniczne Skoro wprowadzilem juz podstawowe wlagciwosci pradu elektrycznego, czas przejsé do oméwienia zasilanych w ten spos6b komponentéw i urzadzen elek- tronicznych. Komponenty elektroniczne to najrézniejsze ezesci sterujace nate- Zeniem pradu elektryeznego w ramach ukladu i — tym samym — umodliwiajace realizacjg projektéw. Tak jak rééne czesei samochodu wspétpracuja w celu do- Pierwsze kroki SB. 54 starezenia paliwa, mocy i wprowadzenia pojazdu w ruch, tak komponenty elek- troniczne wsp6lpracuja w celu wykorzystania energii elektrycznej, tak aby moz- na hylo budowaé przydatne urzadzenia. We wszystkich rozdzialach tej ksigzki hede stopniowo wprowadzal wyspe- cjalizowane komponenty i wyjasnial ich dzialanie. W poniészych punktach opisano tylko wybrane, najwazniejsze komponenty. Rezystor Niekt6re komponenty, na przyktad dioda LED na plytce Arduino, wymagajq do dzialania niewielkiego nateZenia, zwykle okolo 10 ma. Zbyt wysokie natgZenie pradu przeplywajacego przez diode LED powoduje wzrost jej temperatury (nad- miar energii elektrycznej jest przeksztalcany w energie cieplna), co moze prowa- dzié do przegrzania i zniszezenia diody. Aby ograniczy¢ natezenie pradu elektryez- nego przeplywajqcego przez takie komponenty jak diody LED, nalezy umiescié rezystor (opornik) pomigdzy érédtem napigcia a zasilanym komponentem. O ile prad elektryczny przeplywa przez miedziany przewod bez przeszkéd, 0 tyle prad przeplywajacy przez rezystor jest zmniejszsany. CzeS6 natezenia jest ke wertowana na niewielka ilosé energii cieplnej (ilos¢ tej energii jest proporcjonalna do wartosci rezystora, tw. rezystancji, opomnosci, oporn elektrycznego). Prayklady typowych rezystoréw pokazano na rysunku 3.1 ECO 40 oO 89 60 70 Rysunek 3.1. Typowe rezystory Rezystancja Poziom rezystancji (oporu) moze hyé albo staly, albo zmienny. Rezystancje wyraza sig w omach (Q). WartoSé rezystancji moze wynosié zero oméw, tysiace oméw (kiloomy, k) lub nawet miliony oméw (megaomy, MQ). Odczytywanie wartosci rezystancji Rezystory sq bardzo male, zatem w wigkszosci przypadkéw nie jest modliwe wydrukowanie wartosci rezystancji na samych komponentach. Mimo Ze opor- nosé moéna odezytaé za pomoca multimetru (miernika uniwersalnego), istnieje tez modliwoS¢ odczytania tej wartosci bezposrednio z fizyeznego rezystora, cho- nie ma na nim wydrukowanych liczb. Jednym z typowych sposobw wyra- zania rezystancji komponentow jest kod reprezentowany przez sekwencjg kolo- rowych pask6w. Kod nalezy odezytywaé od lewej strony w nastepujacy sposdh: Rozdzial 3 Pierwszy pasek reprezentuje pierwsza cyfirg wartosci rezystancji. Drugi pasek reprezentuje druga cyfig wartosci rezystancji. Trzeci pasek reprezentuje mnozik (w praypadku rezystor6w z caterema pax skami) luh trzeciq cyfre wartosci rezystangji (w przypadku rezystor6w z pi- cioma paskami) Cawarty pasek reprezentuje mnoznik (w przypadku rezystoréw z pigcioma paskami). Piaty pasek reprezentuje tolerancjg¢ (Kase doktadnosci) rezystora. Kolory pask6w na rezystorach wraz z wartosciami rezystanji opisano w ta- heli 3.1 Tabela 3.1. Wartosci reprezentowane przez paski wydrukowane na powierzchni rezystora (w omach) Kolor Czarny Brazowy eerwony Pomaraficcowy Zatty Zielony Niebieski Fioletowy Szary Bialy omy Pigty pasek reprezentuje tolerancje rezystora. Tolerancja jest miara Klasy dokladnosci tego komponentu. Poniewaz produkeja rezystoréw z precyzyjnie okreslonymi wartosciami rezystaneji jest dosé trudna, podezas zakupu rezystora moma wybraé dopuszezalny margines bledu. Brazowy pasek oznacza l-procentowa tolerancje, zloty pasek oznacza 5-procentowa tolerancje, a srebrny pasek — 10-procentowa tolerancje. PrzyHdadowy diagram rezystora pokazano na rysunku 3.2. Zélty, fioletowy i po- czowy pasek reprezentujg odpowiednio cyfry 4, 7i3 (patrz tabela 3.1). Opi- sana sekwencja pask6w reprezentuje wartosé 47 000 Q, czyli 47 kQ. Z6lty Pomaraficzowy Fioletowy ——Brazowy Rysunek 3.2. Praykladowy diagram rezystora Pierwsze kroki 5S. UWAGA Rezystory do montazu powierzchniowego Rezystory do montazu powierzchniowego (ang. chip resistors) nie sq oznaczane paskami, tylko kodem liczbowym i literowym (patrz rysunek 3.3). Dwie pierwsze cyfry reprezentuja awykla wartosé rezystancji, natomiast trzecia cyfra re- prezentuje liczbe zer nastepujgcych po tej war tosci. Na przyklad rezystor pokazany na rysunku —_ pysunek 3.3, Prayktad rezystora 3.3 ma wartosé rezystancji na poziomie 10 000.2, de montazu powierzchniowego cayli 10kQ. Jesli na niewielkim rezystorze do montazu powierzchniowego wystepuje licsba i kod literowy (na prayklad 010), nalezy uzyé tabel (wystarczy wpisad w wyszukiwarce Google zapytanie ETA-96 code calculator). Mierniki uniwersalne Miernik uniwersalny (tzw. multimetr) jest wyjatkowo przydatnym i stosumkowo niedrogim urzadzeniem testowym umodliwiajgcym mierzenie miedzy innymi napigcia, oporu elektrycznego i natyzenia pradu. Na rysunku 3.4 pokazano przylda- dowy pomiar wartosci rezystora za pomoca multimetru. Rysunek 3.4. Zmierzona opornos¢ rezystora 560-omowego z I-procentowg tolerancjq Multimetr jest absolutnie niezhedny w przypadku oséb dotknietych slepota banw. Jak w przypadku kazdego narzedzia, warto zakupié multimetr od spraw- dzonego sprzedawey, zamiast szukaé w internecie niepewnych okazji i nai szych dostepnych ofert. Moc znamionowa Moe znamionowa rezystora jest miara dopuszczalnej mocy (wyrazonej w wa- tach), przy ktérej rezystor dziala prawidlowo — przekroczenie tej wartosci spowoduje przegrzanie rezystora. Wszystkie rezystory pokazane na rysunku 3.1 maja moc znamionows 0,25 WY, czyli moc typowa dla rezystor6w stosowanych w obwodach na bazie systemu Arduino. Podczas wyborn rezystora nalezy przeanalizowaé relacje lezqce moc, natyze- nie i napiecie. Im wyzsze jest nateZenie i (lub) napigcie, tym wieksza musi byé moc znamionowa rezystora. 56 Rozdzial 3 Wieksza moc znamionowa rezystora zwykle przeklada sig na wigksze wymiary. Na przykdad rezystor pokazany na rysunku 3.5 (0 mocy znamionowej 5 W) ma 26 mm dlugosci i 7,5 mm szerokosci. | D Rysunek 3.5. Rezystor 0 mocy znamionowej 5 W Dioda LED Dioda LED jest bardzo popularnym i niezwykle przydataym komponentem przeksztatcajacym natezenie pradu elektrycznego na swiatlo. Diody LED maja, rane ksztalty, rozmiary i kolory. Przyklad typowej diody LED pokazano na ry- sunku 3.6. FONTAN TTT 30 40 60 50 Rysunek 3.6. Czerwona dioda LED o srednicy 5 mm Podlgczanie diod LED do obwodu wymaga ostroznosei, poniewaz diody sq urzqdzeniami spo- laryzowanymi — oznacza to, e natezenie pradu elektrycznego powinno przechodzié przez diode tylko w jednym Kierunku. Natezenie pradu dociera do "4 diody za posrednictwem anody (strony dodatniej) Dioda LED Czerwona (633 nm) i opuszcza diody za posrednictwem kalody (strony + = ujemnej); pat rysunek 3.7. Proba odwrotnego pod- — Anoda Katoda Jaczenia diody i przeplyw pradu w przeciwnym kie- — Przeplyw natgzenia Rysunek 3.7. Praeplyw natezenia przez diode LED runku spowoduje uszkodzenie diody LED. Na szezescie diody LED projektuje spos6b, Ze okreslenie, ktéra koncowka jest anoda, a Kt6ra katoda, nie stanowi Zadnego problemu. Noz- ka anody jest dluzsza; nézka katody jest krétsza, a brzeg diody LED od strony katody jest plaski (patrz rysunek 3.8) Pierwsze kroki ST UWAGA Anoda Katoda Rysunek 3.8. Na podstawie ksztaltu diody LED mozna wskaza¢ anode (dtuzsza nézka) i katode (ptaska czes¢ samej diody) Przed dodaniem diod LED do projektu nalezy sprawdzié napiecie i nateze- nie roboeze pradu. Typowe czerwone diody LED wymagaja napigcia na pozio- mie okolo 1,7 V i natgzenia od 5 do 20 mA. Wymienione parametry sq pewnym utrudnieniem, poniewaz plytka Arduino oferuje zasilanie napigciem 5 V i za- pewnia duzo wyzsze natezenie. Na szczescie istnieje mozliwosé zastosowania rezystora ograniczajqcego natezenie, aby zabezpieczyé diode LED przed prze- graaniem. Jak nalezy wybraé wlasciwy rezystor? Wystarczy zastosowaé prawo Ohma. Ab tyzenil y oblicayé wartosé opornosci niezhednego rezystora ograniczajacego ni ., nalezy zastosowaé nastepujacy wz6r R=(U,-U):1 gdzie U, to napigcie zasilania (w tym przypadku napigcie 5 V zapewniane przez plytke Arduino); U, to napiecie przewodzenia diody LED (przyjmijmy, ze wynosi 1,7 V); I to natezenie wymagane do dzialania diody LED (10 mA). (We wzorze nalezy zastosowaé wartos¢ wyrazona W amperach, zatem zamiast 10 mA nalezaloby zapisaé 0,01 A). Warto teraz, sprohowaé uzyé tego wzorn dla wybranych diod LED — przyjmijmy, Ze U, wynosi 5 V, U, wynosi 1,7 V, a I wynosi 0,01 A. Po podstawie~ niu tych wartosci do wzoru wartosé R wyniesie 330 Q. Okazuje sig jednak, 2 dioda LED hedzie swiecila takze wtedy, gdy natezenie pradu bedzie mniejsze niz 10 mA. Zalecang praktyka jest stosowanie (0 ile to moéliwe) mniejszych wartosci nateZenia, aby chronié delikatne komponenty elektroniczne. W tym przypadku dobrym rozwiazaniem bedzie uzycie rezystora 560 Q 0 mocy 0,25 W, ktory zapewni natgZenie na poziomie okolo 6 mA, W razie watpliwosei zawsze nalezy stosowaé nieco wieksse rezystory, poniewat lepiej dysponowaé dioda LED, ktéra swieci nieco za slabo, niz dioda, kt6ra jest spalona! Ptytka uniwersalna Prototypowe obwody, ktére czesto sq zimieniane, wymagaja podstawy — ele- mentu przytrzymujacego wszystkie komponenty. Najlepszym narzedziem do te- go celu jest plytka uniwersalna (ang, broadboard), kt6ra nie wymaga Iutowania komponentéw. Plytka uniwersalna to plastikowa podstawa z wierszami elektrycz- nie polaczonych gniazd (polaczonych tak dlugo, jak dlugo plytka nie jest uz wana w roli deski do krojenia chleba). Plythi uniwersalne q dostepne w réinych arach, ksztaltach i kolorach (patr2 rysunek 3.10). 5B Rozdzial 3 TROJKAT PRAWA OHMA Prawo Ohma okresla zwiazki taczace natezenie pradu elektrycznego, opornosé i napiecie: napigcie (U) = natezenie (I) x opornosé (R) Oznacza to, ze jesli sq znane dwie spoéréd tych wielkosci, obliczenie trzecie] nie stanowi problemu. Popularnym sposobem zapamietywania prawa Ohma jest przedstawianie tego wzoru w formie tréjkata (patrz rysunek 3.9). 1=U:R : R=U:1 Rysunek 3.9. Tréjkgt prawa Ohma Tréjkatny diagram ilustrujacy prawo Ohma jest wygodnym narzedziem obli- czania napiecia, natezenia i opornosci zawsze wtedy, gdy znane sa tylko dwie z tych trzech wartosci. Aby na przyktad obliczyé opornosé, wystarczy zastonié palcem litere R — pozostana widoczne napigcie (w liczniku) i nate- Zenie (w mianowniku); by obliczyé napiecie, nalezy zastoni¢ litere U — pozo stang widoczne natezenie i opornoéé na tym samym poziomie (obie wartosci nalezy pomnozyé) wv Rysunek 3.10. Plytki uniwersalne w réznych ksztattach i wymiarach Warunkiem efektywnego korzystania z plytki uniwersalnej jest znajomosé sposobu polgczenia gniazd — projektant obwodu musi wiedzieé, czy polaczenia preebiegaja wadluz krétszej, ezy wadluz diudszej krawedzi. Zdarza sig tez, 2e swiersze i kolumny na czesei plytki sa polaczone w pionie, a na czeSci w poziomie, Spos6b laczenia gniazd zalezy od modelu plytki. Na przyklad na plytee widocenej Pierwsze kroki 59 60 Ww gomej czesci rysunku 3.11 kohunny zlozone z pieciu otworéw sq ze soba po- taczone w pionie, ale izolowane w poziomie. Jesli dwa przewody zostana pod- Igczone do jednego pionowego wiersza, plytka zapewni polyczenie elektryezne tych przewod6w. Podobnie dlugie wiersze na srodku plytki (pomigdzy rzgdami Kolumn na gérze i dole plytki) sq polaezone w poziomie. Poniewaz obwody cze- sto sq lgczone ze Zr6dlem zasilania i z uziemieniem, dlugie poziome wiersze wprost idealnie nadajg sie wlasnie do podtgczenia tych dwéch koiicéwek érédla zasilania. ee en: SSeS) Rysunek 3.11. Wewngtrane polgczenia na plytce uniwersalne) W przypadku bardziej zlozonych obwod6w plytka uniwersalna moze sig okazaé za mala, aby prawidlowo rozmiescié wszystkie komponenty zgodnie z pierwot- nymi zalozeniami. Problem mozna jednak rozwiqza¢, stosujge specjalne prze- wody zwierajgce. Sklepy sprzedajqce plytki uniwersalne zwykle maja w ofercie takze niewielkie opakowania przewod6w awierajacych réznych dlugosci (przyktad takiego zestawu pokazano na rysunku 3.12). Rysunek 3.12. Przewody zwierajqce dla plytki uniwersalne} Rozdzial 3 Projekt nr |: tworzenie fali migajacych diod LED W tym projekeie zostang uzyte diody LED i rezystory. Pigé diod LED hedzie emulowalo przednie oswietlenie samochodu KITT w popularym serialu tele- wizyjnym Nieustraszony — czerwone swiatla beda tworzyly efekt przypomina jacy fale. Algorytm Oto algorytm przygotow: 4. Whacz diodg LED nr 1. 2. Odezekaj pél sekundy. 3. Wylacz diodg LED nr 1 4, Wlacz diode LED nr 2. 5, Odezekaj pét sekundy. 6. Wylacz diodg LED nr 2. y dla tego projektu: 7. Kontynuuj do momentu wlaczenia diody LED nr 5, a nastepnie odwr6é ten proces, tak aby byly wlaczane diody LED od 5. do 1. 8. Powtarzaj ten proces w nieskoiczonos¢. Sprzet Oto lista urzadzen potrzebnych do realizacji tego projektu: & pigé diod LED; pigé rezystorow 560 Q; plytka uniwersalna; réine przewody; . . . & plytka Arduino i przewod USB. Diody LED zostang podtaczone do pinéw cyfrowych od 2. do 6. za posred- nictwem rezystor6w ograniczajacych natezenie 0 wartosci oporu réwnej 560.2. Szkic Czas na opracowanie szkicu. W srodowisku IDE nale: y wpisaé nastypujacy kod: // Projekt ur 1 — tworzenie fali migajqeych diod LED @ void setup() { pinMode(2, OUTPUT); // pin sterujacy pierwszq dioda LED jest ustawiany Uf jako wyjsciowy Pierwsze kroki —6L 62 pinMode(3, OUTPUT) // to samo nalety zrobié dla diod LED od 2 do 5 pinMode(4, OUTPUT) ; pinMode(5, OUTPUT); pinMode(6, OUTPUT) ; } @ void loop() { digitalWrite(2, HIGH); // wlacza diode LED nr 1 delay (500); J] ¢zeka pél sekundy digitalWrite(2, LOW); — // wylgcza diodg LED nr I digitalrite(3, HIGH); // ta sama procedura jest powtarzana dla diod LED od 2 do 5 delay(500) ; digitalWrite(3, LOW); digitalwrite(4, HIGH); delay (500) 5 digitalWrite(4, LOW); digitalWrite(5, HIGH); delay (500) ; digitalurite(5, LOW); digitalWrite(6, HIGH); delay (500) ; digitalWrite(6, LON); digitalWrite(5, HIGH) ; delay (500) ; digitalWrite(5, LON); digitalwrite(4, HIGH); delay (500) ; digitalwrite(4, LOW); digitalWrite(3, HIGH); delay (500) 5 digitalWrite(3, LOW); // funkcja loop) wréci do swojego pierwszego wiersza i ponownie wykona caly kod W ciele funkeji void setup() @ ustawiono piny cyfrowe wejscia-wyjscia ja- ko piny wyjsciowe, poniewaz za ich posrednictwem system Arduino ma zasila diody LED (na zadanie programu). To, kiedy poszezegélne diody LED maja byé wlaczane, okreslono za pomoca wywolan fimkeji digitalWrite() w cic funkeji void 100p() Schemat Czas na budowe whasciwego obwodu, Uklad chwodu moéna opisaé na kilka sposo- how. Aby lepiej wyjasnié schematy pierwszych kilku projekt6w opisanych w tej siqzce, zastosuje diagramy ilustrujace fizycany uklad (pierwszy taki diagram po- kazano na rysunku 3.13). Rozdzial 3 Rysunek 3.13. Uktad obwodu sktadajgcego sig na projekt nr I Poréwnujae diagram polgezet z finkejami zaimplementowanymi w szkicu, moéna latwo zrozumieé sens obwodu. Na przyklad wywolanie funkeji digital “suirite(2, HIGH) powoduje zasilanie pinu cyfrowego nr 2 pradem o napigciu 5 V (stan wysoki) — prad przeplywa przez rezystor ograniczajacy natezenie, diode LED (odpowiednio przez anode i katode) i wreszcie trafia do gniazda wziemienia (GND) na plytce Arduino. Wywolana chwily pééniej fimkcja digitalWrite(2, LON) wstrzymuje przeplyw pradu i — tym samym — powoduje wylaczenie od- powiedniej diody LED. Uruchamianie szkicu Nalezy teraz podtaezyé plytke Arduino do komputera i wyslaé szkic. Po krotkiej chwili diody LED powinny migaé od lewej do prawej strony i z powrotem (cata procedura bedzie powtarzana bez korea). Poczucia osiagnigtego sukcesu nie da sig poréwnaé z niczym innym — zachgcam do $wigtowania! Jesli jednak diody nie zaczely migaé, nalezy natychmiast odlaczyé przew6d USB od plytki Arduino, a nastepnie sprawdzié, czy szkic zostat prawidlowo przepi- sany w Srodowisku IDE. W razie znalezienia bledu nalezy go naprawi¢, po ezym ponownie wyslaé szkic. Jesli szkic jest prawidlowy, a mimo to diody LED nie migaja, nalezy sprawdzié wszystkie polaczenia na plytce uniwersalne}. Wiesz juz, jak spowodowaé miganie diod LED za pomoca plytki Arduino, jednak szkic w tej formie jest dosé nicefektywny. Gdyby programista cheial na prayklad skrécié czas oczekiwania pomigdzy wigezaniem i wylaczaniem kolejnych diod LED, musialby zmodyfikowaé wszystkie wywolania delay(500). Projekt mozna zaimplementowaé w lepszy spos6b. Pierwsze kroki 63 Stosowanie zmiennych 64 Do przechowywania danych w programach komputerowych shuza taw, zmienne (ang. variables). Na przyklad w szkicu dla projekt nr I zastosowano wywolanie funkeji delay (500), aby dioda LED swiecila sie przez pél sekund Najwiekszq wad tego szkicu jest brak elastyeznosci. Aby zmienié czas ocze- kiwania pomigdzy wlaczaniem a wylaczaniem diod LED, nalezaloby recznie zmodyfikowaé wszystkie wywolania funkeji delay(). Problem mogna jednak rozwiazaé, tworzac zmienna reprezentujaca wartosé przekazywan wejscin funkeji delay () W tym celu nalezy dodaé do szkicu dla projektu nr I nastepujacy wiersz nad fumkcjq void setup(), ale pod poczatkowym komentarzem: na int d = 250; Powyészy wiersz przypisuje wartos¢ 250 zmiennej nazwanej d Nalezy jeszeze zastapié wszystkie wystapienia liczby 500 w szkien odwola- niami do zmiennej 4. Po ponownym uruchomieniu szkicu system Arduino uéyje wartosci zmiennej d we wszystkich wywolaniach funkeji delay(). Po wyslaniu zmienionego szkicu na plytky Arduino diody LED beda wlacaane i wylaczane dwukrotnie szybciej, poniewaé czas oczekiwania pomigdzy tymi operacjami skrécono do 250 ms Slowo int ozmacza, zmienna zawiera liczbe calkowita (ang. integer) z prze- dzialt od —32 768 do 32 767. W najwigkszym uproszezeniu liczby calkowite nie obejmujg ezgSci ulamkowyeh (mniejse po przecinku). Od tej pory zmiana czas oczekiwania wymaga tylko modyfikacji deklaraeji zmiennej d na poczatku szkicu. Na przyklad przypisanie tej zmiennej liczby 100 jeszcze hardziej przyspieszy wlaczanie i wylaczanie diod LED: int d = 100; Zachecam do eksperymentow z tym szkicem —warto sprawdzié r6ime czasy oczekiwania i zmienione sekwencje wysylania sygnal6w HIGH i LOW. Takie ekspe- rymenty to mnéstwo zabawy. Nawet po zakoriczeniu tych test6w nie nalezy rozkaczaé obwodu — na bazie tego rozwigzania zrealizujemy dalsze projekty w tym rozdziale. Rozdzial 3 Projekt nr 2: powtarzanie instrukecj Za pomoca petli for Podezas projektowania szkicu czesto nalezy powtarzaé, wielokrotnie wykony- waé te same funkeje. Oczywiscie istnieje moéliwosé kopiowania i wklejania tych funkeji w ramach szkicu, jednak takie rozwigzanie jest nieefektywne i powoduje nadmierne wykorzystanie pamigci programu w systemie Arduino. Lepszym wyjéciem jest zastosowanie petli for. Zaleta petli for jest mo#liwos¢ okreslenia, konany kod umieszezony wewnatrz tej petli. ile razy ma byé Aby zrozumieé, jak w praktyce dziala taka petla, nalezy umiescié w nowym szkicu nastepujacy kod: /| Projekt nr 2— powtarzanie instrukcji za pomoca petli for int d = 100; void setup() { pinMode(2, OUTPUT) ; pinMode(3, OUTPUT) ; pinMode(4, OUTPUT) ; pinMode(5, OUTPUT) ; PinMode(6, OUTPUT) s } void loop() { for ( inta=2;a<7; at) { digitallrite(a, HIGH); delay(d); digitalWrite(a, Low); delay(d); } } Petla for powtarza kod zawarty pomigdzy nawiasami Klamrowymi, dopéki zastosowany warunck jest spelniony. W powyészym kodzie wykorzystano nowa zmienna calkowitoliczbowa (nazwana a), ktérej poczatkowa wartosé wynosi 2. Za kazdym razem, gdy kod petli jest wykonywany, operacja a++ zwieksza wartosé zmiennej ao 1. Kod umieszezony w peli jest powtarzany tak dlugo, az zmienna a ma wartosé mniejsza niz 7 (tak zdefiniowano warunek petli). W momencie, w ktérym zmienna a osiaga wartosé wigksza lub réwna 7, system Arduino przy- stepuje do wykonywania ewentualnego kodu zdefiniowanego po petli for: Liczbe iteracji wykonywanych przez, pelle for mozna okreslié takze poprzez odliczanie w dl, od wigksze} do mniejszej liczby. Aby zademonstrowaé te forme pelli for, warto umiescié nastepujacy kod w szkicu dla projektu nr 2 (pod pierw- szq petly for): Pierwsze kroki 65. @ for ( inta=53;a>2;a--) { digitalurite(a, HIGH); delay(d) ; digitalWrite(a, LOW); delay(d) } Petla for w tej formie @ przypisuje zmiennej a wartoSé 5, a nastepnie odej- muje od tej zmiennej 1 w kazdej iteracji petli za pomoca operacji a--. Petla dziala w ten spos6b, dopoki wartosé zmiennej a jest wieksza od 2 (a > 2): petla koriczy dzialanie po osiagnigciu przez ty zmienna wartosci mniejszej lub réwne) 2. Zastosowane zmiany umoiliwily osiagnigcie celow projektu nr 1 za pomos mniejszej ilosci kodu. Warto teraz wyslaé dziatanie nowego szkicu! a kod na platforme Arduino i sprawdzié Zmiana jasnosci diod LED Za pomoca modulagcji szerokosci impulsu 66 Zamiast tylko wlaczania i wylaczania diod za pomoca funkcji digitalWrite() istnieje motliwosé definiowania poziomu jasnosci diod LED poprzez okreslanie czasu uplywajacego pomigdzy stanami diody LED metoda modulacji sserokosci impulsu (ang. pulse-width modulation — PWM). Metoda PWM moze z pow dzeniem sluzyé do tworzenia iluzji réénych pozioméw jasnosci diody LED — wystarezy whgezaé i wylqezaé diode z ezestotliwoscig okoko 500 cykli na sekunde. Jasnosé Swiecenia diody LED widoczna dla Indzkiego oka zalezy od stosunku czasu, w ktérym pin cyfrowy sterujacy tq diodg jest wlaczony, do czasu, w ktérym ten sam pin jest wylaczony. Poniewaz ludzkie oko nie dostrzega migotania z cze- stotliwosciq przekraczajqeq 50 cykli na sekunde, uzytkownik ma wragenie, Ze dioda LED stale Swieci Inn wyészy jest taw. wspélezynnik wypelnienia impulsu (ang, duty cycle), tj. im dluzej odpowiedni pin eyfrowy jest wlaczony (im rzadziej jest wylqczony), tym jasniej (przynajmniej w odezuciu uzytkownika) swieci dioda LED podla- czona do tego pinu wyjsciowego. R6z;e wspétezynniki wypelnienia modulacji szerokosci impulsu (PWM) po- kazano na rysunku 3.14. Wypelnione szare obszary reprezentuja czas, w kt6rym dioda LED rzeczywiscie jest wlaczona. Jak widaé, czas, w ktorym dioda LED. rzeczywiscie swieci, jest tym dhuzszy, im wy2szy jest wspélezynnik wypelnie Metoda modulacji szerokoSci impulsu (PWM) moze byé stosowana tylko za posrednictwem pinéw cyfrowych nr 3, 5, 6, 9, 10 11 na plytce Arduino. Wszystkie te piny oznaczono na plytee Arduino znakiem tyldy (~); patrz rysunek 3.15. ia. Rozdzial 3 sv 100% wspétczynnik wypetnienia ov ee sv 603% wspétczynnik wypetnienia ov sv 40% wspélczynnik wypetnienia ov sv 20% wspotczynnik wypetnienia ov Rysunek 3.14. Rézne poziomy wspékczynnika wypelnienia modulagji szerokosci impulsu Rysunek 3.15. Piny umozliwiajgce stosowanie modulacji PWM oznaczono symbolem tyldy (~) Sygnal PWM mozna wygenerowaé za pomocg funkeji analogirite(x, y), gdzie x reprezentuje odpowiedni pin cyfrowy, natomiast y reprezentuje wartosé wspélezynnika wypelnienia impulsu (z przedzialu od 0 do 255, gdzie 0 oznacza 0% wspélezynnik wypelnienia, a 255 oznacza 100% wspélezynnik wypelnienia) Projekt nr 3: przyktad zastosowania metody PWM Sprobujmy teraz zastosowaé opisanga metode w obwodzie z projektu nr 2. Wy- starezy wpisaé ponizszy szkic w srodowisku IDE i wyslaé gotowy kod na plat- forme Arduino: //. Projekt nr 3 — przyklad zastosowania metody PWM = void setup() { pinMode(3, OUTPUT); // dioda LED jest sterowana przez pin nr 3 (przystosowany // do obslugi modulacji PWM) Pierwsze kroki 67 void loop() { for ( int a-0; a < 256; at) { analoguirite(3, a); delay(d); } for ( int a= 255 ; a>= 03 { analoghrite(3, a); delay(d) ; } delay (200); Dioda LED podlaczona do pinu cyfrowego nr 3 bedzie plynnie zwigkszala i zmniejszala jasnosé wraz z rosnqcym i spadajacymn wspélezymnikiem wypelnie~ nia impulsu. Imnymi slowy, dioda LED zostanie wlaczona, bedzie swiecila coraz jaSniej (az do osiggnigcia maksymalnej jasnosci), a nastepnie bedzie plynnie ga- sla (az do calkowitego wylgczenia). Zachecam do samodzielnych eksperymentow z tym szkicem i obwodem. Warto na przyklad zastosowaé pieé diod LED rozja- Snianych i Sciemnianych jednoczesnie lub w okreslonej sekwencji Dodatkowe komponenty elektroniczne OSTRZEZENIE Samo planowanie sterowania wzqdzeniami za posrednictwem cyfrowych pinéw wyjsciowych (bez uwzgledniania wymaganego nateZenia pradu) zwykle jest dosé proste, Podczas wlasciwej realizacji projekt musimy jednak pamietaé, Ze kaady z cyfrowych pinéw wyjsciowych na plytce Arduino Uno moze dostarczaé prad o natgzeniu 40 ma (wszystkie te piny Iycznie dostarczajg prad 0 natyzeniu 200 ma). Okazuje sig jednak, Ze istnieja trzy komponenty sprzetowe ulatwiajace zarzadza- nie nateZeniem generowanyin przez piny cyfrowe na plytce Arduino — wszystkie te komponenty zostang oméwione w ponizszych punktach. los Proba preekroczenia natezenia 40 mA na pojedynezym pinie lub natezenia 200 mA na wszystkich pinach moze doprowadzié do uszkodzenia ukladu scalonego mi- krokontrolera. Tranzystor Niemal kazdy slyszal o tranzystorze, jednak wieksz0$¢ nie wie, jak naprawde dziala to urzadzenie. Aby uniknaé dlugich prezentacji, postaram sie modliwie najprosciej wyjasnié dzialanie tranzystora. Tranzystor umodliwia wlaczanie lub wylaczanie przeplywu pradu o natezeniu duzo wiekszym niz to obstugiwane przez 68 Rozdziat 3 UWAGA platforme Arduino Uno. Okazuje sig jednak, Ze dzialaniem tranzystora mozna bezpiecznie sterowaé za posrednictwem cyfrowych pinéw wyjsciowych na plytce Arduino. Przyklad populamego tranzystora, BC548, pokazano na rysunku 3.16. 11 Preplyw mn. natezenia ( 20, 30 ac E Rysunek 3.16, Typowy tranzystor: BC548 Podobnie jak w przypadku diody LED, kazda n6zka tranzystora pelni okre- slong funkejg, zatem tranzystor nalezy podlgezyé do obwodu w odpowiedniej |. Jesli patrzymy na plaska strong tranzystora (tak jak po lewej stronie rysunku 3.16), piny tranzystora BC548 nazywa sig (od lewej do prawej strony) kolektorem (C), bazq (B) i emiterem (E). (Warto pamigtaé, Ze opisany uklad pinéw dotyczy tego konkretnego tranzystora; ime tranzystory moga wymagaé odmien- nego sposobu laczenia z obwodem). Jesli prad o niewielkim natezeniu trafia do hazy tranzystora (na przyklad za posrednictwem cyfrowego pinu wejécia-wyjscia na plytce Arduino), a prad 0 wiekszym natezeniu przechodzi przez kolektor, oba natyZenia sa laezone i przckazywane dalej 2a posrednietwem emitera. W momen: wylaezenia natezenia sterujqcego przekazywanego do bazy tranzystor w ogéle nie przekazuje pradu do emitera Tranzystor BC548 moze sluzyé do przetaczania pradu 0 maksymalnym nate- Zeniu 100 mA i maksymalnym napigciu 30 V, ezyli duzo wiekszych parametrach niz parametry pradu przekazywanego przez cyfrowe piny wyjsciowe na plytce Arduino. W projeltach opisanych w dalszej czesci tej ksiqzki beda stosowane takze inne tranzystory — kazdorazowo hede doktadnie wyjaSniat dziatanie tych komponent6w. Zawsze nale uklad pindw tranzystora, poniewat kady typ tranzystora moze wymaga€ taczenia w nieco innej orientacji Dioda prostownicza Dioda prostownicza jest bardzo prostym, a mimo to wyjatkowo przydatnym kom- ponentem. Prad moze przeplywaé przez diodg prostownicza tylko w jednym kierunku. Swoim wygladem dioda prostownicza pod wieloma wzgledami przy- pomina rezystor (patrz rysunek 3.17). W projektach opisanych w tej ksigzce bedg stosowane diody prostownicze typu 1N4004. Prad trafia do diody prostowniczej za posrednictwem anody i opusz- cza ja za posrednictwem katody (odpowiednia strona diod; Scieniem na obudowie). Diody prostownic: omaczona pier- nig elementy obwodu przed Pierwsze kroki 69) DI 14004 —. + ~ Anoda Katoda — Przeplyw natezenia 0 0) OD Rysunek 3.17. Dioda prostownicza typu IN4004 przeplywem natgzenia w przeciwnym kierunku. Diody prostownicze maja jed- nak pewna wade — powodujq spadek napigcia 0 okolo 0,7 V. Dioda 1N4004 moze obslugiwaé prad o natezeniu 1 A i napigciu 400 V, ezyli duzo wyzszych parametrach niz te stosowane w opisywanych tutaj obwodach. Zalety tej diody jest jej popularnosé i niewysoka cena Przekainik rzekazniki sa stosowame w tym samym celu co tranzystory — umozliwiaja kontroly duzo wyészego natgZenia i napigcia. Zaleta prackaénika elektryeznego jest izolacja od obwodu sterujacego, dzieki czemu na przyklad plytka Arduino moze przelgczaé prad o bardzo wysokim natezeniu i napigciu. W niektérych przy- padkach taka izolacja jest niezbedna do achrony obwod6w przed duzymi nate- Zeniami i napigciami, ktére moga uszkodzié plytky Arduino. Wewnatrz przekazni- ka znajdujq sie dwa interesujqce elementy: mechanicany przelacznik oraz cewka zasilana niskim napigciem (patrz rysunek 3.18) | No NC conta “DJ - - = LP styns com Rysunek 3.18. Budowa typowego przekaénika Kiedy prad przeplywa prez cewke, komponent staje sig elektromagnesem przyciagajacym metalowy element (kt6ry pelni finkejg swoiste} déwigni prze- Igcznika). Wigczony elektromagnes (pod wplywem pradu przeplywajacego przez cewke) przyciqga metalowy element, natomiast po wylaczenin (odcigein pradu od cewki) element wraca do pozyeji wyjsciowej. Ruch tej déawigni powoduje charakterystyezny dawiek Kliknigcia (ten sam, ktory wydawaly kiernkowskazy ww starszych samochodach). 70 Rozdziat 3 Obwody zasilane wyzszym napieciem Skoro rozumiesz juz ogélne dzialanie tranzystora, diody prostownicze} i prze- kaZnika, warto podjaé probe Iqcznego wykorzystania tych komponentow do ste~ rowania wy?szymi natezeniami i napieciami. Laczenie wymienionych kompo- nentéw jest hardzo proste (patrz rysunek 3.19). Rysunek 3.19. Obwéd z przekatnikiem Ten prosty obwéd obejmuje przekaznik z cewka zasilana napigciem 12 V. Jednym z modliwych zastosowah tego obwodu jest sterowanie lampa lub wen- tylatorem systemu chlodzenia podtaezonym do styk6w przekaénika. Pin cyfrowy nr 10 na plytce Arduino polgezono z baza tranzystora za posrednictwem rezy- stora 1 kQ. Tranzystor steruje pradem przeplywajacym przez cewke przckaénika (whgeza lub wylgcza przeplyw pradu). Warto pamietaé, Ze n6zki tranzystora re- prezentuja odpowiednio koacwki C, B i F, pod warunkiem Ze patrzymy na plaska strong tranzystora. Obiekt po lewej stronie plytki uniwersalnej @ repre- zentuje zasilacz 12 V podlaczony do cewki przekaznika. Uziemienie (minus) @ zasilacza 12 V jest polaczone z pinem emitera tranzystora oraz pinem GND na plytce GND. I wreszcie dioda prostownicza 1N4004 jest polgczona z cewka, przckaénika ©; katod diody polaczono z dodatnig strona zasilacza. Piny prowa- dzace do styk6w przekaénika moéna znaledé w karcie produktu — aby wszystko bylo polgczone prawidlowo, wystarczy postepowaé wedlug danych zawartych w karcie. Dioda prostownicza ma na cela ochrong obwodu. W chwili odcigcia zasila- nia cewki przekaénika przez moment w obwodzie wystepuje zjawisko taw. pradu bladzacego — nastepuje skok napigcia, ktore nalezy gdzies skierowaé. Dioda po- woduje, Ze prad bladzqcy wielokrotnie przechodzi przez cewke ai do ostatecznego Pierwsze kroki 7 OSTRZEZENIE Jesli przekaznik ma sh zaniknigcia (zamiany na niewielka ilos¢ energii ciepnej). Opisane rozwigzanie zabezpiecza przed uszkodzeniem zaréwno tranzystor, jak i plytk Arduino. 6 do przelaczania pradu sieciowexo (110 ~ 250 V), na lezy poprosié 0 pomoc elektryka dysponujacego odpowiednimi uprawnieniami. Nawet najdrobniejsza pomytka moze sie fatalnie skoricayé dla niedoswiadezonego elektronika. Co dalej? nR Rozdzial 3. zbliza sig do konica. Mam nadziejg, 2 budowa przykladowych pro- jektéw i samodzielne eksperymenty z diodami LED sprawily Ci sporo radosci. W tym rozdziale koncentrowalismy sie na réznych sposobach sterowania miga- jacymi diodami LED za pomoca systemu Arduino, modyfikowalismy istniejgce systemy oraz poznalismy funkeje i petle, czyli konstrukeje programistyezne efektywne sterowanie komponentami podlgezonymi do plytki Arduino. Wiedza zdobyta podezas lektury tego rozdzialu hedzie bardzo pomocna w dalszych rozdzialach. Realizacja projektéw opisanych w rozdziale 4. bedzie wyjatkowo interesu cym doswiadezeniem, Zbudujemy tak praktycze systemy jak uliczna sygnalizacja Swvietlna, termometr, tester haterii — jesli wige jestes gotowy wspigé sig na ko- lejny poziom, zachecam do przewrécenia strony! Rozdzial 3 Elementy skitadowe obwodow W tym rozdziale: = nauczysz s ytaé schematy obwodéw, czyli rozumie¢ ie ©: jezyk opisywania obwod6w elektronicznych ™ poznasz kondensator; opanujesz metody stosowania pinéw wejsciowych; zaczniesz, stosowaé dzialania arytmetyczne i sprawdzaé wartos¢ zmiennych; = zaimplementujesz podejmowanie decyzji if-then-else; w formie wyrazer = zrozumiesz. r6mice dzielace sygnat analogowy od sygnatu cyfrowego = nauczysz sie mierzyé analogowe Zr6dla napiecia na r6znych poziomach precyzji; = poznasz rezystory nastawne, brzeczyki piezoelektryezne oraz czujniki temperatur; ® uporzadkujesz zdobyta wiedze, budujac system sygnalizacji Swietnej, tester baterii i termometr. Informacje zawarte w tym rozdziale powinny znacznie wlatwié zrozumienie potencjalu platformy Arduino. W tym rozdziale nadal bede wprowadzal pod- stawy elektroniki, w tym nowe komponenty, sposdb ezytania schematéw obwod6w (swoistych map drogowych obwod6w elektronicznych) oraz rodzaje mierzalnych reéci tego rozdzialu oméwie dodatkowe funkcje systemu Arduino, w tym techniki przechowywania wartosci, wykonywania dzialan matematycznych i podejmowania decyzji. I wreszcie oméwig dodatkowe komponenty, a nastypnie pokaze, jak ich uzywaé w praktyce (na przykladzie pro- jektow realizujacych pewne przydatne funkcje). sygnalow elektryeznych. W dalszej Stosowanie schematow obwodéw 74 W rozdziale 3. omawialem budowg obwodow elektronicznych, stosujae sch maty fizycznego ukladu komponentow zamontowanych na plytce uniwersalnej. Mimo Ze takie schematy fizyczne moga sig wydawaé najprostszym sposobem opisywania obwod6w, jednak po dodaniu wigkszej liezhy komponent6w sche- maty w tej formie stalyby sig zupelnie nieczytelne. Poniewad take nasze obwody beda coraz hardziej skomplikowane, w tym rozdziale zacang sig poshugiwaé sche- matami obwod6w (ang. schematic diagrams, circuit diagrams); prayldad takiego schematu pokazano na rysunku 4.1 ay cst cass jj to match Vtune max of veo Ou uF vee GND oe F cn rou vrune L3s80 —— voor Vco2_Rosi ec oN7I roa ND RFOL Rysunek 4.1. Przyktadowy schemat obwodu Schematy ohwod6w sq w istocie mapami drogowymi, kt6re opisujq Sciezke przeplywu pradu elektrycznego przez poszczegélne komponenty komponent6w i przewod6w schemat obwodu zawiera odpowiednic symbole i Tinie. Rozdzial 4 Identyfikacja komponentéw Po opanowaniu znaczenia poszcze dlnych symboli odezytywanie schematéw ob- wodsw jest dos¢ proste. W pierwszej kolejnosci wprowadze symbole reprezentu- jace komponenty, ktére byly juz stosowane w dotychezasowych projektach. Ptytka Arduino Na rysunku 4.2 pokazano symbol samej plytki Arduino. Jak widaé, wszystkie po- Igczenia tej plytki sq oznaczone odpowiednimi etykietami. REBREB z anu Gojeuy ‘ano Digital Input/Output S8eseeee2eReR88 Rysunek 4.2. Symbol plytki Arduino Uno Rezystor Symbol rezystora poka nku 4.3 Oprécz samego symbolu rezystora dobra praktykg jest umieszczanie na schemacie warto- Sci rezystaneji i numeru komponentn (w tym przypadku 220 Qi R1). Dzigki temu interpreta- cia schematu obwodu bedzie duzo latwiejsza dla kazdego, kto bedzie sig musial z nim zapoznaé (takée dla jego tworcy). Na niektorych sche- matach obwod6éw omy sa zastepowane przez wielka literg R, na przyklad 220 R. Dioda prostownicza Symbol diody prostowniczej pokazano na ry- sunku 4.4. Jak napisatem w rozdziale 3., diody prostow- nicze sq komponentami spolaryzowanymi, a prad przeplywa od anody do katody. Na symbolu po- Aazanym na rysunku 4.4 anoda znajduje sie po AYO! Buy 1s aS EN ouinpay sano oa ua za sa Rt RI 200 2200 —w—--_ sO Rysunek 4.3. Symbol rezystora D1 1N4004 ; = Anoda Katoda a Przeptyw natezenia Rysunek 4.4. Symbol diody prostowniczej lewej stronie, natomiast katoda po prawej. Najprostszym sposobem, by to za- Elementy skladowe abwodow 75 76 pamigtaé, jest przyjgcie zasady, zgodnie z kt6rq prad plynie tylko w kierunku wierzcholka trojkata. Prad nie m jest .blokowany” przez pionowa lini. Dioda LED Symbol diody LED pokazano na rysunku 4.5. Wazystkie diody sq ozmaczane tym samym symbolem — tréjkatem i pionowa linia. Oka- zuje sig jednak, ze symbole diod LED dodat- kowo zawieraja dwie réwnolegle straalki sy- gnalizujace emitowane swiatlo. Tranzystor Symbol tranzystora pokazano na rysunku 4.6. Symbol hedzie uzywany do reprezentowania tranzystora BC548. Pionowa linia na g6rze tego symbolu (ozaczona litera C) reprezentuje kolektor, po- zioma linia z lewej strony (oznaczona litera B) reprezentuje baze, a pionowa linia na dole (ozna- czona litera E) reprezentuje emiter. Strzalka aw Stodkowej ezeSci symbolu (skierowana w pra- ystoracl ae plynaé w przeciwnym kierunku, poniewaz LeD1 Czerwona (633 nm) id ‘Anoda Katoda — Przeplyw natezenia Rysunek 4.5. Symbol diody LED af c Przeplyw ; natezenia E Rysunek 4.6. Symbol tranzystora va strong w dl) wskazuje, Ze jest to tranzystor typu NPN, poniewaz tylko w tran- NPN prad moze przeplywaé od kolektora do emitera. (W tanzystorach -NP prad moze przeplywaé od emitera do kolektora). Do numerowania tranzystoréw nalezy uzywaé litery Q (tak jak do numero- wania rezystorw study litera R). Przekainik Symbol przekaénika pokazano na rysunku 4.7. Symbole przekaénikéw maja r6zne formy. i moga obejmowaé odmienne zestawy styk6w. Pewne elementy sq jednak wspélne dla wszyst- kich symboli przekaénikow. Pierwszym takim elementem jest cewka (reprezentowana przez pionowa krzywa po lewej stronie). Drugim cle- mentem wspélnym sa styki prackaénika. Styk COM (wspélny, od ang. common) zwykle jest NO NC cewka ]- =f styai com Rysunek 4.7. Symbol przekaznika udywany jako wejsciv, natomiast styki oznaczone etykietami NO (standardowo obwarty, od ang. normally open) i NC (standardowo zamlnigty, od ang. normally closed) najezesciej sq uzywane jako wyiscia Symbol zawsze reprezentuje stan wylaczonego przekaénika (kiedy ce nymi pinami COM y COM i NO (symbol reprezentujacy ten stan v Jest zasilana), ezyli z pola: cewki zostang polaczone pi gladalby nieco inacze}) Rozdzial 4 wha nie i NC. Po wlaczeniu zasilania UWAGA Potgczenia na schemacie obwodu Polaczenia (przewody) na schemaci przypadkach nalezy stosowaé moga sig laczyé Iub przecinaé — w obu ne oznaczenia (patr7. ponizsze przyklady) Przecinajqce sie, ale niepotqczone przewody Jesli dwa przewody przecinaja sig, ale nie sa po- lgezone, punkt przecigcia moze byé reprezento- wany na jeden z dwéch sposohdw (patrz rysunek 4.8). Zaden z symboli nie jest lepszy od drugiego — wybir zalezy wylycznie od preferencji autora Rysunek 4.8. Niepotgczone, schematu. przecinajgce sie przewody Potgczone przewody Jesli przewody zostaly fizycmie polaczone, miej- + sce laczenia nalezy oznaczyé wyrwina kropka Rysunek 4.9, (patrz rysunek 4.9). Drea olgezone przewody Przewody potqczone z uziemieniem Jesli przewed jest uziemiony (polaczony z uwziew be mieniem, zwykle oznaczanym jako GND), stan- — Rysunek 4.10. dardowa reprezentacja tego stanu jest symbol Symbol uziemienia (GND) pokazany na rysunku 4.10. Symbol uziemienia na kofcu linii na schemacie obwodu informuje 0 fizyez- nym podlaczenin odpowiedniego przewodu do pinu GND na plytce Arduino. Analiza przyktadowego schematu Skoro wyjaénilem juz znaczenie symboli reprezentujqcych réane komponenty oraz sposoby graficznego reprezentowania polaczefi, czas przystapié do szczego- lowej analizy schematu ohwodu narysowanego z myslq 0 projekcie nr 1. Celem projektu bylo kolejne wlaczanie i wylgczanie pieciu diod LED. ‘Warto poréwnaé schemat obwodu pokazany na rysunku 4.11 z rysunkiem 3.13 — trudno nie zgodzié sig z tym, Ze schemat obwodu jest duzo prostszym sposobem opisywania projektu niz metoda stosowana w rozdziale 3. Od tej pory hede opisywat obwody wylacznie za pomoca schematow. Przy okazji wprowadzania nowych komponentéw bedg tez prezentowal i opisywal odpowiednie s bole. Czytelnikow = 1.6 ) { digitalWrite(newLED, HIGH); delay(TedDelay) ; digitalWrite(newLED, LOW); else if ( voltage < 1.6 8& voltage > 1.4 ) digitalWrite(okLED, HIGH); delay(ledDelay) ; digitalWrite(okLED, LOW); Elementy skladowe obwodéw 101 else if ( voltage <= 1.4 ) digitalwrite(oldLED, HIGH); delay(1edDelay) ; digitalWrite(oldLED, Low); W szkicu dla projektu nr 6 system Arduino odczytuje wartosé zmierzona przez pin analogowy nr 0 @ i konwertuje ja na wartosé reprezentujaca rzeczy- wiste napigcie ©. W szkicu zastosowano tez nowy typ zmiennej, float @, ktory zostanie oméwiony w nastepnym podrozdziale. W kodzie zastosowano tez zna- ne konstrukeje, jak wyrazenia if-else, oraz kilka nowych elementéw, w tym operacje arytmetyczne i operatory pordwnujace wartosci liczbowe. Wszystkie te nowe elementy zostang opisane w nastypnym i kolejnych podrozdzialach. Dziatania arytmetyczne w systemie Arduino 102 System Arduino moze byé uéywany do zada typowych dla kieszonkowych kal- kulator6w i moze wykonywaé na przyklad operacje mnozenia, dzielenia, doda- wania i odejmowania. Oto kilka przykdad6w dzialati zapisanych w kodzie: a = 100; brat 20; c= b - 200; d= + 80; // dbedzie rowne 0 Zmienne typu float W sytuacji gdy program musi operowaé na liezbach z punktem dziesietnym (i eze= Sciq wlamkowa), wystarezy zastosowaé zmienng typu float. Wartosci przecho- wywane w zmiennych tego typu mieszczq sig w przedziale od —3,4028235 x 10" do 3,4028235 x 10", a ich precyzja najezesciej jest ograniczona do szesciu lub siedmiu miejsc po przecinku. W obliczeniach mozna dowolnie laczy¢ liczby alkowite z liczbami zmiennoprzecinkowymi. Szkic moze na przyklad zawieraé \kowej f do liezby calkowitej a, przy- operacje dodawania liczby zmiennoprzi pisujgca wynik zmiennej g typu float: int a = 1005 float fs float 9; f =a / 3; // f- 33333333 grat ts // g~ 133333333 Rozdzial 4 Operatory poréwnania liczb Podstawowe operatory poréwnania, czyli th if do obshugi cyfrowych sygnaléw wejsciowych w projekcie nr 5. Oprécz 12, byly juz stosowane w wyraze- nia wymienionych operatoréw istnieja jeszcze nastepujgce operatory umodliwiajgce poréwnywanie liczb i zmiennych numerycznych: < — mniejszy nia, > wigkszy ni iejszy lub réwny >= wiekszy lub rowny Wymienione operatory byly juz wzywane do poréwnywania liczh w szkicu dla projektu nr 6, w wierszach @, @i ©. Poprawa precyzji pomiaréw sygnatu analogowego za pomoca napiecia referencyjnego Jak wspomnialem przy okazji omawiania projektu nr 6, funkeja analogRead() zwraca wartosé proporcjonalna do odezytanego napigcia, ktére moze wynosié od 0 do 5 V. Gérna granica (5 V) to taw. napigcie referencyjne (ang. reference voltage), czyli maksymalne napigcie akceptowane na pinie analogowym plytki Arduino, dla ktérego fumkeja analogRead() zwraca najwyzszq mozliwa wartosé (réwng 1023). Aby podniesé precyzjg pomiar6w nizszych napig¢, nalezy obnizy¢ napigcie referencyjne. Jesli napigcie referencyjne wynosi 5 V, funkcja analogRead() re- prezentuje odczytany poziom za pomoca wartosci od 0 do 1023. Gdyby jednak budowany system miat stuzyé na przyktad do mierzenia napiecia, ktére nie przekracza 2 V, i gdyhy takée ten przedziat napigcia byt reprezentowany przez wartosei z przedzialu od 0 do 1023, precyzja pomiaréw bylaby duzo wyzsza. Okazuje sig, ze mozna to osiggnaé, stosujqe zewnetrzne lub wewnetrzne napig- cie referencyjne (obie techniki zostana oméwione w ponizszych punktach). Stosowanie zewnetrznego napiecia referencyjnego Pierwsza metoda stosowania napigcia referencyjnego polega na uzyciu pinu analogowego AREF (od ang, analog reference); patrz rysunek 4.32. Rysunek 4.32. Pin AREF Nowe napigcie referencyjne mozna wprowadzié, nq plytce Arduino Uno laczac odpowiednie Zrédlo napicia z pinami ARE! i GND na plytce Arduino. W ten sposéh moina obnizy¢ napigcie referencyjne ale nie mozna go podniesé, poniewaé napigcie referencyjne podlczone do plytki Arduino Uno nigdy nie moze przekraczaé 5 V. Jednym z najprostszych sposob6w Elementy skladowe abwodow 103 104 obnizenia napiecia referencyjnego jest utworzenie dzielnika napigcia zlozonego z dwoch rezystoréw (patrz rysunek 4.33). andy Bojeuy Digital mpuvOurput Rysunek 4.33. Obwéd dzielnika napigcia Wartosci HU i R2 maja wplyw na napigcie referencyjne zgodnie z poni: wzorem Vo, (as) Ri+ R3 V,, to napigcie referencyjne, V,, to napigcie wejsciowe (w tym przypadku 5 V). zym, R1i R2 to wartosci opornosci obu rezystoréw wyrazone w omach. Najprostszym sposobem dzielenia napigcia jest dwukrotne obnizenie V,, poprzez zastosowanie dwéch takich samych opornik6w RI i R2, na przyklad o wartosci 10 kQ kazdy. W takim przypadku warto zastosowaé rezystory z moz- liwie najnizszym poziomem toleraneji (na przyklad 1%) oraz sprawdzié rzeczy- wiste wartosci rezystancji przy uzyciu multimetrn, a nastepnie potwierdzié wszy kie parametry za pomoca przytoczonego wzorn. Warto tez umiescié kondensator 100 nF pomiedzy pinami AREF i GND, aby uniknaé zakléceni na pinie AREF ktére moga powodowaé niestabilne wskazania analogowego pinu wejsciowego. W przypadku zastosowania zewnetrznego napigcia referencyjnego nalezy umiescié w funkcji void setup() w szkicu nastepujacy wi analogReference (EXTERNAL) ; // wskazuje pin AREF jako srédlo napiecia referencyjnego Stosowanie wewnetrznego napiecia referencyjnego Plytka Arduino Uno ofernje takze wewngtrzne napigcie referencyjne na pozio- mie 1,1 V. Jesli ten poziom napigcia jest wystarczajqcy, nie ma potrzeby stoso- Rozdzial 4 wania Zadnych dodatkowych urzadze. Wystarezy umiescié w ciele funkeji void setup() nastepujacy kod: analogReference(INTERNAL) ; // wskazuje wewngtrzne érédlo napigcia 1,1 V jako / napigcie referencyjne Rezystor nastawny Rezystory nastawne, znane tez jako potencjometry, umodliwiaja zmiang wartosci rezystancji od 0 © do pewnej wartosci maksymalnej. Symbol rezystora nastaw- nego pokazano na rysunku 4.34. —yh— Rysunek 4.34. Symbol rezystora nastawnego (potencjometru) Rezystory nastawne maja trzy piny — jeden w srodku i dwa po bokach. Ob- r6t galki rezystora nastawnego powoduje zwiekszenie oporu elektryeznego po- migdzy jedng strong a srodkowym pinem oraz zmniejszenie oporu elektryeznego pomigdzy drugg strong a Srodkowym pinem. Rezystory nastawne sq dostepne w wersjach liniowych i logarytmicsnych. W potencjometrach liniowych obrét galki powoduje zmiane oporu ze stalg szyb- koScig, natomiast w modelach logarytmicanych zmiana poczatkowo jest niewielka, ale dalszy obrét powoduje blyskawiczny wzrost lub spadek wartogci rezystancj Potencjometry logarytmiczne zwykle stosuje sig we wzmacniaczach déwigku, poniewaz lepiej sprawdzaja sie podezas dostosowywania parametrow do ludz- kiego sluchu. W wiekszosci projektéw na bazie plytki Arduino stosuje sig liniowe rezystory nastawne podobne do tego z rysunku 4.35. Rysunek 4.35. Typowy liniowy rezystor nastawny Elementy skladowe obwodéw 105 Istnieja tez miniaturowe wersje rezystor6w nastawnych znane jako trimpoty lub trymery (patrz. rystmek 4. uwagi na niewielkie rozmiary trimpoty sto- suje sig gléwnie do regulacji parametréw w ramach obwod6w. Wana zaleta tych miniaturowych potencjometrow jest mozliwos¢ ich instalacji na plytkach uniwersalnych Le) 4) “le Qiolke q Rysunek 4.36. Prayktady réznych trimpotéw UWAGA — Przed zakupem trinpotow warto sprawdzié ich typ. W wielu preypadkach naj- nniem jest trimpot regulowany srubokretem i samkuigly w od- powiedniej obudowie (jak na rysunku 4.36), poniewaé swykle jest duo trwalszy nis tarisze, olwarle modele. Brzeczyki piezoelektryczne Brzgesyk piezoelektryczny (w skrécie piezo) to niewielkie, okragle urzadzenie generujace glosny, dosé irytujacy déwigk. Urzadzenia tego typu doskonale sprawdzaja sig w przypadku alarmow lub podezas budowy rozmaitych pro tow. Przyklad typowego brzeczyka, TDK PS1240, pokazano na rysunku 4.37 (widoczna obok moneta éwierédolarowa dobrze ilustruje niewielki rozmiar wr7a- dzenia), Rysunek 4.37. Brzeczyk piezo TDK PS1240 Brzgczyki piezoelektryczne zawieraja bardzo cienka plytke wewnatrz obudo- wy, kt6ra porusza sig po wlaczenin zasilania. Zasilanie brzgczyka pradem pra miennym (na przyklad sekwencjg wlaczony, wylaczony, wlaczony, wylaczony, powoduje wibracje wspomnianej plytki i generowanie déwiekn. 106 Rozdziat 4. Stosowanie tych urzadzen lacznie z plytka Arduino jest bardzo proste, po- niewaz sygnat moana wlaczaé i wylaczaé doKladnie tak jak w przypadku diod LED. Elementy piezo nie sq spolaryzowane i jako takie mogg byé lgczone z ob- wodem w dowolnej orientacji Schemat elementu piezo Symbol brzeczyka piezoelektrycznego stoso- wany na schematach obwod6w przypomina ry- sunek glosnika (patrz rysunek 4.38), zatem roz- poznanie tego urzadzenia nie stanowi Zadnego problemu, Rysunek 4.38. Symbol brzeczyka piezoelektrycznego UWAGA Podezas wyboru braeczyka piezoelektrycznego na polrzeby opisanego ponize] projekiu warto zwrécié uwaye na rodzaj urzqdzenia — niektdre typy braeczy- Kew wyeladajq dokladnie tak jak ten pokazany na rysunku 4.38, ale obejmuja dodatkowe whudowane obwody odpowiedzialne 2a generowanie réinych tondw, W tym praypadku dodatkowe obwody nie sq konieczne, poniewai sa wysokosé déwigku bedzie odpowiadal bezposrednio system Arduino. Projekt nr 7: praktyczne wykorzystanie brzeczyka piezo Kaédy, kto dysponuje brzeczykiem piezoelektryeznym, moze od razu wystaé ponizszy szkic na plytke Arduino i sprawdzi¢, jak ten brzeczyk dziala w praktyce: //, Projekt nr 7 — praktyezne wykorzystanie brzeczyka piezo #define PIEZO 3 // pin nr 3 umozliwia wysylanie sygnalu generujacego déwiek // rétnych tonow int del = 500; void setup() { } pinMode (PIEZO, OUTPUT) ; void loop() { @ analogWrite(PIEZO, 128); // 50% wspolczynniki wypelnienia sygnalu J) wysplanego do brzeczyka delay(del); digitalWrite(PIEZO, LOW); // wylqcza brzgc delay(del); } Elementy skladowe abwodow 107 W szkicu zastosowano technike modulacji szerokosci impulsu wysylanego za posrednictwem pinu nr 3. Zmiana wspétezymnika wypelnienia przekazanego na wejsciu funkeji analoghrite() (wartos¢ 128 reprezentuje wspélezynnik na po- ziomie 50%) @ wplywa na glosnos¢ déwigku emitowanego przez brzeczyk. Aby awiekszyé glosnosé brzeczyka, nalezy podniesé napigcie zasilania tego urzadzenia. Napigcie jest obecnie ograniczone do 5 Y, jednak zasilanie pradem © napigcin 9 lub 12 V pozwolitoby generowaé duzo glosniejszy déwiek. Ponie- waz jednak plytka Arduino nie moze dostarczaé napigcia wyZszego niz 5 V, nale- zaloby zastosowaé dla brzgczyka zewnetrzne Zr6dlo zasilania, na przyklad baterig 9 Vi sterowaé zasilaniem brzeczyka za pomoca tranzystora. Dla schematu poka- zanego na rystnku 4.39 mona zastosowaé dokladnie ten sam szkic. op JE Power fist ov nv | aver on ion Arduino — ow ne o oe leat Ma « Boo sen sn sa andy Bojeuy oe no Rysunek 4.39. Schemat dla projektu nr 7 Gzg86 schematu oznaczona wartoscig 12 V reprezentuje dodatnig strong #rédla zasilania (ujemng strong nalezy polczyé z pinem GND na plytee Arduino) Projekt nr 8: budowa szybkiego termometru Temperatura mode byé reprezentowana przez sygnal analogowy. Temperaturg moana mierzy6 na przyklad za pomoca ezujnika TMP36 firmy Analog Devices (hitp://twww.analog.com/tmp36)), ktéry pokazano na rysunku 4.40. Rozdzial 4 Rysunek 4.40. C2ujnik temperatury TMP36 Czujnik TMP36 wyglada bardzo podobnie do tranzystora BC548, ktéry za- stosowano w obwodzie opisanym w rozdziale 3. Czujnik TMP36 przekazuje na wyjsciu napigcie proporcjonalne do temperatury otoczenia, zatem okreslenie hiezacej temperatury wymaga tylko prostej konwersji odezytywanej wartosci. Na przyklad temperatura 25 stopni Celsjusza jest reprezentowana przez prad 6 napigciu 750 mV, a kazda zimiana temperatury 0 1 stopieri odpowiada zmianie zujnik TMP36 moze shizyé do mierzenia temperatur z prze~ stopni Celsjusza. Fimkcja analogRead() zwraca wartosé z przedzialu od 0 do 1023, kt6ra od- powiada napigeiu z przedzialu od 0 do nieco ponizej 5000 mV (5 V). Wystarezy pomnozyé wartosé zwracang przez funkejg analogRead() przez (5000 : 1024), aby uzyskaé rzeczywiste napiecie przekazywane przez czujnik. Nalezy jeszcze odigé wartosé 500 (czyli zastosowane w czujniku TMP36 przesunigcie niezbedne do reprezentowania temperatur ponizej zera) i podzielié otrzymana wartosé przez 10 — uzyskana w ten sposdb liczba bedzie reprezentowala temperature w stop- niach Celsjusza. Aby otrzymaé temperature w stopniach Fahrenheita, nalezy pomnozy¢ liezbg stopni Celsjusza przez 1,8 i doda¢ do wyniku liezbe 32. Cel W tym projekcie zostanie uzyty czujnik TMP36 do szybkiego sprawdzania tem- peratury. Jesli temperatura spada ponizej 20 stopni Celsjusza, jest wlaczana niebieska dioda LED. Jesli temperatura miesci sig w przedziale od 20 do 26 stop- ni, jest wlaczana zielona dioda LED, a jesli temperatura przekracza 26 stopni, system wlacza czerwong diody LED. Sprzet Oto lista urzadzen potrzebnych do realizacji tego projektu: tuzy rezystory 560 Q (od Rl do R3); czerwona dioda LED (LED); zielona dioda LED (LED2); niebieska dioda LED (LED3); czujnik temperatury TMP36; plytka uniwersalna; Elementy skladowe obwodow 109 r6ine przewody; 1 plytka Arduino i przew6d USB. Schemat Obw6d potrzebny do realizacji tego projektu jest dosé prosty. Jesli czujnik TMP36 jest ustawiony w taki sposdh, Ze jest widoczna nadrukowana etykieta, pin po lewej stronie to wejscie 5 V, pin po srodku to wyjscie, a pin po prawej stronie sluzy do polaczenia z uziemieniem (patrz rysunek 4.41). wa SV os LL Power as pn JE | oer on — er Arduino =o F* ne bp fest Digital npuvouput andy Boyeuy Rysunek 4.41. Schemat dla projektu nr 8 Szkic Cras przygotowaé szkic dla tego projekt J), Projekt nr 8 — budowa szybkiego termometru //. definicje pinéw, do ktérych podlaczono diody LED: #define HOT 6 define NORMAL 4 fdefine COLD 2 float voltage = 0; float celsius = 03 Rozdzial 4 float hotTemp = 26; float coldTemp = 20; float sensor = void setup() { pinMode(HOT, OUTPUT) ; pinMode (NORMAL, OUTPUT) ; pinMode(COLD, OUTPUT) ; } void loop() { // odezytuje stan czujnika temperatury i korwertuje wynik na stopnie Celsjusza sensor = analogRead(0); voltage = (sensor*5000)/1024; // komvertuje wskazanie czujnika na miliwolty voltage = vol tage-500; // odejmuje wartosé przesunigcia celsius = voltage/10; J] komwertuje miliwolty na stopnie Celsjusza // obsluga przedzialéw temperatur @ if ( celsius < coldTemp ) { digitalWrite(COLD, HIGH) ; delay(1000) ; digitalrite(COLD, Low); } © else if ( celsius > coldTemp && celsius <= hotTemp ) { digitalWrite (NORMAL, HIGH); delay(1000) ; digitalWrite(NORMAL, LOW); } else { // celsius > hotTemp digitalWrite(HOT, HIGH); delay (1000) ; digitalWrite(HOT, Low) ; } Szkie w tej formie odezytuje wartos¢ napigcia z czujnika TMP36 i konwer- tuje jq na temperature wyrazong w stopniach Celsjusza @. Wyrazenia if-else w wierszach @ i © poréwnuja biezqca temperature z wartosciami progowymi dla wysokiej i niskiej temperatury, aby na tej podstawie system mégl wlaczyé od- powiednig diode LED. Wyrazenia delay (1000) zapobiegaja zbyt szybkiemu mi- ganiu diod LED w sytuacji, gdy temperatura jest zblizona do wartosci progowej i jest w ladtkim czasie wielokrotnie, naprzemiennie przypisywana do dwéch prze- dzialow. Elementy skladowe obwodéw HL Doskonalenie szkicu Mimo ze opisany szkic jest dosé prosty, warto go uzyé jako punktu wyjscia do realizacji innych projektéw polegajacych na odezytywaniu danych z czujnikow. System mozna uzupelnié na przyklad 0 przelacznik PowerSwitch Tail (patrz ry- sunek 4.42), Rysunek 4.42. Przelqcznik PowerSwitch Tail umozliwiajgcy wiqczanie i wylgczanie zasilania pradu przemiennego 0 maksymalnym napigciu 120 V Za pomoca przelacznika PowerSwitch Tail podlaczonego do wyjscia cyfrowego plytki Arduino mozna hezpiecznie sterowaé urzqdzeniami zasilanymi 2 gniazd sieciowych, na przyldad grzejnikami lub lampami. (Wigcej informacji na temat tego przelacznika moza znalezé na stronie hitp://www.adafruit.com/products/268)) przelacznika PowerSwitch Tail mozna zbudowaé na przyklad auto- -rowany (zaleznie od temperatury) grzejnik nb wentylator, oswietle- nie garazowe wlqczajqce sig na pewien czas lub zdalnie sterowane, zewngtrzne impki swigteczne. Co dalej? 2 Rozdzial 4. zbliza sig do koica. Wprowadzilem mnéstwo nowych narzedzi, w tym cyfrowe piny wejsciowe i wyjsciowe, nowe rodzaje zmiennych i kilka przydatnych funkeji matematyeznych. W nastepnym rozdziale oméwig m.in. nowe, jeszcze ciekawsze techniki wykorzystania diod LED, opisze sposoby tworzenia wlasnych funkeji, przygotuje gre komputerowa oraz elektroniczng kostke do gry i wiele wigcej. Rozdzial 4 Praca z funkcjami W tym rozdziale: = utworzysz wlasne funkcje; = nauczysz sie podejmowania decyzji w kodzie za pomoca konstrukeji while i do-while; = opanujesz wysylanie i odbieranie danych pomiedzy plytka Arduino a oknem monitora portu szeregowego; | poznasz zmienne typu long. W tym rozdziale wprowadze techniki tworzenia wlasnych funkeji, czyli konstrukeji macznie poprawiajaeych czytelnos¢ szkicéw dla platformy Arduino i upraszezajacych budowane programy. Pokaze tez, jak tworzyé kod podzielony na moduly wielokrotnego uzytku, dzigki ktorym modna oszczedzié mnéstwo czas. Oméwig techniki podejmowania decyzji wplywajacych na wykonywanie hlok6w kodu. Wprowadze tez nowy typ zmiennych calkowitoliczbowych nazwany Tong. iu W dalszej czesci tego rozdzialu praygotujg nowy whasnych, niestandardowych funkeji ystem termometru przy wzy Funkeja sklada sig ze zhioru instrukji, kt6re mozna stosowaé w dowolnym iscu szkicu. Mimo ze jezyk Arduino oferuje wiele gotowych funkeji, w pew- nych sytnacjach trudno znalegé rozwigzanie w pelni odpowiadajgce potrzebom programisty. Zdarza sig tez, Ze pewien fragment szkicu musi byé wykonywany wielokrotnie (kazdorazowe powtarzanie fragmentu kodu byloby marnotraw- stwem pamigci). W obu przypadkach brakujacym elementem jest wyspecjali- zowana funkcja realizujqca konkretne zadania. Okazuje sig, Ze taka funkeja istnieje — kazdy programista moze jg sam utwor: Projekt nr 9: tworzenie funkcji powtarzajacej okreslone dziatanie 14 Za pomoca prostych finkeji mozna tatwo (na Zadanie) powtarzaé pewne dziala- nia. Na przyklad ponizsza funkeja dwukrotnie wlacza i wylacza wbudowana diode LED (odpowiednio w wierszach @ i @ oraz @i @) void blinkLED() { @ digitalWrite(13, HIGH); delay(1000) 5 @ digitalwrite(13, Low); delay (1000) ; © digitalwrite(13, HIGH); delay (1000) ; © digitalwrite(13, LOW); delay(1000) ; } Oto przyklad uzycia tej fumkeji w ramach gotowego szkicu, ktory w tej formie mozna wyskaé na plytke Arduino: // Projekt nr 9 — tworzente funkeji powtarzajace) okrestone dzialanie #define LED 13 #define del 200 void setup() { pinMode(LED, OUTPUT) ; } void blinkLED() ( digitalwrite(LED, HIGH); delay (del) s digitalWrite(LED, Low); delay (del); digitalWrite(LED, HIGH); delay (del); digitalWrite(LED, LOW); Rozdzial S delay (del); } void loop() t @ brinkLed(); delay(1000) ; } Wywolanie funkeji b1inkLED() w ciele funkeji void 100p() @ spowoduje, ze system Arduino wykona polecenia zawarte w sekeji void b1inkLED(). Innymi slowy, blinkLED() jest funkeja, kt6ra momma stosowaé w dowolnym miejscu kodu. Projekt nr 10: tworzenie funkcji ustawiajacej liczbe cykli wtaczania diod Funkcja utworzona w poprzednim podrozdziale oferuje dosé ograniczone moz- liwoSci. Co nalezatohy zrohi¢, aby zmienié liezhe cykli migania diody i czas op6tnienia? Okazuje sig, Ze to Zaden problem — wystarezy utworzyé funkcje umodliwiajaca modyfikacje tych wartosci: void blinkLED(int cycles, int del) { for ( int 2 = 0 ; 2 < cycles ; z+) { digitalWrite(LED, HIGH); delay(del); digitalWrite(LED, Low); delay(del); } } Nowa fimkeja void b1inkLED() otrzymuje na wejsciu dwie wartosei calko- witoliezhowe: cycles (liczhe cykli migania diody LED) oraz del (czas oczekis pomigdzy wlaczaniem a wylaczaniem diody LED). Jesli wige dioda LED ma byc wlaczona i wylaczona 12 razy i jesli czas Swiecenia diody w kazdym cyklu ma wynosié 100 milisekund, nalezy zastosowaé wywolanie blinkLED(12, 100) Aby sprawdzié dzialaie tej fimkeji, wystarczy wpisaé w srodowisku IDE na- stepujacy szkic: sania // Projekt nr 10— tworzenie funkcji ustawiajqcej liczbe eykli wlaczania diod #define LED 13 Praca 2 funkejami WIS void setup() { pinMode(LED, OUTPUT) ; } void blinkLED(int cycles, int del) { for ( int z= 0; 2 < cycles ; 2+ ) { digitalwrite(LED, HIGH); delay(del); digitalWrite(LED, Low); delay (del); } void loop() { @ brinkLeD(12, 100); delay(1000) ; } W wierszu @ wartosci 12 i 100 (okreslajgce odpowiednio liczhe cykli i op62- nienie) sq prackazywane do fimkeji b1inkLED(), w kt6rej po tym wywolaniu zmienna cycles bedzie miata wartos¢ 12, a zmienna del bedzie réwna 100, Omacza to, %e dioda LED zostanie wlgczona i wylgczona 12 razy, a pomigdzy kolejnymi cyklami minie 100 milisekund. Tworzenie funkcji zwracajacej wartos¢ 116 Oprécz tworzenia funkeji, kore otrzymuja na wejsciu wartosci w formie para- metrow (tak jak funkeja void binkLED() z projektu nr 10), istnieje mozliwosé tworzenia finkeji zwracajacych wartosei (tak jak fimkeja analogRead(), zvraca- jaca wartosci z przedzialu od 0 do 1023 reprezentujace pomiar na analogowym pinie wejsciowym). Slowo void zapisywane przed nazwami dotychezas tworzo- nych funkeji oznaczalo, 2 je niczego nie zwracaly — typem zwrac h wartosci byl void, ezyli brak wartosci. Warto teraz sprobowaé opracowaé kilka przydatnych funkeji, ktére beda zwracaly konkretne wart Ponizszy kod implementuje funkcjy konwertujaca stopnie Celsjusza na stopnie Fahrenheita: float convertTemp(float celsius) { float fahrenheit = 03 fahrenheit = (1.8 * celsius) + 325 return fahrenheit; Rozdzial S W pierwszym wierszu zdefiniowano nazwe funkeji (w tym przypadku convertTemp), typ zwracanej wartosci (float) oraz wszystkie zmienne, kt6re maj byé przekazywane na wejéciu fimkeji (float celsius). Aby uzyé tej fimkeji, nalezy wskazaé istniejqeg zmienna, ktérej zostanie przypisana wartosé wynikowa. Zeby na przyklad przekonwertowaé 40 stopni Celsjusza na stopnie Fabrenheita i za pisaé wynik w zmiennej tempt typu float, wystarczy uzyé wywolania funkeji convertTemp w nastepujacej formie: tempf = convertTemp (40) ; ‘Wartosé 40 zostanie przypisana zmiennej celsius w ramach funkeji convertTemp i wykorzystana w wyrageniu fahrenheit = (1.8 * celsius) + 32. Wiersz return fahrenheit w kodzie funkeji convertTemp powoduje zwrécenie otrzymanej wartosci (Ktéra zostanie nastepnie przypisana zmiennej tempf). Projekt nr 11: budowa szybkiego termometru z migajacymi diodami LED Skoro wyjasnilem juz, jak moma tworzyé niestandardowe funkcje, czas wyko- rzystaé te wiedze do przebndowy projektu termometru z rozdziahi 4., czyli systemu obejmujacego czujnik temperatury TMP36 i whudowang diode LED na plytce Arduino. Jesli temperatura spada ponizej 20 stopni Celsjusza, dioda LED miga dwukrotnie, po czym gasnie; jesli temperatura miesci sig w prze- dziale od 20 do 26 stopni Celsjusza, dioda LED miga czterokrotnie; jesli tem- peratura wzrasta powyzej 26 stopni Celsjusza, dioda LED miga szesciokrotnie. Nowy szkic bedzie bardziej modulowy dzi¢ki podzialowi kodu na odrebne fimkcje — tak przygotowany program bedzie latwiejszy do zrozumienia, a same funkeje bedzie mozna wykorzystaé w innych szkicach. Sam termometr bedzie realizowal dwa zadania: hedzie mierzyl temperature i przypisywal ja do odpo- wiedniej kategorii oraz generowal sygnal polegajgcy na miganiu diody LED okreslong liezbe razy (zalednie od temperatury). Sprzet Wymagania sprzetowe tego projektu sq minimalne & czujnik temperatury TMP36: & plytka uniwersalna; B réime przewody; & plytka Arduino i przew6d USB. Praca 2 funkcjami WIT UWAGA Schemat Obwéd niezbedny do budowy tego projektu jest bardzo prosty (schemat obwodu pokazano na rysunku 5.1). 8aa8 andinganduy jey6ig Analog Input 2222 Rysunek 5.1. Schemat obwodu dla projektu nr I Szkic Na potrzeby tego projektu nalezy utworzyé dwie funkeje w ramach szkicu. Pierwsza bedzie odezytywala wartosé z czujnika TMP36, konwertowala jq na stopnie Celsjusza, a nastepnie zwracala liczbe 2, 4 lub 6 (okreslajgcg liczby cykli migania diody LED). Szkic dla tego projektu zostanie utworzony na bazie pro- gramu dla proj W roli drugiej funkeji zostanie uzyta gotowa funkeja blinkLed() z projektu nr 9. Funkcja void To0p() bedzie wywolywala funkeje blinkLed(), a nastepnie wstrzymywala dzialanie na dwie sekundy przed rozpoczgciem kolejnego cyklu. Nalezy pamigtaé o konieesnosci zapisywwania zmodyfikowanych szkicéw projektéw i nadawania im nowych nazw plikow, by przypadkowo nie nadpisaé istniejqcych projekiw! Aby utworzyé nowy szkic, nalezy wpisaé nastepujacy kod w srodowisku IDE: IIB Rozdziat 5 // Projekt nr 11 — budowa szybkiego termometru z migajacymi diodami LED #define LED 13 int blinks void setup() { } pinMode(LED, OUTPUT) ; int checkTemp() { float voltage = float celsius float hotTemp float coldTemp float sensor int result; // odezytuje stan czujnika temperatury i komvertuje wynik na stopnie Celsjusza sensor = analogRead(0); voltage = (sensor * 5000) / 10243 // komvertyje wskazanie czujnika na miliwolty voltage = voltage - 500; |/ odejmuje przesunigcie stosowane dla napigcia celsius = voltage / 10; // konwertuje miliwolty na stopnie Celsjusza // obsluguje przedzialy temperatur if (celsius < coldTemp) { result = 25 } else if (celsius >= coldTemp && celsius <= hotTemp) { result = } else { result = 6; // (celsius > hotTemp) } return result; } void blinkLED(int cycles, int del) { for ( int z= 0; z< cycles ; z+ ) { digitalWrite(LED, HIGH) ; delay(del) ; digitalWrite(LED, LOW); delay(del) } Praca 2 funkcjami W19 i void loop) ( blinks = checkTemp(); blinkLED(blinks, 500) ; delay(2000) ; } Poniewaé w szkicu zastosowano niestandardowe funkcje, w ciele funkeji void Joop() wystarezy wywolaé te funkeje i ustawié czas oczekiwania. Funkeja check \+Temp() zwraca wartosé calkowitoliczhowa, ktéra jest przypisywana zmiennej blinks. Funkeja bl inkLED() odpowiada za miganie diody LED tyle razy, ile wy- nosi wartos¢ zmiennej blinks (z op6Znieniem 500 milisekund). Przed powt6rze- niem calej procedury szkic wstrzymuje dziatanie na 2 sekunds Wystarezy teraz wyslaé szkic na plytke Arduino i obserwowaé diode LED migajacq zaleznie od temperatury otoczenia. (Nie nalezy jeszcze rozlgezaé tego obwodu, poniewaz bedzie potrzebny w nastepnych przykladach). Wyswietlanie danych odbieranych od ptytki Arduino w oknie monitora portu szeregowego 120 Do tej pory wszystkie szkice byly wysylane na plytke Arduino, a do prezento- wania danych wyjsciowych sluzyly diody LED (ten spos6b wyswietlania byl stosowany zaréwno dla temperatury, jak i dla sygnalizacji Swietlne). Migajace diody LED moga co prawda stanowié wygodne Zr6dlo wiedzy 0 stanie systemu Arduino, ale z pewnosciq nie wystarczq do przekazywania hardziej zlozonych komunikatéw. W tym podrozdziale wyjasnig, jak uzywaé polaczenia przewodowe- go z systemem Arduino i okna monitora portu szeregowego dostgpnego w srodo- wisku IDE do wySwietlania danych przekazywanych przez plytke Arduino do komputera i wysylania na te plytke danych wprowadzanych za pomoca Klawiatury. Monitor portu szeregowego Aby otworzyé monitor portu szeregowego, nale~ zy uruchomié srodowisko IDE i Kliknaé ikony Monitor portu szeregowego na pasku narzedzi (patrz — Rysunek 5.2. Ikona Monitor rysunek 5.2). Srodowisko IDE powimo otworzyé _portu szeregowego na pasku okno monitora portu szeregowego podobne do tego narzedzi srodowiska IDE zrysunku 5.3. Jak widaé na rysunku 5.3, monitor portu szeregowego obejmuje pole wej- Sciowe w g6mej czesci okna (zlozone z pojedynczego wiersza i przycisku Send) oraz wielowierszowe pole wyjsciowe dla danych przekazywanych przez plytke Arduino. Zazaczenie pola wyboru Automatycsne przewijanie powoduje, 2e w dol- nym polu beda wySwietlane najnowsze dane wyjéciowe (starsze dane bedq Rozdzial S Rysunek 5.3. Monitor portu szeregowego stopniowo przewijane w miarg odbierania nowye th). Po usunigciu za- zaczenia tego pola wyboru uzytkownik moze rgcznie przewijaé zawartos¢ pola za pomoca pionowego paska przewijania. Uruchamianie monitora portu szeregowego Zanim bedzie modliwe korzystanie z monitora portu szeregowego, nalezy ten monitor aktywowaé, umieszezajac nastepujacy wiersz w ciele funkeji void. setup() szkicu: Serial begin (9600) ; 1600 to taw. przepuslowosé, czyli szybkosé, z jaka dane beda prze- pomigdzy komputerem a plytka Arduino, Uzyta wartos¢ musi pasowaé do ustawien widocznych w prawym dolnym rogu okna monitora portu szeregowego (patrz rysunek 5.3). Wysytanie tekstu do monitora portu szeregowego Aby wyslaé do monitora portu szeregowego tekst, kt6ry zostanie wySwietlony ww polu danych wyjseiowych, wystarezy uzyé funkeji Serial .print (): Serial.print("Arduino dla kazdego: Wywolanie funkeji powoduje wyslanie tekstu umieszezonego pomigdzy cu dzystowami do okna danych wyjsciowych monitora portu szeregowego. azfunkejami 121 Alternatywnym rozwigzaniem jest uzycie funkeji Serial.printIn(), kt6ra wyswietla tekst i umieszcza zaraz po nim znak nowego wiersza: Serial.printIn("Arduino dla kazdego!"); Wyswietlanie wartosci zmiennych ‘wietlaé wartosci zmiennych. jetlenie zawartosci zmiennej W oknic monitora portu szeregowego moina ted w Na przyklad ponizsze wywolanie spowoduje wy results: Serial .printIn(results) 5 Jesli results jest zmienna typu float, wyrazenie w tej formie domyslnie wy- $wietli dwa miejsca po przecinku. Liczbe miejse po przecinku (od zera do szesciu) moina okreslié, przekazujac na wejéciu tej funkcji dodatkowy, drugi parametr (po nazwvie zmiennej). Aby na przyklad wySwietli¢ wartos¢ zmiennej typu Float ku, nalezy wzyé wywolania w postaci: z czterema miejscami po przt Serial.print (results, 4); Projekt nr 12: wyswietlanie temperatury w oknie monitora portu szeregowego W tym projekcie zostang wykorzystane urzadzenia uzyte wezesniej w projekcie nr 8. Tym razem temperatura w stopniach Celsjusza i Fahrenheita hedzie wy- swietlana w oknie monitora portu szeregowego. Szkic na potrzehy tego projektu bedzie zawieral jedng funkejg okreslajqca wartosci temperatur i druga wyswie- tlajaca te wartosci w oknie monitora portu szeregowego. W srodowisku IDE nalezy wpisaé nastypujacy kod: // Projekt nr 12— wySwietlanie temperatury w oknie monitora portu szeregowego float celsius float fahrenheit void setup() { Serial .begin (9600) ; } @ void findTemps() 122 Rozdziat 5 float voltage = 0; float sensor = 0; // odezytuje wartosé = czujnika temperatury i konwertuje ja na stopnie I] Celsjus sensor = analogRead(0) ; voltage = (sensor * 5000) / 1024; —// konwertuje wartos¢ przekazanq przez ]/ czujnik na miliwolty voltage = voltage - 500; // odejmuje przesunigcie napigcia celsius = voltage / 10; //, konwertuje miliwolty na stopnie // Celsusza fahrenheit = (1.8 * celsius) + 325 // konwermyje stopnie Celsjusza na ]/ stopnie Fahrenheita ai Fahrenheita } @ void displayTemps() { Serial.print ("Temperatura wynosi "); Serial.print(celsius, 2); Serial.print(" st. C / "); Serial.print (fahrenheit, 2); Serial.printin(" st. F"); / | funkeja printin() pow oduje, 2e nastepny komunikat zostanie zapisany w nowym wierszu } void Toop() { findTemps(); displayTemps (); delay (1000) ; } Szkic realizuje wiele dzials rzeniu dwéch funkeji: findTemps () w wierszu @ i displayTemps () w wiers: Obie funkeje sa wywolywane w ciele funkeji void loop(), ktora dzi¢ki tym wolaniom jest bardzo prosta. Struktura tego szkicu dobrze ilustruje jedng z naj wainiejszych zalet fankeji — ulatwiaja one zrozumienie kodu, poprawiaja jego modulowoS¢ i umoéliwiajg wielokrotne wykorzystywanie gotowych elementow. Po wyslaniu szkicu na plytke Arduino nalezy odezekaé kilka sekund, a nastep- nie otworzyé okno monitora portu szeregowego. Pole tekstowe powinno zawie- raé komunikaty o temperaturze podobne do tych pokazanych na rysunku 3.4 , ale jego struktura jest dosé prosta dzighi utwo- 1. Diagnozowanie systemow za pomocg monitora portu szeregowego Monitor portu szeregowego moze z powodzeniem stuzyé do taw, debugowania szkic6w, czyli znajdowania i usuwania bled6w w kodzie. Wystarezy umiescié w szkicu wyraéenia Serial .printIn() z krétkimi informacjami na temat aktualnie Praca 2 funkejami 123 wynosi vynosi vynosi wynos wyrosi wynoes ynosi ynosi wynosi wynosi Hresperatura wynosi HTesperatura wynosi Hresperatura wynosi Hresperatura wynosi Tiateoreniene NaNO — Rysunek 5.4. Dane wynikowe generowane przez projekt nr 12 podejmowanych dziala, aby nastgpnie obserwowaé przebieg wykonywania szkicu przez system Arduino. W kodzie szkicu moZna na przyklad umiesci¢ na- stepujgcy wiersz: Serial.printIn("wykonywanie funkcji findTemps()"); Jesli ten wiersz majdzie sie w ciele fimkeji findTenps(), wyswietlane komuni- katy pozwalajg stwien dzi¢, kiedy system Arduino wykonuje wspomniang funkeje. Podejmowanie decyzji za pomoca wyrazen while 124 Za pomocg wyrazef whiTe() mozna latwo powtarzaé instrukeje w ramach szkicu (instrukeje sq powtarzane tak dlugo, jak dlugo uzyty warunek jest spelniony). Warunek jest zawsze sprawdzany przed wykonaniem kodu zawartego Ww W zeniu while(). Na przyklad konstrukcja while ( temperature > 30 ) sprawdzi czy wartoSé zmiennej temperature jest wigksza niz 30. Podczas tworzenia warun- yra- ku w nawiasach okraglych po stowie while mozna stosowaé dowolne operatory kod spowoduje, ae wznowi wykonywanie programu: ystem Arduino odlic: y 10 sekund, a nastepnie int a = 05 // zmienna calkowitolic while (a<10) { azatl; delay(1000) ; Rozdzial S Szkic rozpoczyna sig od przypisania zmiennej a wartosci 0. Szkic zwieksza wartosé tej zmiennej 0 1, ezeka sekundg (delay (1000), a nastepnie powtarza ten proces az do osiggnigcia wartosei 10 przez zmienng a (while (a < 10 )). W mo- mencie osiagnigcia przez zmienng a wartosci LO por6wnanie w wyrazeniu while przestaje byé prawdziwe, zatem system Arduino moze kontynuowaé wykony- wanie szkicu od miejsca nastepujacego po zamykajacym nawiasie Kamrowym petli while. Konstrukeja do-while W przeciwiefistwie do wyrazenia while w konstrukeji do-while() test wyrazenia warunkowego jest wykonywany dopiero po wykonaniu kodu zawartego w tej strukturze. Oto przyldad uzycia tej konstrukej int a = 05 // zmienna calkowitoliczhowa do { delay(1000) ; azatl } white (a < 100 )s ‘ym razem kod umieszczony pomigdzy nawiasami Klamrowymi zostanie wy- Konany przed sprawdzeniem wyrazenia warunkowego (w tym przypadku while (a < 100 )). Oznacza to, Ze nawet jesli warunek nie jest spelniony, petla pray- na. Decyzjg 0 zastosowaniu konstrukcji while lub ‘ie od implementowanego rozwiazania. najmniej raz zostanie wykoi do-whi le nalezy podj zale: Wysytanie danych z monitora portu szeregowego do systemu Arduino Aby wyslaé dane z monitora portu szeregowego do systemu Arduino, nalezy whaczyé w tym systemic tryb nastuchiwania bufora portu szeregowego, ezyli od- bierania danych z zewnatrz za posrednictwem pinéw szeregowych (pinéw cy- frowych nr 0 i 1), ktére sq dodatkowo polaczone z ukladem USB i przewodem podigezonym do komputera. Bufor portu szeregowego zawiera dane przycho- dzace, kt6re uzytkownik wpisuje w polu wejsciowym w oknie monitora portu szeregowego. azfunkejami 125 Projekt nr 13: mnozenie liczby przez dwa 126 Aby zademonstrowaé proces wysylania i odhierania danych za posrednictwem monitora portu szeregowego, warto przeanalizowaé ponidszy szkic. Szkic ott muje pojedyncza cyfre wpisang przez uzytkownika, mnozy ja przez 2, a nastepnie \wySwietla wynik w polu danych wynikowych monitora portu szeregowego. J] Projekt nr 13 — mnozenie liczby przez dwa int number; void setup() { Serial .begin (9600) ; } void loop() { number = 0; // zmienna mumber jest gotowa na przypisanie nowej evfiy Serial.flush(); // uswwa ewentualne stare dane z bufora portu szeregowego | przed pr © while (Serial available() ( jiciem w tryb nastuchiwania 0) J / nie podejmuje 2adnych dzialati do momentu pojawienia sig danych w buforze // port szeregowego } @ while (Serial.available() > 0) { number = Serial.read() - '0'; J] odezytuje li bufora portu szeregowego, // usuwa przesuniecie ASCII dla zera: '0" } //) Wyswietla odezytang liczbe! Serial.print("Npisana Ticzba: Serial .printIn(number) ; Serial .print (number) ; Serial.print(" pomozone przez 2 réwna sie "); number = number * 25 Serial .printIn (number) ; Funkeja Serial available() w pierwszym wyrazenin while @ zwraca war- tose 0, jesli uzytkownik nie wpisal zadnych danych w monitorze portu szerego- wego. Innymi slowy, pierwsza petla while oznacza .nie podejmuj zadnych dziatah do momentu wpisania dan przez uzytkownika”. Drugie wyrazenie while @ wykaywa liezhe w buforze portu szeregowego i konwertuje otrzymany kod znaku (dane sq wpisywane w formie tekstu) na wlasciwa wartosé calkowito- Rozdzial S liczbowa, Zaraz potem system Arduino wyswietla zaréwno liczby pobrang z bufo- 1a portu szeregowego, jakci iloczyn tej wartosci i liezhy 2. Funkcja Serial. flush() na poezatku szkicu ezysci bufor portu szeregowego 1a wypadek, gdyby w momencie uruchamiania programu zawieral jakies nie- oczekiwane dane —w ten sposéb mozna przygotowaé bufor do odbierania wla- Sciwych danych. Okno monitora portu szeregowego po uruchomieniu tego szkicu pokazano na rysunku 5.5. Rysunek 5.5. Praykladowe dane wejiciowe i wyjsciowe dla projektu nr 13 Mimo ze wzytkownik moze juz wpisywaé w oknie monitora portu szerego- wego dane liczbowe, ktére zostana przetworzone przez system Arduino, stoso- wanie zmiennych typu int znacznie ogranicza zakres obstugiwanych wartosci, Okazuje sie jednak, ze przedziat wartose nacznie zwiekszyé, stosujac zmienne typu Tong. mozna Zmienne typu long Jesli monitor portu szeregowego ma akceptowaé wartosci dluasze niz zlozone z jednej cyfry, nalezy wzupelnié szkic o dodatkowy kod (pokazany w dalszej ezgSei tego rozdzialu). Okazuje sig jednak, ze zmienne typu int moga reprezentow wartosei z dosé ograniezonego przedzialu — maksymalna wartos¢ zmiennej te- go typu wynosi 32 767. Na szcz¢scie istnieje moliwos¢ poszerzenia tego limitu dzigki zastosowaniu zmiennych typu Tong. Zmienna typu Tong moze reprezen- towaé liczby calkowite z przedzialu od —2 147 483 648 do 2 147 483 647, czyli dudo wigksze wartosci niz te obslugiwane przez zmienne typu int (od ~32 768 do 32 767). zfunkcjami 127 128 Projekt nr 14: stosowanie zmiennych typu long W tym projekcie monitor portu szeregowego zostanie uzyty do przekazywania zmiennych typu Tong i liczb zlozonych z wiekszej liczby cyfr. Szkic otrzymuje pewng liezbg cyfr wpisanych przez wzytkownika, mnozy te wartos¢ przez 2, a na- stepnie wyswietla wynik w polu danye wynikowych monitora portu szeregowego. J/ Projekt nr 14— stosowanie zmiennych typu long Tong number = 0; long a = 0; void setup() { Serial .begin(9600) ; } void 1oop() { number = 0; // zmienna number jest gotowa na przypisanie nowej eyfry Serial.flush(); // usmva ewentualne stare dane 2 bufora port szeregowego // przed przejiciem w tryb nasluchiwania while (Serial.available() == 0) { // nie podejmuje zadnych dzialan do momentu wykrycia danych w buforze portu // szeregowego, // po pojawieniu sie danych funkcja Serial.available() zwréci liczbe 1] w buforze oczekujacych na przetworzenie } // w buforze jest dostepny przynajmnie) jeden znak — mozna przystapié do obliczen while (Serial.available() > 0) { // przenosi poprzednia cyfrg o jedna kolumne w lewo; // innymi slowy, Jesh bufor zawiera dane, eyfra 1 jest zamieniana na liczbe 10 nunber = number * 10; // odezytuje nastepna cyfre 2 bufora i odejmuje znak 0, // aby przekomwertowaé wpisany a = Serial.read() - ‘0's J] dodaje nowo odezytana cyfre do skunnilowanej wartosci liczhowe} number = number + a5 // krotkie opéénienie umozlowia przestanie ewentahych dodatkowych danych // wykrywanych przez Serial availableQ delay (5) 5 ak na odpowiednia cyfre } Serial.print("Wpisana liczba Serial .printIn(number) ; Serial .print (number) ; Serial.print(" pomnozone przez 2 réwna sie "); Rozdzial S

You might also like