Več razlogov, da ne uporabite Arduina v svojih načrtih. Nenavadni projekti na Arduino Uno Arduino uno r3 projekti za začetnike

V tem članku sem se odločil zbrati popolno vodnik po korakih za Arduino začetnike. Pogledali bomo, kaj je Arduino, kaj potrebujete za začetek učenja, kje prenesti in kako namestiti in konfigurirati programsko okolje, kako deluje in kako uporabljati programski jezik ter še veliko več, kar je potrebno za ustvarjanje polnopravnega kompleksne naprave, ki temeljijo na družini teh mikrokontrolerjev.

Tukaj bom poskušal podati zgoščen minimum, da boste razumeli načela dela z Arduinom. Za popolnejšo potopitev v svet programabilnih mikrokontrolerjev bodite pozorni na druge razdelke in članke tega spletnega mesta. Pustil bom povezave do drugih gradiv na tem spletnem mestu za podrobnejšo študijo nekaterih vidikov.

Kaj je Arduino in čemu je namenjen?

Arduino je elektronski oblikovalec, ki vsakomur omogoča ustvarjanje različnih elektromehanskih naprav. Arduino je sestavljen iz programske in strojne opreme. Programski del vključuje razvojno okolje (program za pisanje in razhroščevanje vdelane programske opreme), številne že pripravljene in priročne knjižnice ter poenostavljen programski jezik. Strojna oprema vključuje veliko linijo mikrokontrolerjev in že pripravljeni moduli za njih. Zahvaljujoč temu je delo z Arduinom zelo enostavno!

S pomočjo Arduina se lahko naučite programiranja, elektrotehnike in mehanike. A to ni le izobraževalni konstruktor. Na njegovi podlagi lahko naredite res uporabne naprave.
Začenši s preprostimi utripajočimi lučmi, vremenskimi postajami, sistemi za avtomatizacijo in konča z pametni dom, CNC stroji in brezpilotna letala. Možnosti niso omejene niti z vašo domišljijo, saj je navodil in idej za izvedbo ogromno.

Arduino začetni komplet

Če želite začeti učiti Arduino, morate pridobiti samo mikrokontrolersko ploščo in dodatne dele. Najbolje je kupiti začetni komplet Arduino, vendar lahko vse, kar potrebujete, izberete sami. Priporočam izbiro kompleta, ker je lažje in pogosto tudi ceneje. Tukaj so povezave do najboljših sklopov in posameznih delov, ki jih boste zagotovo morali preučiti:

Osnovni Arduino komplet za začetnike:Nakup
Velik komplet za izobraževanje in prve projekte:Nakup
Set dodatnih senzorjev in modulov:Nakup
Arduino Uno je najbolj osnovni in priročen model iz linije:Nakup
Brezspajkalna plošča za preprosto učenje in izdelavo prototipov:Nakup
Komplet žic s priročnimi konektorji:Nakup
LED set:Nakup
Komplet uporov:Nakup
Gumbi:Nakup
Potenciometri:Nakup

Razvojno okolje Arduino IDE

Za pisanje, odpravljanje napak in prenos vdelane programske opreme morate prenesti in namestiti Arduino IDE. Je zelo preprosto in priročen program. Na svoji spletni strani sem že opisal postopek prenosa, namestitve in konfiguracije razvojnega okolja. Tukaj bom pustil samo povezave do Najnovejša različica programi in

Različica Windows Mac OS X Linux
1.8.2

Programski jezik Arduino

Ko imate v rokah mikrokontrolersko ploščo in na računalniku nameščeno razvojno okolje, lahko začnete pisati svoje prve skice (firmware). Če želite to narediti, se morate seznaniti s programskim jezikom.

Programiranje Arduino uporablja poenostavljeno različico jezika C++ z vnaprej določenimi funkcijami. Kot v drugih programskih jezikih, podobnih C-ju, obstajajo številna pravila za pisanje kode. Tu so najosnovnejši:

  • Vsakemu navodilu mora slediti podpičje (;)
  • Preden deklarirate funkcijo, morate podati vrsto podatkov, ki jih vrne funkcija, ali pa je neveljaven, če funkcija ne vrne vrednosti.
  • Prav tako je treba pred deklaracijo spremenljivke navesti podatkovni tip.
  • Komentarji so označeni: // Inline in /* block */

Več o tipih podatkov, funkcijah, spremenljivkah, operatorjih in jezikovnih konstruktih lahko izveste na strani na Vseh teh informacij vam ni treba zapomniti in zapomniti. Vedno lahko obiščete referenčno knjigo in pogledate sintakso določene funkcije.

Vsa vdelana programska oprema Arduino mora vsebovati vsaj 2 funkciji. To sta setup() in loop().

nastavitveno funkcijo

Da bi vse delovalo, moramo napisati skico. Naj LED lučka zasveti po pritisku na gumb in ugasne po naslednjem pritisku. Tukaj je naša prva skica:

// spremenljivke s pini povezanih naprav int switchPin = 8; int ledPin = 11; // spremenljivke za shranjevanje stanja gumba in LED boolean lastButton = LOW; logični trenutni gumb = LOW; logično ledOn = false; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // funkcija za debouncing boolean debounse(boolean last) ( boolean current = digitalRead(switchPin); if(last != current) ( delay ( 5); current = digitalRead(switchPin); ) return current ) void loop() ( currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ; digitalWrite (ledPin, ledOn);

// spremenljivke s pini povezanih naprav

int switchPin = 8;

int ledPin = 11;

// spremenljivke za shranjevanje stanja gumba in LED

boolean lastButton = LOW;

logični trenutni gumb = LOW;

logično ledOn = false;

void setup() (

pinMode(switchPin, INPUT);

pinMode(ledPin, IZHOD);

// funkcija za odbijanje

Boolean debounse (boolean last ) (

logični tok = digitalRead(switchPin);

če (zadnji != trenutni) (

zamuda (5);

trenutno = digitalRead(switchPin);

povratni tok;

void loop() (

currentButton = debounse(lastButton);

if (lastButton == LOW && currentButton == HIGH ) (

ledOn = ! ledOn;

zadnji gumb = trenutni gumb;

digitalWrite(ledPin, ledOn);

V tej skici sem ustvaril dodatna funkcija debounse za zatiranje odboja kontakta. Na mojem spletnem mestu so informacije o zavrnjenih kontaktih. Bodite prepričani, da preverite ta material.

PWM Arduino

Impulzna širinska modulacija (PWM) je postopek krmiljenja napetosti z uporabo delovnega cikla signala. To pomeni, da lahko z uporabo PWM gladko nadzorujemo obremenitev. Na primer, lahko gladko spremenite svetlost LED, vendar se ta sprememba svetlosti ne doseže z zmanjšanjem napetosti, temveč s povečanjem intervalov nizkega signala. Načelo delovanja PWM je prikazano na tem diagramu:

Ko na LED dodamo PWM, začne hitro svetiti in ugasniti. Človeško oko tega ne more videti, ker je frekvenca previsoka. Toda pri snemanju videa boste najverjetneje videli trenutke, ko LED lučka ne sveti. To se bo zgodilo pod pogojem, da hitrost sličic kamere ni večkratnik frekvence PWM.

Arduino ima vgrajen modulator impulzne širine. PWM lahko uporabljate samo na tistih pinih, ki jih podpira mikrokrmilnik. Na primer, Arduino Uno in Nano imata 6 zatičev PWM: to so zatiči D3, D5, D6, D9, D10 in D11. Zatiči se lahko razlikujejo na drugih ploščah. Najdete lahko opis plošče, ki vas zanima

Za uporabo PWM v Arduinu obstaja funkcija, ki kot argument vzame številko pina in vrednost PWM od 0 do 255. 0 je 0% zapolnitev z visokim signalom, 255 pa 100%. Za primer napišimo preprosto skico. Poskrbimo, da bo LED gladko zasvetila, počakajmo eno sekundo in enako gladko ugasnemo in tako naprej do neskončnosti. Tukaj je primer uporabe te funkcije:

// LED je priključena na pin 11 int ledPin = 11; void setup() ( pinMode(ledPin, OUTPUT); ) void loop() ( for (int i = 0; i< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) ( analogWrite(ledPin, i); delay(5); ) )

// LED, priključen na pin 11

int ledPin = 11;

void setup() (

pinMode(ledPin, IZHOD);

void loop() (

za (int i = 0; i< 255 ; i ++ ) {

analogWrite(ledPin, i);

zamuda (5);

zamuda (1000);

za (int i = 255; i > 0; i -- ) (

Kako izbrati Arduino To vprašanje se postavlja vsem, ki so se prvič odločili ustvariti projekt z uporabo Arduina. Odločili smo se za potrebne podrobnosti: senzorje, senzorje, module itd., In bili soočeni s precejšnjim izborom Arduino plošč, poleg tega ima vsaka plošča tudi dva ali tri analoge. Nekateri ljudje mislijo, da dražje in zmogljivejše, bolje, kupijo resne rešitve, kot je Arduino Due, potem pa ugotovijo, da vse skice ne delujejo na njem in se težko spopadejo s polno močjo tega napravo sami. Drugi uberejo nasprotno pot in se soočajo z omejitvami virov (pomnilnik, zatiči, vrata, urna frekvenca, prehrana). Kako najti to zlato sredino? Poskusimo ugotoviti ...

plačaj prednosti Minusi

Arduino Uno

funkcionalnosti, kot sta ProMini in Nano
  • Plošča je najpogostejša v družini Arduino; zanjo je ustvarjeno največje število lekcij.
  • Zahvaljujoč prisotnosti plošče DIP lahko spremenite mikrokrmilnik
  • Z enako funkcionalnostjo kot Arduino ProMini, Nano in Micro je plošča velikokrat večja

Arduino Mega 2560

  • Primerni so ščiti, ustvarjeni za Arduino UNO
  • Največje število zatičev
  • Povečana kapaciteta vseh vrst pomnilnika
  • Ni ga mogoče namestiti na Breadboard brez uporabe žic

Arduino Leonardo

funkcionalnost kot MICRO

  • Primerni so ščiti, ustvarjeni za Arduino UNO
  • Plošča je izboljšana različica Arduino UNO in deluje z večino njegovih skic
  • Ni ga mogoče namestiti na Breadboard brez uporabe žic
  • Nekatere skice, ustvarjene za Arduino Uno, ne delujejo na Leonardu, ker ... uporabljajo se različni mikrokontrolerji

Arduino Due


  • Število zatičev kot Arduino Mega
  • Izvedena sta dva analogna izhoda
  • Uporablja zmogljiv 32-bitni mikrokrmilnik s frekvenco ure 84 MHz
  • Ni ga mogoče namestiti na Breadboard brez uporabe žic
  • Največja velikost plošče v celotni družini Arduino
  • Vse skice ne zagotavljajo tako visoke taktne frekvence
  • Ni vse ščit zagotavljajo prenos signalov z mejno napetostjo 3,3 V
  • Napajalna napetost 3,3V

Arduino ProMini 3,3 V

funkcionalnosti, kot sta Nano in UNO


  • Najnižja urna frekvenca mikrokontrolerja, samo 8 MHz
  • Napajalna napetost 3,3V

Arduino ProMini 5V

funkcionalnosti, kot sta Nano in UNO

  • Lahko se uporablja za oblikovanje diagramov na Breadboard
  • Najmanjša plošča v družini Arduino
  • Dobavljen brez spajkanih kontaktov, kar omogoča površinsko montažo
  • Ščiti, ustvarjeni za Arduino UNO, niso primerni
  • Ni USB krmilnika, ki zahteva zunanji programator

Arduino NANO V3.0

funkcionalnosti, kot sta ProMini in UNO


  • Lahko se uporablja za oblikovanje diagramov na Breadboard
  • Plošča je nekoliko večja od Arduino ProMini, vendar ima vrata USB in ne zahteva uporabe zunanjega programatorja
  • Ščiti, ustvarjeni za Arduino UNO, niso primerni
  • Uvedba vrat USB s krmilnikom je povzročila povečanje količine bliskovnega pomnilnika, dodeljenega zagonskemu nalagalniku (v primerjavi z Arduino ProMini)

Arduino MICRO

funkcionalnost kot Leonardo


  • Lahko se uporablja za oblikovanje diagramov na Breadboard
  • Plošča je nekoliko večja od Arduino Nano, vendar ima vso funkcionalnost Arduino Leonardo
  • Možna je simulacija različnih naprave USB pri povezavi z osebnim računalnikom (plošča bo zaznana kot miška, tipkovnica itd.)
  • Ščiti, ustvarjeni za Arduino UNO, niso primerni
  • Prenos funkcije krmilnika USB na mikrokrmilnik je povzročil povečanje količine bliskovnega pomnilnika, dodeljenega zagonskemu nalagalniku

Prvo vprašanje, ki vpliva na izbiro Arduina- kateri projekt želite izvesti?

Če želite ustvariti že pripravljen projekt, ki so jih prijazno zagotovili drugi razvijalci, potem bi bil logičen nakup Arduino, na katerem je bil projekt prvotno ustvarjen. Tukaj je treba omeniti dejstvo, da se zdaj v Ruski federaciji plošče Arduino distribuirajo pod blagovno znamko Geduino. . To pomeni, kot ste pravilno razumeli, se Arduino Micro razlikuje od Geduino Micro po imenu in logotipu (to ni analog), kot je zapisano na uradni spletni strani. In ker je slednji cenejši, je izbira očitna.

Če se še niste odločili za projekt, vendar želite kupiti Arduino za lastne poskuse, potem je pomemben dejavnik količina različni primeri v omrežju, pod enim ali drugim Arduinom. Nedvomni vodja tukaj je Arduino UNO , to je razloženo z dejstvom, da je ta plošča najstarejša v liniji Arduino, vendar ni zastarela, saj je od svojega nastanka doživela kar nekaj sprememb.

Če nameravate izvesti svoj projekt, potem je treba k izbiri Arduina pristopiti z metodo izločanja. Če ima vaš projekt module z zatiči za Arduino Uno, potem izključite Arduino ProMini 3.3V, Arduino ProMini 5V, analog Arduino Nano), vendar ima lahko drugačno vrsto priključka USB, je lahko nekoliko drugačne velikosti, ima drugačen krmilnik USB, drugačno vrsto ohišja mikrokontrolerja, barvo plošče itd. Tukaj morate razumeti, da te plošče ponavljajo funkcionalnost svojega izvirnika (ki so mu podobne po imenu), saj uporabljajo isti mikrokrmilnik ATmega iste serije. Dimenzije plošče, ohišje in tip mikrokrmilnika vrata USB, je mogoče ugotoviti s fotografije. In prisotnost "CH340G" v imenu pomeni, da krmilnik USB ni standardni čip FTDI za Arduino, ampak njegov analog CH340G, zato morate za povezavo takšnega Arduina z računalnikom namestiti gonilnik za čip CH340G . Te plošče so primerne za tiste, ki menijo, da enkratna namestitev gonilnika ni nevšečnost, znižana cena pa je prednost pred izvirnim imenom.

Arduino je zelo priljubljen med vsemi oblikovalskimi navdušenci. Z njim naj se seznanijo tudi tisti, ki zanj še niso slišali.

Kaj je Arduino?

Kako lahko na kratko opišete Arduino? Z optimalnimi besedami bo takole: Arduino je orodje, s katerim lahko ustvarite različne elektronske naprave. V bistvu je to prava strojna računalniška platforma za splošne namene. Lahko se uporablja za gradnjo enostavna vezja, in za izvedbo precej zapletenih projektov.

Oblikovalec temelji na svoji strojni opremi, ki je vhodno-izhodna plošča. Za programiranje plošče se uporabljajo jeziki, ki temeljijo na C/C++. Imenujejo se obdelava/ožičenje. Iz skupine C so podedovali izjemno preprostost, zahvaljujoč kateri jih lahko zelo hitro obvlada vsaka oseba, uporaba znanja v praksi pa ni večji problem. Da boste razumeli enostavnost dela, se pogosto reče, da je Arduino za začetnike oblikovalce čarovnikov. Celo otroci lahko razumejo plošče Arduino.

Kaj lahko zberete na njem?

Uporabe Arduina so precej raznolike, uporablja se lahko tako za najpreprostejše primere, ki jih bomo priporočili na koncu članka, kot za precej zapletene mehanizme, vključno z manipulatorji, roboti ali proizvodnimi stroji. Nekaterim obrtnikom uspe iz takšnih sistemov izdelati tablice, telefone, sisteme za nadzor in varnost doma, sisteme pametnega doma ali preprosto računalnike. Arduino projekti za začetnike, s katerimi lahko začnejo tudi tisti brez izkušenj, so na koncu članka. Uporabljajo se lahko celo za ustvarjanje primitivnih sistemov navidezna resničnost. Vse zahvaljujoč dokaj vsestranski strojni opremi in zmogljivostim, ki jih ponuja programiranje Arduino.

Kje lahko kupim komponente?

Komponente, izdelane v Italiji, veljajo za originalne. Toda cena takih kompletov ni nizka. Zato številna podjetja ali celo posamezniki izdelujejo obrtniške metode Arduino združljivih naprav in komponent, ki jih v šali imenujemo proizvodni kloni. Pri nakupu takšnih klonov ni mogoče z gotovostjo trditi, da bodo delovali, vendar želja po prihranku terja svoj davek.

Komponente je mogoče kupiti kot del kompleta ali ločeno. Obstajajo celo vnaprej pripravljeni kompleti za sestavljanje avtomobilov, helikopterjev različne vrste krmilja ali ladje. Komplet, kot je ta na zgornji sliki, narejen na Kitajskem, stane 49 dolarjev.

Več o opremi

Plošča Arduino je preprosta AVR mikrokrmilnik, ki je bil nastavljen z zagonskim nalagalnikom in ima najmanj zahtevana vrata USB-UART. Obstajajo še druge pomembne komponente, vendar bi se bilo v okviru članka bolje osredotočiti le na ti dve komponenti.

Najprej o mikrokontrolerju, mehanizmu, zgrajenem na enem vezju, v katerem se nahaja razviti program. Na program lahko vplivamo s pritiskanjem gumbov, sprejemanjem signalov iz komponent kreacije (upori, tranzistorji, senzorji itd.) itd. Poleg tega so senzorji lahko zelo različni po svojem namenu: osvetlitev, pospešek, temperatura, razdalja, pritisk, ovire itd. Enostavne dele je mogoče uporabiti kot prikazovalne naprave, od LED in visokotoncev do kompleksnih naprav, kot so grafični zasloni. Upoštevani so motorji, ventili, releji, servo motorji, elektromagneti in mnogi drugi, ki bi jih naštevali zelo, zelo dolgo. MK deluje neposredno z nekaterimi od teh seznamov z uporabo povezovalnih žic. Nekateri mehanizmi zahtevajo adapterje. A ko se enkrat lotiš oblikovanja, se boš težko odtrgal. Zdaj pa se pogovorimo o programiranju Arduino.

Izvedite več o procesu programiranja plošče

Program, ki je že pripravljen za zagon na mikrokontrolerju, se imenuje firmware. Obstaja lahko en projekt ali projekti Arduino, zato je priporočljivo, da vsako vdelano programsko opremo shranite v ločeno mapo, da pospešite postopek iskanja potrebne datoteke. Na kristal MK se nanese s posebnimi napravami: programatorji. In tukaj ima Arduino eno prednost - ne potrebuje programerja. Vse je narejeno tako, da programiranje Arduino za začetnike ni težko. Napisano kodo lahko naložite v MK preko USB kabla. Ta prednost ni dosežena z vnaprej zgrajenim programatorjem, temveč s posebno strojno programsko opremo - zagonskim nalagalnikom. Zagonski nalagalnik je poseben program, ki se zažene takoj po povezavi in ​​posluša, ali so kakšni ukazi, ali naj flash kristal, ali so Arduino projekti ali ne. Uporaba zagonskega nalagalnika ima več zelo privlačnih prednosti:

  1. Uporaba samo enega komunikacijskega kanala, ki ne zahteva dodatnih časovnih stroškov. Projekti Arduino torej ne zahtevajo, da povežete veliko različnih žic in pri njihovi uporabi bo prišlo do zmede. Za uspešno delovanje zadostuje en USB kabel.
  2. Zaščita pred ukrivljenimi rokami. Mikrokrmilnik je zelo enostavno prenesti v stanje opeke z uporabo neposredne vdelane programske opreme; Pri delu z zagonskim nalagalnikom ne boste mogli dostopati do potencialno nevarnih nastavitev (seveda s pomočjo razvojnega programa, sicer se lahko vse pokvari). Zato je Arduino za začetnike namenjen ne samo z vidika, da je razumljiv in priročen, temveč vam bo omogočil tudi, da se izognete neželenim finančnim stroškom, povezanim z neizkušenostjo osebe, ki dela z njimi.

Projekti za začetek

Ko ste kupili komplet, spajkalnik, kolofonijo in spajko, ne smete takoj oblikovati zelo zapletenih struktur. Seveda jih lahko naredite, vendar je možnost uspeha v Arduinu za začetnike precej nizka pri kompleksnih projektih. Če želite trenirati in izboljšati svoje sposobnosti, lahko poskusite implementirati nekaj enostavnejših idej, ki vam bodo pomagale razumeti interakcijo in delovanje Arduina. Kot prve korake pri delu z Arduinom za začetnike vam lahko svetujemo, da upoštevate:

  1. Ustvarite takšno, ki bo delovala zahvaljujoč Arduinu.
  2. Priključitev ločenega gumba na Arduino. V tem primeru lahko naredite tako, da lahko gumb prilagodi sij LED od točke št. 1.
  3. Priključek potenciometra.
  4. Krmiljenje servo pogona.
  5. Priključitev in delo s tribarvno LED.
  6. Priključitev piezoelektričnega elementa.
  7. Priključitev fotoupora.
  8. Priključitev senzorja gibanja in signalov o njegovem delovanju.
  9. Priključitev senzorja vlage ali temperature.

Projekti za prihodnost

Malo verjetno je, da vas Arduino zanima za povezovanje posameznih LED. Najverjetneje vas privlači priložnost, da ustvarite svoj avto ali leteči gramofon. Te projekte je težko izvajati in bodo zahtevali veliko časa in vztrajnosti, a ko boste dokončani, boste dobili, kar želite: dragoceno izkušnjo oblikovanja Arduino za začetnike.

Zamude pri Arduinu igrajo zelo veliko vlogo. Brez njih ne more delovati niti najpreprostejši primer Blinka, ki po določenem času utripa LED. Toda večina programerjev začetnikov ve malo o časovnih zakasnitvah in uporablja samo zakasnitev Arduino, ne da bi poznala stranske učinke tega ukaza. V tem članku bom podrobno govoril o časovnih funkcijah in o tem, kako jih uporabiti v Arduino IDE.

V Arduinu je več različnih ukazov, ki so odgovorni za delo s časom in premori:

  • zamuda()
  • delayMicroseconds()
  • milis()
  • mikros()

Razlikujejo se po natančnosti in imajo svoje značilnosti, ki jih je treba upoštevati pri pisanju kode.

Uporaba funkcije zakasnitve arduino

Sintaksa

Arduino delay je najenostavnejši ukaz in ga najpogosteje uporabljajo začetniki. V bistvu gre za zakasnitev, ki zaustavi program za število milisekund, navedeno v oklepajih. (V eni sekundi je 1000 milisekund.) Največja vrednost je lahko 4294967295 ms, kar je približno enako 50 dnevom. Oglejmo si preprost primer, ki jasno prikazuje, kako ta ukaz deluje.

Void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); // pošlji visok signal na pin 13 delay(10000); // premor 10000 ms ali 10 sekund digitalWrite13, LOW) ; // pošlji nizek signal na pin 13 delay(10000); // premor 10000 ms ali 10 sekund)

V metodi nastaviti Določimo, da bo pin 13 uporabljen kot izhod. V glavnem delu programa se na pin najprej pošlje visok signal, nato naredimo zamik 10 sekund. V tem času se zdi, da je program prekinjen. Nato se oglasi nizek signal in spet pride do zakasnitve in vse se začne znova. Posledično dobimo, da je zatič izmenično napajan s 5 V ali 0 V.

Jasno morate razumeti, da je med premorom z uporabo zakasnitve delo programa začasno ustavljeno, aplikacija ne bo prejela nobenih podatkov od senzorjev. To je največja pomanjkljivost uporabe funkcije zakasnitve Arduino. To omejitev lahko obidete z uporabo prekinitev, vendar bomo o tem govorili v ločenem članku.

Primer zakasnitve z utripajočo LED

Primer vezja za ponazoritev delovanja funkcije zakasnitve.
Lahko sestavite vezje z LED in uporom. Potem bomo imeli standardni primer - utripanje LED. Če želite to narediti, morate na pin, ki smo ga označili kot izhod, priključiti LED s pozitivnim kontaktom. Prosti krak LED diode povežemo z maso preko upora cca 220 Ohmov (možno malo več). Polarnost lahko določite tako, da pogledate njegovo notranjost. Velika skodelica v notranjosti je povezana z minusom, mala noga pa s plusom. Če je vaša LED nova, lahko polarnost določite z dolžino vodnikov: dolga noga je plus, kratka noga je minus.

funkcija delayMicroseconds

Ta funkcija je popoln analog zakasnitve, le da njene merske enote niso milisekunde, ampak mikrosekunde (v 1 sekundi je 1.000.000 mikrosekund). Največja vrednost bo 16383, kar je enako 16 milisekundam. Ločljivost je 4, kar pomeni, da bo število vedno večkratnik štirih. Primer izrezka bi izgledal takole:

DigitalWrite(2, HIGH); // pošlji visok signal na pin 2 delayMicroseconds(16383); // premor 16383 µs digitalWrite(2, LOW); // pošlji nizek signal na pin 2 delayMicroseconds(16383); // premor 16383 µs

Težava z delayMicroseconds je popolnoma enaka kot z zamudo - te funkcije popolnoma "obesijo" program in ta za nekaj časa dobesedno zamrzne. Trenutno je nemogoče delati z vrati, brati informacije s senzorjev in izvajati matematične operacije. Ta možnost je primerna za utripajoče luči, vendar je izkušeni uporabniki ne uporabljajo za velike projekte, saj takšne okvare tam niso potrebne. Zato je veliko bolje uporabiti spodaj opisane funkcije.

Millis funkcija namesto zakasnitve

Funkcija millis() vam bo omogočila, da izvedete zakasnitev brez zakasnitve na Arduinu in s tem zaobidete pomanjkljivosti prejšnjih metod. Največja vrednost parametra v milisekundah je enaka vrednosti funkcije zakasnitve (4294967295 ms ali 50 dni).

Z uporabo millis ne ustavimo izvajanja celotne skice, ampak samo navedemo, koliko časa naj Arduino preprosto »obide« natančen blok kode, ki ga želimo začasno ustaviti. Za razliko od delay millis sam po sebi ne ustavi ničesar. Ta ukaz nam iz vgrajenega časovnika mikrokontrolerja preprosto vrne število milisekund, ki so pretekle od začetka. Pri vsakem klicu zanke sami izmerimo čas, ki je pretekel od zadnjega klica naše kode in če je časovna razlika manjša od želene pavze, kodo zanemarimo. Takoj, ko razlika postane večja od zahtevane pavze, izvedemo kodo, dobimo trenutni čas z istimi milimetri in si ga zapomnimo - ta čas bo nova začetna točka. V naslednjem ciklu bo odštevanje že potekalo od nove točke in kodo bomo spet ignorirali, dokler nova razlika med milimetri in našo predhodno shranjeno vrednostjo ponovno ne doseže želenega premora.

Zakasnitev brez zakasnitve z uporabo millis zahteva več kode, vendar z njeno pomočjo lahko utripate LED in začasno ustavite skico, ne da bi ustavili sistem.

Tukaj je primer, ki jasno prikazuje delo ekipe:

Nepodpisani dolgi časi; // Spremenljivka za shranjevanje referenčne točke void setup() ( Serial.begin(9600); ) void loop() ( /* Na tej točki se začne izvajanje analoga delay(). Izračunajte razliko med trenutnim trenutkom in predhodno shranjena referenčna točka, izvedite kodo. = millis(); Serial.println ("10 seconds") ;

Najprej predstavimo časovno spremenljivko, ki bo shranila število milisekund. Privzeta vrednost spremenljivke je 0. V glavnem delu programa preverimo pogoj: če je število milisekund od zagona mikrokrmilnika minus število, zapisano v časovni spremenljivki, večje od 10000, potem je izvede se dejanje izpisa sporočila nadzorniku vrat in trenutna časovna vrednost se zapiše v spremenljivko. Zaradi delovanja programa se na monitorju vrat vsakih 10 sekund prikaže sporočilo 10 seconds. Ta metoda omogoča utripanje LED brez odlašanja.

Micros deluje namesto zakasnitve

Ta funkcija lahko izvede tudi zakasnitev brez uporabe ukaza za zakasnitev. Deluje popolnoma enako kot milisekunde, vendar šteje mikrosekunde in ne milisekunde z ločljivostjo 4 μs. Njegova največja vrednost je 4294967295 mikrosekund ali 70 minut. Če se prelije, se vrednost preprosto ponastavi na 0, ne pozabite na to.

Povzetek

Platforma Arduino nam ponuja več načinov za implementacijo zamude v našem projektu. Z zakasnitvijo lahko hitro zaustavite izvajanje skice, hkrati pa blokirate delovanje mikrokontrolerja. Uporaba ukaza millis vam omogoča, da v Arduinu naredite brez odlašanja, vendar bo to zahtevalo malo več programiranja. Izberite Najboljši način odvisno od zahtevnosti vašega projekta. Praviloma se v preprostih skicah in z zamikom, krajšim od 10 sekund, uporablja zamik. Če je logika delovanja bolj zapletena in je potrebna velika zakasnitev, je bolje uporabiti milise namesto zakasnitve.

Serija člankov in diagramov usposabljanja z amaterskimi radijskimi poskusi na Arduinu za začetnike. To je nekakšna amaterska radijska konstrukcijska igrača, iz katere brez spajkalnika jedkamo tiskana vezja in podobno, lahko vsak ljubitelj elektronike sestavi popolno delujočo napravo, primerno tako za profesionalno izdelavo prototipov kot za amaterske poskuse pri proučevanju elektronike.


Plošča Arduino je namenjena predvsem poučevanju radioamaterjev začetnikov osnov programiranja mikrokrmilnikov in izdelave mikrokrmilniških naprav z lastnimi rokami brez resnega teoretičnega usposabljanja. Razvojno okolje Arduino omogoča prevajanje in nalaganje že pripravljene programske kode v pomnilnik plošče. Poleg tega je nalaganje kode izjemno preprosto.

Arduino, kje začeti za začetnika

Prvič, za delo s ploščo Arduino mora začetnik elektronik prenesti razvojni program Arduino, sestavljen iz vgrajenega urejevalnika besedil, v katerem delamo s programsko kodo, območja za sporočila, okna za izpis besedila (konzola); ), orodna vrstica z gumbi za pogosto uporabljene ukaze in več meniji. Za prenos programov in komunikacijo je ta program povezan s ploščo Arduino prek standardnega kabla USB.


Koda, zapisana v Arduino okolje, poklical skica. Zapisano je v urejevalnik besedil, ki ima posebna orodja za vstavljanje/rezanje, zamenjavo/iskanje besedila. Med shranjevanjem in izvozom se v območju za sporočila prikažejo pojasnila (glejte sliko v prvi lekciji za začetnike, tik spodaj), lahko pa se prikažejo tudi napake. Konzola prikazuje sporočila Arduino, vključno s popolnimi poročili o napakah in drugim uporabne informacije. Gumbi orodne vrstice vam omogočajo, da preverite in posnamete skico, jo odprete, ustvarite in shranite, odprete nadzor serijskega vodila in še veliko več.

Pa pojdimo k prvemu. Lekcija Arduino diagrami vezij za začetnike elektronike.

Za udobje začetnikov ima krmilnik Arduino UNO že upor in LED diodo, priključeno na pin 13 konektorja, tako da v prvem poskusu ne potrebujemo zunanjih radijskih elementov.


Z nalaganjem kode Arduino našemu programu omogoči sodelovanje pri inicializaciji sistema. Da bi to naredili, mikrokrmilniku nakažemo ukaze, ki jih bo izvršil ob začetnem zagonu in nato nanje popolnoma pozabil (tj. te ukaze bo Arduino izvedel le enkrat ob zagonu). In v ta namen v naši kodi izberemo blok, v katerem so ti ukazi shranjeni. prazna nastavitev(), oziroma v prostoru znotraj zavitih oklepajev te funkcije, glejte skico programa.

Ne pozabite na zavite oklepaje! Izguba vsaj enega od njih bo naredila celotno skico popolnoma neizvedljivo. Vendar tudi ne postavljajte dodatnih oklepajev, saj bo tudi to povzročilo napako.

Prenesi kodo:
Skica s komentarji in pojasnili v datoteki 001-1_mig-led.ino

funkcija void loop() tukaj postavimo ukaze, ki se bodo izvajali, dokler bo Arduino vklopljen. Po začetku izvajanja od prvega ukaza bo Arduino prišel do samega konca in takoj šel na začetek, da ponovi isto zaporedje. In tako neskončno velikokrat, dokler plošča prejema napajanje. V svojem bistvu je void loop glavna funkcija, vstopna točka v Arduino.


funkcija zamuda(1000) zakasni obdelavo programa za 1000 milisekund. Vse se vrti v večnem krogu zanka().

Glavni zaključek po razumevanju našega prvega programa na Arduinu: Z uporabo funkcij void loop in void setup posredujemo naša navodila mikrokrmilniku. Vse, kar je znotraj nastavitvenega bloka, se izvede samo enkrat. Vsebina modula zanke se bo ponavljala v zanki, dokler bo Arduino vklopljen.

V prejšnjem programu je bila sekundna zakasnitev med vklopom in izklopom LED. V zgoraj uporabljeni najpreprostejši kodi operaterja začetnika Arduino je bil en velik minus. Za vzdrževanje premora med vklopom in izklopom LED za eno sekundo smo uporabili funkcijo zamuda() in zato krmilnik v tem trenutku ne more izvajati drugih ukazov v glavni funkciji zanka(). Popravljanje kode v funkciji zanka(), ki je predstavljen spodaj, rešuje ta problem.

Namesto da nastavimo vrednost na HIGH in nato na LOW, bomo dobili vrednost ledPin in jo obrnili. Recimo, če je bilo VISOKO, bo postalo NIZKO itd.

drugič Možnost kode Arduino za nadzor LED Tukaj:

Nato lahko zamenjate funkcijo zamuda(). Namesto tega je bolje uporabiti funkcijo milis(). Vrne število milisekund, ki so pretekle od zagona programa. Funkcija se bo prelila po približno 50 dneh izvajanja programske kode.

Podobna funkcija je mikros(), ki vrne število mikrosekund, ki so pretekle od zagona programske kode. Funkcija se vrne na nič po 70 minutah delovanja programa.

Seveda bo to naši skici dodalo nekaj vrstic kode, vendar boste zagotovo naredili več izkušen programer in bo povečal potencial vašega Arduina. Če želite to narediti, se morate le naučiti uporabljati funkcijo millis.

Jasno je treba razumeti, da najpreprostejša funkcija zakasnitve začasno ustavi izvajanje celotnega programa Arduino, zaradi česar ta v tem času ne more izvajati nobenih nalog. Namesto da prekinemo celoten program, lahko preštejemo, koliko časa je preteklo, preden se dejanje zaključi. To je lepo implementirano s funkcijo millis(). Da bo vse lažje razumljivo, bomo razmislili o naslednji možnosti za utripanje LED brez časovne zakasnitve.

Začetek tega programa je enak kot pri kateri koli drugi standardni skici Arduino.


IN v tem primeru uporabljata se dva digitalna I/O zatiča Arduino. LED je priključen na pin 8, ki je konfiguriran kot OUTPUT. Gumb je povezan z 9 prek, ki je konfiguriran kot INPUT. Ko pritisnemo na gumb, je pin 9 nastavljen na HIGH, program pa preklopi pin 8 na HIGH in s tem prižge LED. Spuščanje gumba ponastavi pin 9 na LOW. Koda nato preklopi pin 8 na LOW in izklopi indikatorsko lučko.

Za nadzor petih LED diod bomo uporabili različne manipulacije z vrati Arduino. Da bi to naredili, neposredno zapišemo podatke v Arduino vrata, vam bo to omogočilo nastavitev vrednosti za LED z uporabo samo ene funkcije.

Arduino UNO ima tri vrata: B(digitalni vhodi/izhodi od 8 do 13); C(analogni vhodi); D(digitalni vhodi/izhodi 0 do 7)

Vsaka vrata nadzorujejo tri registre. Prvi DDR določa, ali bo pin vhod ali izhod. Z uporabo drugega registra PORT lahko nastavite pin na HIGH ali LOW. S tretjim lahko preberete informacije o stanju nog Arduino, če delujejo kot vhod.

Za upravljanje vezja uporabljamo vrata B. Če želite to narediti, nastavite vse zatiče vrat kot digitalne izhode. Vrata B imajo le 6 nog. Biti registra DDRB morajo biti nastavljeni na "1" , če bo pin uporabljen kot izhod (OUTPUT), in in "0" , če nameravamo uporabiti pin kot vhod (INPUT). Biti vrat so oštevilčeni od 0 do 7, vendar nimajo vedno vseh 8 pinov

Recimo: DDRB = B00111110;// nastavite priključke B od 1 do 5 kot izhod in 0 kot vhod.

V našem vezju voznih luči uporabljamo pet izhodov: DDRB = B00011111; // nastavi priključke B od 0 do 4 kot izhode.

Če želite zapisati podatke v vrata B, morate uporabiti register PORTB. Prvo LED lahko prižgete s krmilnim ukazom: PORTB = B00000001;, prva in četrta LED: PORTB = B00001001 in tako naprej

Obstajata dva binarna operaterja premika: levi in ​​desni. Levi operater premika povzroči, da se vsi podatkovni biti premaknejo v levo, medtem ko jih desni operater premika v desno.

primer:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

Zdaj pa se vrnimo k izvorni kodi našega programa. Vnesti moramo dve spremenljivki: gor, dol bo vključeval vrednosti, kam se premakniti - gor ali dol, in drugo cylon bo pokazal, katere LED diode svetijo.

Strukturno ima taka LED en skupni terminal in tri terminale za vsako barvo. Spodaj je diagram povezovanja RGB LED na Arduino ploščo s skupno katodo. Vsi upori, uporabljeni v povezovalnem vezju, morajo biti enake vrednosti od 220-270 Ohmov.


Za povezavo s skupno katodo bo povezovalni diagram za tribarvno LED skoraj enak, le da skupni zatič ne bo priključen na maso (gnd na napravi), temveč na zatič +5 voltov. Rdeči, zeleni in modri zatiči so v obeh primerih povezani z digitalnimi izhodi krmilnika 9, 10 in 11.

Zunanjo LED bomo priključili na deveti pin Arduino UNO preko upora 220 Ohmov. Za nemoten nadzor svetlosti slednjega uporabite funkcijo analogWrite(). Zagotavlja izhod PWM signala na nogo krmilnika. Še več, ekipa pinMode() ni treba klicati. Ker analogWrite(pin,vrednost) vključuje dva parametra: pin - številka pina za izhod, vrednost - vrednost od 0 do 255.

Koda:
/*
Primer vadnice za začetnika razvijalca Arduino, ki razkriva zmožnosti ukaza analogWrite() za implementacijo učinka bledenja LED
*/
int svetlost = 0; // Svetlost LED
int fadeAmount = 5; // korak spremembe svetlosti
nepredznačen dolg trenutni čas;
nepredznačeni dolgi čas zanke;

Void setup() (
pinMode(9, IZHOD); // nastavi pin 9 kot izhod
trenutni čas = millis();
čas zanke = trenutni čas;
}

Prazna zanka() (
trenutni čas = millis();
if(currentTime >= (loopTime + 20))(
analogWrite(9, svetlost); // nastavite vrednost na pin 9

Svetlost = svetlost + fadeAmount; // dodaj korak za spreminjanje svetlosti, ki bo vzpostavljen v naslednjem ciklu

// če je dosežena min. ali maks. vrednosti, potem gremo v nasprotni smeri (obratno):
if (svetlost == 0 || svetlost == 255) (
fadeAmount = -fadeAmount ;
}
čas zanke = trenutni čas;
}
}

Arduino delovanje z kodirnikom

Kodirnik je zasnovan za pretvorbo kota vrtenja v električni signal. Iz njega prejmemo dva signala (A in B), ki sta si fazno nasprotna. V tej vadnici bomo uporabili kodirnik SparkFun COM-09117, ki ima dvanajst položajev na vrtljaj (vsak položaj je natančno 30°). Spodnja slika jasno prikazuje, kako sta izhod A in B odvisna drug od drugega, ko se kodirnik premika v smeri urnega kazalca ali nasprotni smeri urnega kazalca.

Če gre signal A s pozitivne ravni na nič, odčitamo vrednost izhoda B. Če je izhod B v tem trenutku v pozitivnem stanju, se kodirnik premakne v smeri urinega kazalca, če B odda ničelno raven, potem kodirnik se premakne v nasprotno smer. Z branjem obeh izhodov lahko z mikrokontrolerjem izračunamo smer vrtenja, s štetjem impulzov iz A izhoda dajalnika pa kot vrtenja.

Če je potrebno, lahko uporabite izračune frekvence, da ugotovite, kako hitro se vrti kodirnik.

Z uporabo kodirnika v našem primeru vadnice bomo prilagodili svetlost LED z uporabo izhoda PWM. Za branje podatkov iz kodirnika bomo uporabili metodo, ki temelji na programskih časovnikih, kar smo že opisali.

Glede na to, da lahko v najhitrejšem primeru zavrtimo gumb enkoderja za 180° v 1/10 sekunde, bi bilo to 6 pulzov v 1/10 sekunde oziroma 60 pulzov v eni sekundi.

V resnici ni mogoče vrteti hitreje. Ker moramo slediti vsem polciklom, mora biti frekvenca približno 120 Hertzov. Da bi bili popolnoma prepričani, vzemimo 200 Hz.

Ker v tem primeru uporabljamo mehanski kodirnik, je možen odboj kontakta in nizka frekvenca odlično filtrira tako klepetanje.


Na podlagi signalov programskega časovnika je potrebno stalno primerjati trenutno vrednost izhoda dajalnika A s prejšnjo vrednostjo. Če se stanje spremeni iz pozitivnega v nič, potem anketiramo stanje izhoda B. Glede na rezultat ankete stanja povečamo ali zmanjšamo števec vrednosti LED svetilnost LED. Programska koda s časovnim intervalom približno 5 ms (200 Hz) je predstavljena spodaj:

Arduino koda za začetnike:
/*
** Kodirnik
** Za nadzor svetlosti LED se uporablja kodirnik podjetja Sparkfun
*/

Notranja svetlost = 120; // Svetlost LED, začnite pri polovici
int fadeAmount = 10; // korak spremembe svetlosti
nepredznačen dolg trenutni čas;
nepredznačeni dolgi čas zanke;
const int pin_A = 12; // zatič 12
const int pin_B = 11; // zatič 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
void setup() (
// razglasi pin 9 za izhod:
pinMode(9, IZHOD); // nastavi pin 9 kot izhod
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
trenutni čas = millis();
čas zanke = trenutni čas;
}
void loop() (
trenutni čas = millis();
if(currentTime >= (loopTime + 5))( // preveri stanja vsakih 5 ms (frekvenca 200 Hz)
encoder_A = digitalRead(pin_A); // branje stanja izhoda A kodirnika
encoder_B = digitalRead(pin_B); // izhod kodirnika B
if((!encoder_A) && (encoder_A_prev))( // če se stanje spremeni iz pozitivnega v nič
if(kodirnik_B) (
// izhod B je v pozitivnem stanju, kar pomeni, da je vrtenje v smeri urinega kazalca
// povečajte svetlost sijaja, ne več kot 255
if(svetlost + fadeAmount)
sicer (
// izhod B je v ničelnem stanju, kar pomeni, da je vrtenje v nasprotni smeri urnega kazalca
// zmanjšaj svetlost, vendar ne pod ničlo
if(brightness - fadeAmount >= 0) svetlost -= fadeAmount;
}

}
kodirnik_A_prej = kodirnik_A; // shrani vrednost A za naslednjo zanko

AnalogWrite(9, svetlost); // nastavite svetlost na deveti zatič

LoopTime = trenutni čas;
}
}

V tem primeru za začetnike si bomo ogledali delo s piezo oddajnikom za ustvarjanje zvokov. Za to vzemimo piezoelektrični senzor, ki nam omogoča ustvarjanje zvočnih valov v frekvenčnem območju 20 Hz - 20 kHz.

To je amaterska radijska zasnova, kjer so LED diode nameščene po celotnem volumnu. S to shemo lahko ustvarite različne svetlobne in animacijske učinke. Kompleksna vezja lahko celo prikažejo različne tridimenzionalne besede. Z drugimi besedami, to je osnovni prostorski monitor

Servo pogon je glavni element pri oblikovanju različnih radijsko vodenih modelov, njegovo krmiljenje s krmilnikom pa je preprosto in priročno.


Nadzorni program je preprost in intuitiven. Začne se s povezovanjem datoteke, ki vsebuje vse potrebne ukaze za krmiljenje servo pogona. Nato ustvarimo servo objekt, na primer servoMain. Naslednja funkcija je setup(), v kateri določimo, da je servo priključen na deveti pin krmilnika.

Koda:
/*
Arduino Servo
*/
#vključi
Servo servoMain; // Servo objekt

Nastavitev praznine ()
{
servoMain.attach(9); // Servo je priključen na pin 9
}

void loop()
{
servoMain.write(45); // Zavrtite servo levo za 45°
zamuda (2000); // Počakajte 2000 milisekund (2 sekundi)
servoMain.write(0); // Zasukaj servo v levo za 0°
zamuda (1000); // Premor 1 s.

zamuda (1500); // Počakajte 1,5 s.
servoMain.write(135); // Zavrtite servo desno za 135°
zamuda (3000); // Premor 3 s.
servoMain.write(180); // Zavrtite servo desno za 180°
zamuda (1000); // Počakajte 1 s.
servoMain.write(90); // Zavrtite servo za 90°. Osrednji položaj
zamuda (5000); // Premor 5 s.
}

V glavni funkciji zanka(), dajemo ukaze servomotorju, med katerimi so premori.

Arduino števec na 7-segmentnem indikatorju

Ta preprost projekt Arduino za začetnike vključuje ustvarjanje števca z običajnim 7-segmentnim zaslonom s skupno katodo. Programska koda, podan spodaj, vam omogoča, da začnete šteti od 0 do 9, ko pritisnete gumb.

Sedemsegmentni indikator - je kombinacija 8 LED diod (zadnja je odgovorna za točko) s skupno katodo, ki jo lahko vklopite v želenem zaporedju, tako da ustvarjajo številke. Upoštevati je treba, da sta v tem vezju, glejte spodnjo sliko, zatiči 3 in 8 dodeljeni katodi.


Tabela korespondence je prikazana na desni Arduino zatiči in zatiči LED indikatorja.

Koda za ta projekt:

številke bajtov = (
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
void setup() (
for(int i = 2; i pinMode(i, IZHOD);
}
pinMode(9, INPUT);
}
int števec = 0;
bool go_by_switch = res;
int last_input_value = LOW;
void loop() (
if(go_by_switch) (
int switch_input_value = digitalRead(9);
if(last_input_value == LOW && switch_input_value == HIGH) (

}
zadnja_vhodna_vrednost = preklopna_vhodna_vrednost;
) drugače (
zamuda (500);
števec = (števec + 1) % 10;
}
napišiŠtevilko(števec);
}

Void writeNumber(int število) (
če (številka 9) (
vrnitev;
}
bajtna maska ​​= številke;
bajt currentPinMask = B10000000;
for(int i = 2; i if(mask & currentPinMask) digitalWrite(i,HIGH);
else digitalWrite(i,LOW);
currentPinMask = currentPinMask >> 1;
}
}

Z uporabo plošč Arduino lahko občutno razširite potencial dodatni moduli, ki ga je mogoče povezati s pini PIN skoraj katere koli naprave. Razmislite o najbolj priljubljenih in zanimivih razširitvenih modulih ali ščitih, kot jih tudi imenujemo.