Do t'ju duhet

  • Bordi Arduino UNO;
  • Kabllo USB (USB A - USB B);
  • Kompjuter personal;
  • Diodë që lëshon dritë;
  • një palë tela lidhës 5-10 cm të gjatë;
  • nëse është e mundur - dërrasë buke.
Arduino IDE

Shkarkoni mjedisin e zhvillimit të Arduino (Arduino IDE) nga faqja zyrtare e internetit për sistemin tuaj operativ (Windows, Mac OS X, Linux mbështeten). Ju mund të zgjidhni instaluesin ( Instalues), ju mund të arkivoni ( Skedar ZIP për instalim jo nga administratori). Në rastin e dytë, programi thjesht niset nga dosja, pa instalim. Skedari i shkarkuar përmban, përveç mjedisit të zhvillimit, drejtues për bordet e familjes Arduino.

Shkarkoni Arduino IDE nga faqja zyrtare e internetit

2 Lidhja Arduino te kompjuteri

Lidhni tabelën Arduino duke përdorur një kabllo USB (lloji USB-A në USB-B) me kompjuterin. LED i gjelbër ON në tabelë duhet të ndizet.


Kabllo "USB-A - USB-B" për lidhjen e Arduino me kompjuterin

3 Instalimi i shoferit për Arduino

Instaloni drejtuesin për Arduino. Konsideroni opsionin e instalimit në sistemin operativ Windows. Për ta bërë këtë, prisni derisa sistemi operativ t'ju kërkojë të instaloni drejtuesin. Rënia. Shtypni tastet Win + Pushim, vraponi Menaxheri i pajisjes. Gjeni një seksion "Portet (COM dhe LPT)". Do të shihni një port atje me emrin Arduino UNO (COMxx). Klikoni me të djathtën mbi të dhe zgjidhni Përditëso drejtuesin. Tregojuni sistemit operativ vendndodhjen e drejtuesit. Ndodhet në nëndrejtori shoferët në dosjen që sapo kemi shkarkuar.

Vini re portin në të cilin është lidhur bordi Arduino. Për të gjetur numrin e portit, hapni Device Manager dhe kërkoni seksionin "Portet (COM dhe LPT)". Numri i portit do të tregohet në kllapa pas emrit të tabelës. Nëse bordi nuk është në listë, provo ta shkëputësh nga kompjuteri dhe të presësh disa sekonda, pastaj ta lidhësh sërish.

Arduino në Windows Device Manager

4 Cilësimet Arduino IDE

Drejtoni mjedisin tuaj të zhvillimit në bordin tuaj. Për ta bërë këtë në meny Bordi i Mjeteve zgjidhni Arduino UNO.


Zgjidhni tabelën Arduino UNO në cilësimet

Specifikoni numrin e portit COM me të cilin është lidhur bordi Arduino: Porta e veglave.


Vendosni portën serike me të cilën është lidhur bordi Arduino

5 Hapni shembullin programet

Mjedisi i zhvillimit tashmë përmban shumë programe shembuj për studimin e funksionimit të bordit. Hapni shembullin "Blink": Mostrat e skedarit 01. Bazat Blink.Nga rruga, programet për Arduino quhen "skica".


Hapni një skicë shembull për Arduino

6 Montimi i qarkut me LED

Shkëputni Arduino nga kompjuteri. Mblidhni qarkun siç tregohet në figurë. Ju lutemi vini re se këmba e shkurtër e LED-it duhet të lidhet me pinin GND, këmba e gjatë me kutinë dixhitale "13" të tabelës Arduino. Është i përshtatshëm për të përdorur një dërrasë buke, por nëse nuk e keni, lidhni telat me një kthesë.

Pini dixhital "13" ka një rezistencë të integruar në tabelë. Prandaj, kur lidhni një LED në tabelë, nuk është e nevojshme të përdorni një rezistencë të jashtme kufizuese të rrymës. Kur lidhni një LED me çdo kunj tjetër Arduino, është e nevojshme të përdorni një rezistencë, përndryshe do të digjeni LED, dhe në rastin më të keq, portin Arduino me të cilin është lidhur LED!


Diagrami i lidhjes së LED me Arduino në kujtesën Arduino

Tani mund ta ngarkoni programin në memorien e bordit. Lidheni bordin me kompjuterin, prisni disa sekonda derisa bordi të inicializohet. Klikoni butonin Shkarko, dhe skica juaj do të shkruhet në kujtesën e tabelës Arduino. LED duhet të fillojë të pulsojë me gëzim për ju çdo 2 sekonda (1 sekondë ndezur, 1 sekondë fikur). Më poshtë është kodi për programin tonë të parë Arduino.

konfigurimi i zbrazët () (// blloku i inicializimit pinMode (13, OUTPUT); // vendos pinin 13 si dalje. } void loop() (// lak që përsëritet pafundësisht për sa kohë që bordi është i ndezur: digitalWrite(13, LARTË); // aplikoni një nivel të lartë në pinin 13 - ndizni vonesën LED (1000); // për 1000 ms = 1 sek. digitalWrite (13, LOW); // aplikoni një nivel të ulët në pinin 13 - fikni vonesën LED(1000); // për 1 sekondë. } // atëherë cikli përsëritet

Lexoni komentet në tekstin e programit - ato janë të mjaftueshme për të kuptuar eksperimentin tonë të parë. Së pari ne përshkruajmë bllokun e inicializimit konfigurimi (), në të cilën vendosim vlerat fillestare të variablave dhe funksionet e kunjave Arduino. Pason një lak i pafund lak (), e cila përsëritet vazhdimisht për sa kohë që bordi furnizohet me energji elektrike. Në këtë cikël kryejmë të gjitha veprimet e nevojshme. Në këtë rast, ne ndezim dhe fikim LED. Operatori vonesë () specifikon kohëzgjatjen e ekzekutimit (në milisekonda) të deklaratës së mëparshme. Operatori DigitalWrite() i tregon Arduino-s se cilës pin duhet të aplikojë tension dhe saktësisht në cilin nivel tensioni. Skica juaj e parë është gati!

Ka shumë site në rrjet të dedikuara për të punuar me bordet e familjes Arduino. Lexo, mjeshtër, mos ki frikë të eksperimentosh dhe të mësosh gjëra të reja! Ky është një aktivitet argëtues dhe shpërblyes që do t'ju sjellë shumë kënaqësi.

shënim

Kini kujdes kur punoni me tabelën Arduino - ky është një produkt elektronik që kërkon trajtim të kujdesshëm. Ka përçues të ekspozuar në pjesën e poshtme të tabelës dhe nëse e vendosni tabelën në një sipërfaqe përçuese, ekziston mundësia e djegies së tabelës. Gjithashtu, mos e prekni dërrasën me duar të lagura ose të lagura dhe shmangni zonat e lagura kur punoni.

28 09.2016

A keni menduar ndonjëherë për ta bërë jetën tuaj më të lehtë në shtëpi? Për të pasur gjëra që do të zgjidhnin detyrat e përditshme, rutinë për ju. Një pajisje inteligjente që do të kryente një funksion të dobishëm, për shembull, ujiti kopshtin, pastronte një dhomë ose mbante një ngarkesë. Këto probleme mund të zgjidhen. Por vetëm blerja e tij nuk do të jetë e mjaftueshme. Çdo kontrollues logjik industrial ose çip ka nevojë për një "tru" për të kryer një sekuencë të caktuar veprimesh. Për të kryer operacione në rastin tonë, gjuha e programimit Arduino është e përshtatshme.

Nga ky artikull do të mësoni:

Pershendetje miq! Për ata që nuk më njohin, quhem Gridin Semyon. Ju mund të lexoni për mua. Artikulli i sotëm do t'i kushtohet dy programeve kryesore, pa të cilat nuk do të kemi lëvizje të mëtejshme dhe mirëkuptim të ndërsjellë.

Përshkrimi i përgjithshëm i gjuhëve të programimit

Siç shkrova më lart, ne do të shqyrtojmë dy mjedise të njohura zhvillimi. Për analogji me, mund të ndahet në një redaktues grafik dhe një "notepad inteligjente". Këto janë programe Arduino IDE dhe FLprog.

Baza e mjedisit të zhvillimit është Processing/Wiring - ky është C++ i rregullt, i plotësuar me funksione dhe biblioteka të ndryshme. Ka disa versione për sistemet operative Windows, Mac OS dhe Linux.

Cili është ndryshimi themelor i tyre?? Arduino IDE është një mjedis zhvillimi që përshkruan kodin e programit. Dhe FLprog është i ngjashëm me CFC CoDeSyS, i cili ju lejon të vizatoni diagrame. Cili ambient është më i mirë? Të dyja janë të mira dhe të përshtatshme në mënyrën e tyre, por nëse doni të merreni seriozisht me kontrollorët, është më mirë të mësoni gjuhë të ngjashme me SI. Avantazhi i tyre kryesor është fleksibiliteti dhe natyra e pakufizuar e algoritmit. Më pëlqen shumë Arduino IDE.

Përshkrimi i Arduino IDE

Shpërndarja mund të shkarkohet nga faqen zyrtare. Shkarkoni arkivin, ai merr pak më shumë se 100 MB. Instalimi është standard, si të gjitha aplikacionet për Windows. Drejtuesit për të gjitha llojet e pllakave duhet të instalohen në paketë. Dhe kështu duket dritarja e punës e programit.

Mjedisi i zhvillimit Arduino përbëhet nga:

  • redaktori i kodit të programit;
  • zonat e mesazheve;
  • dritaret e prodhimit të tekstit;
  • shiritat e veglave me butona për komandat e përdorura shpesh;
  • disa menu

Cilësimet e Arduino IDE

Një program i shkruar në mjedisin e zhvillimit Arduino quhetskicë. Skica është shkruar në një redaktues teksti, i cili ka theksuar me ngjyra të kodit të programit të krijuar. Një shembull i një programi të thjeshtë në foton më poshtë.

Funksionaliteti shtesë mund të shtohet duke përdorurbibliotekat,që përfaqëson kodin e krijuar në një mënyrë të veçantë. Në thelb, ai nuk është i arritshëm për zhvilluesin. Mjedisi zakonisht vjen me një grup standard, i cili mund të rimbushet gradualisht. Ato janë në nëndrejtoribibliotekat Drejtori Arduino.

Shumë biblioteka vijnë me shembuj të vendosur në dosjeshembull.Zgjedhja e një biblioteke në meny do të shtojë rreshtin e mëposhtëm në kodin burimor:

Arduino

#përfshi

#përfshi

Kjo është një direktivë - një lloj udhëzimi, një skedar me kokë që përshkruan objektet, funksionet dhe konstantet e bibliotekës. Shumë funksione janë zhvilluar tashmë për shumicën e detyrave të zakonshme. Më besoni, kjo e bën jetën e programuesit më të lehtë.

Pasi të kemi lidhur tabelën elektronike me kompjuterin. Ne bëjmë cilësimet e mëposhtme - zgjidhni tabelën Arduino dhe portën Com përmes së cilës do të lidhemi.

Arduino

void setup() ( // inicializoni pinin dixhital 13 si një dalje. pinMode(13, OUTPUT); ) void loop() ( digitalWrite (13, HIGH); vonesë (1000); digitalWrite (13, LOW); vonesë (1000 );

konfigurimi i zbrazët () (

// inicializoni pinin dixhital 13 si një dalje.

pinMode (13, OUTPUT);

void loop() (

digitalWrite (13, LARTË);

vonesë (1000);

digitalWrite (13, LOW);

vonesë (1000);

Pra, nga rruga, është e përshtatshme të kontrolloni funksionalitetin e bordit që erdhi nga dyqani. Shpejt dhe lehtë.

Ekziston edhe një gjë më e përshtatshme. QuhetMonitori i portës serike (Monitor serial). Shfaq të dhënat e dërguara në platformëArduino.Zakonisht shikoj se çfarë sinjalesh më japin sensorët e ndryshëm të lidhur në tabelë.

Lidhja e bibliotekave

Ka mënyra të ndryshme për të shtuar veçori të personalizuara. Ju mund t'i lidhni bibliotekat në tre mënyra:

  1. Duke përdorur menaxherin e bibliotekës
  2. Përdorimi i importit si skedar .zip
  3. Instalimi manual.

1. Përdorimi i Menaxherit të Bibliotekës.Në dritaren e punës të programit, zgjidhni skedën Sketch. Pas kësaj, klikoni në butonin Connect Library. Menaxheri i bibliotekës do të hapet para nesh. Dritarja do të shfaqë skedarët e instaluar tashmë me një nënshkriminstaluardhe ato që mund të instalohen.

2. Përdorimi i importit si skedar .zip.Shpesh në internet mund të gjeni skedarë bibliotekë të paketuar në arkiva me një zgjatje zip. Ai përmban një header file.h dhe një kod file.cpp. Nuk ka nevojë të shpaketoni arkivin gjatë instalimit. Thjesht shkoni te menyja Sketch - Lidh bibliotekën - Shto bibliotekën .ZIP

3.Instalimi manual.Së pari, mbyllni programin Arduino IDE. Fillimisht ne shpaketojmë arkivin tonë. Dhe ne i transferojmë skedarët me shtesën .h dhe .cpp në një dosje me të njëjtin emër si arkivi. Vendosni dosjen në direktorinë rrënjë.

Dokumentet e mia\Arduino\bibliotekat

Përshkrimi i FLPprog

FLprog është një projekt falas nga zhvillues të pavarur që ju lejon të punoni me blloqe funksioni ose diagrame të shkallëve. Ky mjedis është i përshtatshëm për njerëzit - jo programuesit. Kjo ju lejon të shihni vizualisht dhe qartë algoritmin duke përdorur diagrame dhe blloqe funksionale. Shpërndarjen mund ta shkarkoni në faqen zyrtare.

Unë e kam ndjekur projektin për një kohë të gjatë. Djemtë po zhvillohen, duke shtuar vazhdimisht funksionalitete të reja dhe duke ndryshuar të vjetrat. Unë shoh premtim në këtë mjedis. Meqenëse kryen dy funksione të rëndësishme:thjeshtësia dhe lehtësia e përdorimit.

Le të përpiqemi të krijojmë një projekt të thjeshtë. Ne do të kalojmë daljen 13 në LED.

Le të krijojmë një projekt të ri. Në dritaren e sipërme, shtoni numrin e kërkuar të hyrjeve dhe daljeve, vendosni një emër dhe caktoni një hyrje ose dalje fizike në tabelë.

Ne nxjerrim elementet që na duhen nga pema e objektit dhe elementet që na duhen në kanavacën e redaktimit. Në rastin tonë, mund të përdorim një këmbëz të thjeshtë RS për ta ndezur dhe fikur.

Pas krijimit të algoritmit, klikoni në butonin e përpilimit, programi ofron një skicë të gatshme në IDE.

Ne kemi parë aftësitë dhe komoditetin e programeve për zhvillimin e algoritmeve në kontrolluesin e serisë Arduino. Ekzistojnë gjithashtu programe që ju lejojnë të krijoni diagrame strukturore dhe fotografi vizuale. Por unë rekomandoj të përdorni një redaktues teksti sepse do të jetë më e lehtë për ju më vonë. Më thuaj cili mjedis është më i përshtatshëm për ty dhe pse??

Më 22 shtator mora pjesë në një seminar në Krasnodar "Kontrolluesit e panelit me prekje OVEN SPK." Konferenca u mbajt në hotelin elegant dhe të bukur Bristol. Ishte shumë interesante dhe e lezetshme.

Në pjesën e parë të seminarit, na u fol për aftësitë dhe avantazhet e produkteve OWEN. Më pas u bë një pauzë kafeje me donuts. Mora një tufë gjërash, donuts, biskota dhe karamele, sepse isha shumë i uritur =)

Në pjesën e dytë të seminarit, pas drekës, u prezantuam. Ata na thanë shumë për vizualizimin e Uebit. Ky trend ka filluar të marrë vrull. Epo, sigurisht, kontrolloni pajisjet përmes çdo shfletuesi të Internetit. Kjo është vërtet e lezetshme. Nga rruga, vetë pajisjet janë në valixhe.

Në të ardhmen e afërt do të botoj një seri artikujsh mbi CoDeSyS 3.5. Pra, nëse dikush është i interesuar, abonohuni ose thjesht ejani ta vizitoni. Do të jem gjithmonë i lumtur!!!

Nga rruga, pothuajse harrova, artikulli tjetër do të jetë në lidhje me bordin elektronik Arduino. Do të jetë interesante, mos e humbisni.

Shihemi në artikujt e ardhshëm.

Përshëndetje, Gridin Semyon.

Prezantimi

Freeduino/Arduino është programuar në një gjuhë programimi të veçantë - bazohet në C/C++ dhe ju lejon të përdorni cilindo nga funksionet e tij. Në mënyrë të rreptë, nuk ka gjuhë të veçantë Arduino, ashtu siç nuk ka një përpilues Arduino - programet e shkruara konvertohen (me ndryshime minimale) në një program në C/C++, dhe më pas përpilohen nga përpiluesi AVR-GCC. Pra, në fakt, përdoret një variant i C/C++ i specializuar për mikrokontrolluesit AVR.

Dallimi është se ju merrni një mjedis të thjeshtë zhvillimi dhe një grup bibliotekash bazë që thjeshtojnë aksesin në pajisjet periferike të vendosura "në bordin" e mikrokontrolluesit.

Pajtohem, është shumë i përshtatshëm të filloni të punoni me një port serik me një shpejtësi prej 9600 bit në sekondë, duke bërë një telefonatë në një linjë:

Seriali.fillim(9600);

Dhe kur përdorni C/C++ "të zhveshur", do t'ju duhet të merreni me dokumentacionin për mikrokontrolluesin dhe të thërrisni diçka si kjo:

UBRR0H = ((F_CPU / 16 + 9600 / 2) / 9600 - 1) >> 8;
UBRR0L = ((F_CPU / 16 + 9600 / 2) / 9600 - 1);
sbi(UCSR0B, RXEN0);
sbi(UCSR0B, TXEN0);
sbi(UCSR0B, RXCIE0);

Këtu është një përmbledhje e shkurtër e funksioneve dhe veçorive kryesore të programimit Arduino. Nëse nuk jeni të njohur me sintaksën e gjuhëve C/C++, ju rekomandojmë t'i referoheni ndonjë literaturë për këtë çështje ose burimeve të internetit.

Nga ana tjetër, të gjithë shembujt e paraqitur janë shumë të thjeshtë, dhe me shumë mundësi nuk do të keni vështirësi për të kuptuar tekstet burimore dhe për të shkruar programet tuaja edhe pa lexuar literaturë shtesë.

Dokumentacioni më i plotë (në anglisht) është paraqitur në faqen zyrtare të projektit - http://www.arduino.cc. Ekziston gjithashtu një forum, lidhje me bibliotekat shtesë dhe përshkrimet e tyre.

Për analogji me përshkrimin në faqen zyrtare të projektit Arduino, një "port" i referohet një kontakti mikrokontrollues të lidhur me një lidhës nën numrin përkatës. Përveç kësaj, ekziston një portë komunikimi serik (port COM).

Struktura e programit

Në programin tuaj duhet të deklaroni dy funksione kryesore: setup() dhe loop().

Funksioni setup() thirret një herë, pas çdo ndezjeje ose rivendosjeje të tabelës Freeduino. Përdoreni atë për të inicializuar variablat, për të vendosur mënyrat e funksionimit të porteve dixhitale, etj.

Funksioni loop() ekzekuton në mënyrë sekuenciale komandat e përshkruara në trupin e tij pa pushim. Ato. Pas përfundimit të funksionit, ai do të thirret përsëri.

Le të shohim një shembull të thjeshtë:

void setup() // cilësimet fillestare
{
FillimSeriali (9600); // vendosja e shpejtësisë së portës serike në 9600 bps
pinMode (3, INPUT); // vendosja e portës së tretë për futjen e të dhënave
}

// Programi kontrollon portin e 3-të për praninë e një sinjali në të dhe i dërgon një përgjigje
// si një mesazh me tekst në portën serike të kompjuterit
void loop() // trupi i programit
{
nëse (DixhitalLeximi (3) == I LARTË) // kushti për votim të portit të 3-të
serialWrite ("H"); // dërgoni një mesazh në formën e shkronjës "H" në portin COM
tjetër
serialWrite ("L"); // dërgoni një mesazh në formën e shkronjës "L" në portin COM
vonesë (1000); // vonesë 1 sek.
}

pinMode (port, modalitet);

Përshkrim:

Konfiguron portën e specifikuar për të hyrë ose nxjerrë një sinjal.

Opsione:

port – numri i portit modaliteti i të cilit dëshironi të vendosni (një vlerë e plotë nga 0 në 13).

modaliteti - ose INPUT (hyrje) ose OUTPUT (dalje).

pinMode (13, OUTPUT); // Pini i 13-të do të jetë dalja
pinMode (12, INPUT); //dhe e 12-ta është hyrja

Shënim:

Hyrjet analoge mund të përdoren si hyrje/dalje dixhitale duke iu qasur atyre duke përdorur numrat 14 (hyrja analoge 0) deri në 19 (hyrja analoge 5)

digitalWrite (port, vlera);

Përshkrim:

Vendos nivelin e tensionit në të lartë (LARTË) ose të ulët (LOW) në portën e specifikuar.

Opsione:

port: numri i portit

vlera: LARTË ose E ULËT

digitalWrite (13, LARTË); // vendos pinin 13 në gjendjen "e lartë".

vlera = dixhitalLeximi (porti);

Përshkrim:

Lexon vlerën në portin e specifikuar

Opsione:

porti: numri i portit të anketuar

Vlera e kthimit: kthen vlerën aktuale në portë (LARTË ose E ULËT) e tipit int

int val;
val = Leximi dixhital(12); // anketoni kunjin e 12-të

Shënim:

Nëse nuk ka asgjë të lidhur me portën e leximit, atëherë funksioni digitalRead() mund të kthejë vlerat LART ose LOW në mënyrë të çrregullt.

Hyrja/dalja e sinjalit analog

vlera = analogLeximi (port);

Përshkrim:

Lexon një vlerë nga porta analoge e specifikuar. Freeduino përmban 6 kanale, konvertues analog në dixhital nga 10 bit secili. Kjo do të thotë që voltazhi i hyrjes nga 0 në 5V konvertohet në një vlerë të plotë nga 0 në 1023. Rezolucioni i leximit është: 5V/1024 vlera = 0,004883 V/vlerë (4,883 mV). Duhen afërsisht 100 nS (0,0001 C) për të lexuar një vlerë hyrëse analoge, kështu që shpejtësia maksimale e leximit është afërsisht 10,000 herë në sekondë.

Opsione:

Vlera e kthimit: Kthen një numër int në intervalin 0 deri në 1023 të lexuar nga porta e specifikuar.

int val;
val = analogLeximi (0); // lexoni vlerën në hyrjen e 0-të analoge

Shënim:

Portat analoge përcaktohen si hyrje të sinjalit si parazgjedhje dhe, ndryshe nga portat dixhitale, nuk kanë nevojë të konfigurohen duke thirrur funksionin pinMode.

analogWrite(port, vlera);

Përshkrim:

Nxjerr një vlerë analoge në port. Ky funksion funksionon në: 3, 5, 6, 9, 10 dhe 11 porte dixhitale Freeduino.

Mund të përdoret për të ndryshuar ndriçimin e një LED, për të kontrolluar një motor, etj. Pas thirrjes së funksionit analogWrite, porta përkatëse fillon të funksionojë në modulimin e gjerësisë së pulsit të tensionit derisa të ketë një thirrje tjetër në funksionin analogWrite (ose funksionet DigitalRead / DigitalWrite në të njëjtën portë).

Opsione:

port: numri i hyrjes analoge që po anketohet

vlera: një numër i plotë midis 0 dhe 255. Një vlerë prej 0 gjeneron 0 V në portin e specifikuar; një vlerë prej 255 gjeneron +5V në portin e specifikuar. Për vlerat midis 0 dhe 255, porti fillon të alternojë me shpejtësi midis niveleve të tensionit 0 dhe +5 V - sa më e lartë të jetë vlera, aq më shpesh porti gjeneron nivelin e LARTË (5 V).

analogWrite(9, 128) // vendos pinin 9 në një vlerë të barabartë me 2.5V

Shënim:

Nuk ka nevojë të telefononi pinMode për të vendosur portin në daljen e sinjaleve përpara se të telefononi analogWrite.

Frekuenca e gjenerimit të sinjalit është afërsisht 490 Hz.

koha = millis ();

Përshkrim:

Rikthen numrin e milisekondave që kur Freeduino ka ekzekutuar programin aktual. Numërimi do të tejmbushet dhe do të rivendoset pas rreth 9 orësh.

Vlera e kthimit: kthen një vlerë të gjatë të panënshkruar

i panënshkruar për një kohë të gjatë; // deklarimi i një ndryshoreje kohore të llojit të panënshkruar long
koha = millis (); // transferoni numrin e milisekondave

vonesë (koha_ms);

Përshkrim:

Ndalon programin për numrin e caktuar të milisekondave.

Opsione:

time_ms – koha e vonesës së programit në milisekonda

vonesë (1000); //pauzë 1 sekondë

vonesëMikrosekonda

vonesaMikrosekonda (koha_μs);

Përshkrim:

Ndalon programin për numrin e caktuar të mikrosekondave.

Opsione:

koha_μs – koha e vonesës së programit në mikrosekonda

vonesaMikrosekonda (500); //pauzë 500 mikrosekonda

pulseIn(port, vlera);

Përshkrim:

Lexon një puls (i lartë ose i ulët) nga një port dixhital dhe kthen kohëzgjatjen e pulsit në mikrosekonda.

Për shembull, nëse parametri "value" është vendosur në LARTË kur thërret funksionin, atëherë pulseIn() pret që një nivel i lartë sinjali të arrijë në port. Nga momenti i mbërritjes, fillon numërimi mbrapsht derisa të merret një nivel i ulët sinjali në port. Funksioni kthen gjatësinë e pulsit (niveli i lartë) në mikrosekonda. Punon me impulse nga 10 mikrosekonda deri në 3 minuta. Vini re se ky funksion nuk do të japë rezultat derisa të zbulohet një impuls.

Opsione:

port: numri i portës nga i cili lexojmë pulsin

vlera: lloji i pulsit LARTË ose I ULËT

Vlera e kthimit: kthen kohëzgjatjen e pulsit në mikrosekonda (lloji int)

kohëzgjatja int; // deklarimi i një variabli kohëzgjatjeje të tipit int
kohëzgjatja = pulseIn(pin, LARTË); // mat kohëzgjatjen e pulsit

Transferimi i të dhënave serike

Freeduino ka një kontrollues të integruar për transmetimin serik të të dhënave, i cili mund të përdoret si për komunikim midis pajisjeve Freeduino/Arduino ashtu edhe për komunikim me një kompjuter. Në një kompjuter, lidhja përkatëse përfaqësohet nga një port USB COM.

Komunikimi ndodh përmes portave dixhitale 0 dhe 1, dhe për këtë arsye nuk do të mund t'i përdorni ato për hyrje/dalje dixhitale nëse përdorni funksione serike.

Serial.fillimi (baud_rate);

Përshkrim:

Vendos shpejtësinë e transferimit të informacionit të portës COM në bit për sekondë për transmetimin serik të të dhënave. Për të komunikuar me një kompjuter, përdorni një nga këto shpejtësi të standardizuara: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 ose 115200. Ju gjithashtu mund të përcaktoni shpejtësinë e tjera duke kontrolluar portat 0 dhe 1.

Opsione:

baud_rate: Shpejtësia e rrjedhës së të dhënave në bit për sekondë.

Seriali.fillim(9600); //vendosni shpejtësinë në 9600 bps

Serial.e disponueshme

count = Serial.available();

Përshkrim:

Bajtet e marra nëpërmjet portës serike përfundojnë në buferin e mikrokontrolluesit, nga ku programi juaj mund t'i lexojë ato. Funksioni kthen numrin e bajteve të grumbulluara në bufer. Buferi serial mund të ruajë deri në 128 bajt.

Vlera e kthimit:

Kthen një vlerë int - numrin e bajteve të disponueshëm për lexim në buferin serial, ose 0 nëse asgjë nuk disponohet.

if (Serial.available() > 0) ( // Nëse ka të dhëna në buffer
// këtu duhet të ketë pranim dhe përpunim të të dhënave
}

char = Serial.lexo();

Përshkrim:

Lexon bajtin tjetër nga buferi i portës serike.

Vlera e kthimit:

Bajti i parë i disponueshëm i të dhënave hyrëse nga porti serial, ose -1 nëse nuk ka të dhëna hyrëse.

incomingByte = Serial.lexo(); // lexuar bajt

Përshkrim:

Pastron buferin e hyrjes së portës serike. Të dhënat në buffer humbasin dhe thirrjet e mëtejshme drejt Serial.read() ose Serial.available() do të kenë kuptim për të dhënat e marra pas thirrjes Serial.flush().

Serial.flush(); // Pastro buferin - filloni të merrni të dhëna "nga e para"

Përshkrim:

Nxjerrja e të dhënave në portën serike.

Opsione:

Funksioni ka disa forma thirrjesh në varësi të llojit dhe formatit të të dhënave dalëse.

Serial.print(b, DEC) printon një varg ASCII - paraqitjen dhjetore të numrit b.

int b = 79;

Serial.print(b, HEX) printon një varg ASCII - paraqitjen heksadecimal të numrit b.

int b = 79;

Serial.print(b, OCT) printon një varg ASCII - paraqitjen oktale të numrit b.

int b = 79;
Serial.print(b, OCT); //do të nxjerrë vargun "117" në port

Serial.print(b, BIN) printon një varg ASCII - paraqitjen binar të numrit b.

int b = 79;
Serial.print(b, BIN); //do të nxjerrë vargun "1001111" në port

Serial.print(b, BYTE) printon bajtin e ulët të b.

int b = 79;
Serial.print(b, BYTE); //do të shfaqë numrin 79 (një bajt). Në monitor
//nga porta serike marrim simbolin "O" - e tij
//kodi është 79

Serial.print(str) nëse str është një varg ose varg karakteresh, dërgon str në bajtin e bajtit të portës COM.

char bajt = (79, 80, 81); // grup prej 3 bajte me vlera 79,80,81
Serial.print("Këtu bajtet tona:"); // nxjerr rreshtin "Këtu bajtet tona:"
Serial.print(bajt); // nxjerr 3 karaktere me kodet 79,80,81 -
//këto janë personazhet "OPQ"

Serial.print(b) nëse b është i tipit byte ose char, printon vetë numrin b në port.

char b = 79;
Seriali.print(b); //do të nxjerrë karakterin "O" në port

Serial.print(b) nëse b është i tipit numër i plotë, printon paraqitjen dhjetore të b në port.

int b = 79;
Seriali.print(b); //do të nxjerrë vargun "79" në port

Përshkrim:

Funksioni Serial.println është i ngjashëm me funksionin Serial.print dhe ka të njëjtat opsione thirrjesh. Dallimi i vetëm është se dy karaktere shtesë dalin pas të dhënave - një karakter kthimi i karrocës (ASCII 13, ose "\r") dhe një karakter i ri i linjës (ASCII 10, ose "\n").

Shembulli 1 dhe shembulli 2 do të nxjerrin të njëjtën gjë në port:

int b = 79;
Serial.print(b, DEC); //do të nxjerrë vargun "79" në port
Serial.print("\r\n"); //do të shfaqë karakteret "\r\n" - furnizimi i linjës
Serial.print(b, HEX); //do të nxjerrë vargun "4F" në port
Serial.print("\r\n");//do të printojë karakteret "\r\n" – furnizimi i linjës

int b = 79;
Serial.println(b, DEC); //do të nxjerrë vargun "79\r\n" në port
Serial.println(b, HEX); //do të nxjerrë vargun "4F\r\n" në port

Në monitorin e portit serik marrim.

Nga se përbëhet programi?

Për të filluar, ia vlen të kuptohet se një program nuk mund të lexohet dhe shkruhet si një libër: nga kopertina në kopertinë, nga lart poshtë, rresht pas rreshti. Çdo program përbëhet nga blloqe të veçanta. Fillimi i një blloku kodi në C/C++ tregohet nga një mbajtës kaçurrelë i majtë (, fundi i tij me një mbajtës kaçurrelë djathtas).

Ka lloje të ndryshme blloqesh, dhe cili do të ekzekutohet kur varet nga kushtet e jashtme. Në shembullin e programit minimal mund të shihni 2 blloqe. Në këtë shembull thirren blloqet përcaktimi i një funksioni. Një funksion është thjesht një bllok kodi me një emër të caktuar që dikush mund ta përdorë më pas nga jashtë.

Në këtë rast, ne kemi 2 funksione të quajtura setup dhe loop. Prania e tyre është e detyrueshme në çdo program C++ për Arduino. Mund të mos bëjnë asgjë, si në rastin tonë, por duhet të shkruhen. Përndryshe, do të merrni një gabim në fazën e përpilimit.

Klasik i zhanrit: LED ndezës

Le ta plotësojmë programin tonë që të paktën të ndodhë diçka. Në Arduino, një LED është i lidhur me pinin 13. Mund të kontrollohet, gjë që do të bëjmë.

void setup() (pinMode(13, OUTPUT) ;) void loop() (DixhitalWrite(13, LARTË) ; vonesë(100) ; digitalWrite(13, LOW) ; vonesë(900) ;)

Përpiloni dhe shkarkoni programin. Do të shihni që LED në tabelë pulson çdo sekondë. Le të kuptojmë pse ky kod çon në pulsimin çdo sekondë.

Çdo shprehje është një urdhër për procesorin për të bërë diçka. Shprehjet brenda një blloku ekzekutohen njëra pas tjetrës, në mënyrë strikte, pa asnjë pauzë apo ndërrim. Kjo do të thotë, nëse po flasim për një bllok specifik kodi, ai mund të lexohet nga lart poshtë për të kuptuar se çfarë po bëhet.

Tani le të kuptojmë se në çfarë rendi ekzekutohen vetë blloqet, d.m.th. funksionet e konfigurimit dhe ciklit. Mos u shqetësoni se çfarë kuptimi kanë shprehjet specifike, thjesht vëzhgoni rendin.

    Sapo Arduino ndizet, ndizet ose shtypet butoni RESET, "diçka" thërret një funksion konfigurimi. Domethënë detyron të ekzekutohen shprehjet në të.

    Sapo të përfundojë konfigurimi, "diçka" thërret menjëherë funksionin e ciklit.

    Sapo cikli përfundon, "diçka" thërret menjëherë funksionin e ciklit përsëri dhe kështu me radhë ad infinitum.

Nëse numërojmë shprehjet sipas mënyrës se si janë ekzekutuar, marrim:

void setup() ( pinMode(13, OUTPUT) ; ❶ ) void loop() ( digitalWrite(13 , LARTË) ; ❷ ❻ ❿ vonesë (100 ) ; ❸ ❼ … dixhitalWrite (13 , LOW) ; ❹ (9) vonesë (13 , LOW) ; ❹ ❺ ❾ )

Le t'ju kujtojmë edhe një herë se nuk duhet të përpiqeni të perceptoni të gjithë programin duke lexuar nga lart poshtë. Vetëm përmbajtja e blloqeve lexohet nga lart poshtë. Në përgjithësi mund të ndryshojmë rendin e deklaratave të konfigurimit dhe ciklit.

void loop() ( digitalWrite(13 , LARTË) ; ❷ ❻ ❿ vonesë (100 ) ; ❸ ❼ … dixhitalWrite (13 , LOW) ; ❹ ❽ vonesë (900 ) ; ❺ ❾ ( UT 1 ) ( konfigurim i pavlefshëm ) ) ❶ )

Rezultati nuk do të ndryshojë asnjë pikë: pas përpilimit do të merrni një skedar binar absolutisht ekuivalent.

Çfarë bëjnë shprehjet

Tani le të përpiqemi të kuptojmë pse programi i shkruar përfundimisht bën që LED të pulsojë.

Siç e dini, kunjat Arduino mund të funksionojnë si dalje ashtu edhe si hyrje. Kur duam të kontrollojmë diçka, domethënë të lëshojmë një sinjal, duhet të kalojmë pinin e kontrollit në gjendjen e daljes. Në shembullin tonë, ne kontrollojmë LED-in në kutinë e 13-të, kështu që kunja e 13-të duhet të bëhet një dalje përpara përdorimit.

Kjo bëhet nga një shprehje në funksionin e konfigurimit:

PinMode(13, OUTPUT);

Shprehjet mund të jenë të ndryshme: aritmetike, deklarata, përkufizime, kushte, etj. Në këtë rast, ne zbatojmë në shprehje thirrje funksioni. E mbani mend? Ne kemi e tyre funksionet setup dhe loop, të cilat thirren nga diçka që ne e quajtëm "diçka". Pra tani ne ne i quajmë funksione që tashmë janë shkruar diku.

Në mënyrë të veçantë në konfigurimin tonë ne e quajmë një funksion të quajtur pinMode. Ai vendos pinin e specifikuar nga numri në modalitetin e specifikuar: hyrje ose dalje. Tregojmë për cilin pin dhe cilin modalitet po flasim në kllapa, të ndara me presje, menjëherë pas emrit të funksionit. Në rastin tonë, ne duam që kunja e 13-të të veprojë si një dalje. OUTPUT do të thotë dalje, INPUT do të thotë hyrje.

Quhen vlera kualifikuese si 13 dhe OUTPUT argumentet e funksionit. Nuk është aspak e nevojshme që të gjitha funksionet të kenë 2 argumente. Sa argumente ka një funksion varet nga thelbi i funksionit dhe si e ka shkruar autori. Mund të ketë funksione me një argument, tre, njëzet; funksionet nuk mund të kenë fare argumente. Pastaj për t'i thirrur, kllapa hapet dhe mbyllet menjëherë:

NoInterrupts();

Në fakt, mund të keni vënë re se funksionet tona të konfigurimit dhe ciklit nuk marrin asnjë argument. Dhe "diçka" misterioze i thërret në të njëjtën mënyrë me kllapa boshe në momentin e duhur.

Le të kthehemi te kodi ynë. Pra, meqenëse ne planifikojmë të pulsojmë LED përgjithmonë, pini i kontrollit duhet të dalë një herë dhe më pas nuk duam ta kujtojmë atë. Kjo është ajo për të cilën synohet ideologjikisht funksioni i konfigurimit: vendosja e bordit sipas nevojës dhe më pas puna me të.

Le të kalojmë te funksioni i ciklit:

void loop() ( digitalWrite (13, LARTË) ; vonesë (100) ; digitalWrite (13, LOW) ; vonesë (900) ; )

Siç u tha, thirret menjëherë pas konfigurimit. Dhe thirret përsëri e përsëri sapo mbaron. Funksioni i ciklit quhet cikli kryesor i programit dhe është krijuar ideologjikisht për të kryer punë të dobishme. Në rastin tonë, puna e dobishme është ndezja e LED-it.

Le t'i kalojmë shprehjet me radhë. Pra, shprehja e parë është një thirrje për funksionin e integruar DigitalWrite. Është krijuar për të aplikuar një zero logjike (LOW, 0 volt) ose një logjike (HIGH, 5 volt) në një kunj të caktuar Dy argumente i kalohen funksionit digitalWrite: numri i pinit dhe vlera logjike. Si rezultat, gjëja e parë që bëjmë është ndezja e LED-së në pinin e 13-të, duke aplikuar 5 volt në të.

Sapo të bëhet kjo, procesori kalon menjëherë në shprehjen tjetër. Për ne, kjo është një thirrje për funksionin e vonesës. Funksioni i vonesës është, përsëri, një funksion i integruar që e bën procesorin të flejë për një kohë të caktuar. Duhet vetëm një argument: koha në milisekonda për të fjetur. Në rastin tonë është 100 ms.

Ndërsa ne flemë, gjithçka mbetet ashtu siç është, d.m.th. LED mbetet i ndezur. Sapo mbarojnë 100 ms, procesori zgjohet dhe kalon menjëherë në shprehjen tjetër. Në shembullin tonë, kjo është përsëri një thirrje për funksionin e njohur të integruar DigitalWrite. Vërtetë, këtë herë kalojmë vlerën LOW si argument të dytë. Kjo do të thotë, ne vendosim një zero logjike në pinin e 13-të, domethënë furnizojmë 0 volt, domethënë fikim LED.

Pasi të jetë fikur LED, ne vazhdojmë me shprehjen tjetër. Edhe një herë kjo është një thirrje për funksionin e vonesës. Këtë herë na zë gjumi për 900 ms.

Pasi të përfundojë gjumi, funksioni i ciklit del. Pas përfundimit, "diçka" e thërret menjëherë përsëri dhe gjithçka ndodh përsëri: LED ndizet, ndizet, fiket, pret, etj.

Nëse përktheni atë që është shkruar në Rusisht, ju merrni algoritmin e mëposhtëm:

    Ndezja e LED-it

    Flini 100 milisekonda

    Fikja e LED-it

    Ne flemë për 900 milisekonda

    Le të kalojmë në pikën 1

Kështu kemi marrë një Arduino me një fener që pulson çdo 100 + 900 ms = 1000 ms = 1 sekondë.

Çfarë mund të ndryshohet

Le të përdorim vetëm njohuritë që kemi marrë për të bërë disa variacione të programit për të kuptuar më mirë parimin.

Mund të lidhni një LED të jashtëm ose pajisje tjetër që duhet të "pulsojë" me një kunj tjetër. Për shembull, në datën 5. Si duhet të ndryshojë programi në këtë rast? Ne duhet të zëvendësojmë numrin me atë të 5-të kudo që kemi hyrë në pinin e 13-të:

Përpiloni, shkarkoni, testoni.

Çfarë duhet bërë për të bërë blicin LED 2 herë në sekondë? Zvogëloni kohën e gjumit në mënyrë që totali të jetë 500 ms:

void setup() (pinMode(5, OUTPUT) ;) void loop() ( digitalWrite (5 , LARTË) ; vonesë (50 ) ; DigitalWrite (5 , LOW) ; vonesë (450 ) ; )

Si mund ta bëj LED-in të dridhet dy herë sa herë që pulson? Duhet ta ndizni dy herë me një pauzë të shkurtër ndërmjet ndezjeve:

void setup() ( pinMode (5 , OUTPUT) ; ) void loop() ( digitalWrite (5 , HIGH) ; vonesë (50 ) ; digitalWrite (5 , LOW) ; vonesë (50 ) ; digitalWrite (5 , LARTË) ; vonesë (50 ) ;

Si mund ta bëj që pajisja të ketë 2 LED që pulsojnë në mënyrë alternative çdo sekondë? Ju duhet të komunikoni me dy kunja dhe të punoni në një lak me njërën ose tjetrën:

setup void() (pinMode(5, OUTPUT) ; pinMode(6, OUTPUT) ;) void loop() (digitalWrite(5, HIGH) ; vonesë(100) ; digitalWrite(5, LOW) ; vonesë(900) ; dixhitalWrite (6 , LARTË) ; vonesa (100 ) ;

Si të siguroheni që pajisja të ketë 2 LED që kalojnë si një semafor hekurudhor: së pari njëra pastaj ndizet tjetra? Thjesht nuk duhet të fikni LED-in e ndezur menjëherë, por prisni deri në momentin e ndërrimit:

konfigurimi i zbrazët () ( pinMode (5 , OUTPUT) ; pinMode (6 , OUTPUT) ; ) void loop () ( digitalWrite (5 , LOW) ; digitalWrite (6 , LOW) ; vonesë (1000 ) ; DigitalWrite (5 , LOW) DigitalWrite(6, LARTË) ;

Mos ngurroni të shikoni vetë ide të tjera. Siç mund ta shihni, gjithçka është e thjeshtë!

Rreth hapësirës së zbrazët dhe kodit të bukur

Në C++, hapësirat, ndërprerjet e rreshtave dhe karakteret e skedave nuk kanë shumë rëndësi për përpiluesin. Ku ka një hapësirë, mund të ketë një ndërprerje të linjës dhe anasjelltas. Në fakt, 10 hapësira me radhë, 2 ndërprerje rreshtash dhe 5 hapësira të tjera janë ekuivalente me një hapësirë.

Hapësira e zbrazët është një mjet programuesi, me të cilin mund ta bëni një program të kuptueshëm dhe vizual, ose ta shpërfytyroni atë përtej njohjes. Për shembull, mbani mend programin për ndezjen e një LED:

void setup() (pinMode(5, OUTPUT) ;) void loop() (digitalWrite(5, LARTË) ; vonesë (100) ; DigitalWrite (5 , LOW) ; vonesë (900 ) ; )

Mund ta ndryshojmë si kjo:

konfigurimi i zbrazët ( ) ( modaliteti pin (5 , OUTPUT) ; ) cikli i zbrazët () ( Shkrimi dixhital (5 , I LARTË) ; vonesa (100 ) ; Shkrimi dixhital (5 , I ULËT) ; vonesa (900 ) ; )

Gjithçka që bëmë ishte të punonim pak me hapësirën bosh. Tani mund të shihni qartë ndryshimin midis kodit harmonik dhe kodit të palexueshëm.

Për të ndjekur ligjin e pashprehur të hartimit të programit, i cili respektohet në forume, kur lexohet nga njerëzit e tjerë dhe perceptohet lehtësisht nga ju, ndiqni disa rregulla të thjeshta:

1. Gjithmonë rriteni dhëmbëzimin midis ( dhe ) kur filloni një bllok të ri. Zakonisht përdoren 2 ose 4 hapësira. Zgjidhni një nga vlerat dhe qëndroni në të gjatë gjithë kohës.

Keq:

void loop() ( digitalWrite (5 , LARTË) ; vonesë (100 ) ; digitalWrite (5 , LOW) ; vonesë (900 ) ;)

Mirë:

void loop() ( digitalWrite (5 , LARTË) ; vonesë (100 ) ; digitalWrite (5 , LOW) ; vonesë (900 ) ;)

2. Ashtu si në gjuhën natyrore: vendosni një hapësirë ​​pas presjeve dhe mos e vendosni përpara.

Keq:

DigitalWrite (5 ,LARTË); digitalWrite(5 , LARTË); DigitalWrite (5 ,LARTË);

Mirë:

DigitalWrite (5 , LARTË);

3. Vendosni karakterin e fillimit të bllokut (në një rresht të ri në nivelin aktual të dhëmbëzimit ose në fund të atij të mëparshëm. Dhe karakterin e fundit të bllokut) në një rresht të veçantë në nivelin aktual të dhëmbëzimit:

Keq:

setup void() ( pinMode (5, OUTPUT); ) void setup() (pinMode(5, OUTPUT); ) void setup() (pinMode(5, OUTPUT); )

Mirë:

konfigurimi i zbrazët () ( pinMode (5 , OUTPUT) ; ) konfigurimi i zbrazët () ( pinMode (5 , OUTPUT) ; )

4. Përdorni vija boshe për të ndarë blloqet e kuptimit:

Mirë:

Më mirë:

void loop() ( digitalWrite (5 , LARTË) ; vonesë (100 ) ; digitalWrite (5 , LOW) ; vonesë (900 ) ; DigitalWrite (6 , LARTË) ; vonesë (100 ) ; digitalWrite (6 , LOW) ; vonesë ( 900 ) ;

Rreth pikëpresjes

Ju mund të pyesni veten: pse ka një pikëpresje në fund të çdo shprehjeje? Këto janë rregullat e C++. Rregulla të tilla quhen sintaksë gjuhësore. Sipas simbolit; përpiluesi kupton se ku mbaron shprehja.

Siç u përmend tashmë, ndërprerjet e rreshtave janë një frazë boshe për të, kështu që ai fokusohet në këtë shenjë pikësimi. Kjo ju lejon të shkruani shprehje të shumta në një rresht:

void loop() ( digitalWrite (5 , LARTË) ; vonesë (100 ) ; digitalWrite (5 , LOW) ; vonesë (900 ) ;)

Programi është i saktë dhe i barabartë me atë që kemi parë tashmë. Megjithatë, shkrimi i tillë është një formë e keqe. Kodi është shumë më i vështirë për t'u lexuar. Pra, nëse nuk keni një arsye 100% të mirë për të shkruar shprehje të shumta në të njëjtën linjë, mos e bëni atë.

Rreth komenteve

Një nga rregullat e programimit të mirë është: "Shkruani kodin në mënyrë që të jetë aq i qartë sa të mos ketë nevojë për shpjegim". Kjo është e mundur, por jo gjithmonë. Për të shpjeguar disa pika jo të dukshme në kod për lexuesit e tij: kolegët tuaj ose veten brenda një muaji, ekzistojnë të ashtuquajturat komente.

Këto janë konstruksione në kodin e programit që injorohen plotësisht nga kompajleri dhe kanë kuptim vetëm për lexuesin. Komentet mund të jenë me shumë rreshta ose me një rresht:

/* Funksioni i konfigurimit thirret fillimisht kur fuqia aplikohet në Arduino Dhe ky është një koment me shumë rreshta */. konfigurimi i zbrazët () ( // vendos pinin 13 në modalitetin e daljes pinMode (13, OUTPUT); ) void loop() ( digitalWrite (13, LARTË) ; vonesë (100) ; // gjumë për 100 ms DigitalWrite (13, LOW) ; vonesë (900) ; )

Siç mund ta shihni, mund të shkruani sa më shumë rreshta komentesh që dëshironi midis simboleve /* dhe */. Dhe pas sekuencës / / gjithçka që vijon deri në fund të rreshtit konsiderohet një koment.

Pra, shpresojmë që parimet më themelore të shkrimit të programeve të jenë bërë të qarta. Njohuritë e marra ju lejojnë të kontrolloni në mënyrë programore furnizimin me energji në kunjat Arduino sipas modeleve të caktuara të kohës. Kjo nuk është aq shumë, por ende e mjaftueshme për eksperimentet e para.

Arduino, në fakt, është zhvillimi i projekteve unike për të gjitha rastet.

Siç kam shkruar tashmë, Arduino është një lloj bordi me një mikrokontrollues të vendosur mbi të, i cili mund të programohet pa probleme.

Qëllimi përfundimtar i këtyre manipulimeve është të sigurojë kontroll të lehtë të pajisjeve të shumta të jashtme. Ky bord ndërvepron me botën e jashtme përmes shumë shtesave:

  • e kështu me radhë.

Kjo do ta bëjë atë një platformë mjaft universale për shumë projekte të niveleve shumë të ndryshme - shihni seksionin në faqen tonë të internetit Arduino Lessons. Aktualisht, ka shumë mikrokontrollues të ndryshëm, ndër të cilët Arduino është veçanërisht i popullarizuar, i cili shoqërohet me vendosjen aktive të projekteve dhe zhvillimeve më të pabesueshme në rrjet.

Për të zbatuar me lehtësi një nga miliona ide, mund të përdorni lehtësisht informacionin më aktual që është i disponueshëm në mënyrë të pavarur në shumë sajte. Më poshtë është një shembull i zbatimit të njërës prej këtyre ideve - një zile e Krishtlindjeve që mund të kontrollohet:

Ne do të shikojmë se si ta bëjmë atë në një nga mësimet e mëposhtme.

Në rast se nuk keni as pak përvojë pune me mikrokontrolluesit (programimi dhe konfigurimi), falë veçorive të Arduino, mund të mësoni lehtësisht vetë duke kryer eksperimente relativisht të shkurtra. Më poshtë propozoj të analizojmë disa nga aftësitë e Arduino, shembuj se ku është më mirë të përdoret ky konstruktor unik.

Skica Arduino

Në fakt, quhet programi për një mikrokontrollues të këtij lloji skicë. Çdo program i tillë përbëhet drejtpërdrejt nga dy funksione kryesore.

Konfigurimi

konfigurimi ()– parashikohet që brenda këtij funksioni, përdoruesi do të jetë në gjendje të vendosë të gjitha cilësimet kryesore.

Për shembull, përcaktohet se cilat kunja do të funksionojnë më pas si dalje ose hyrje, duke përcaktuar lidhjen e bibliotekave specifike, madje edhe duke inicializuar variabla, e gjithë kjo përcaktohet përmes përdorimit të këtij funksioni.

Nisja kryhet rreptësisht një herë gjatë gjithë skicës, kur shënohet vetë fillimi i ekzekutimit të këtij programi.

Lak

lak ()– përfaqëson funksionin kryesor që kryhet menjëherë pas fillimit (në këtë rast përdoret konfigurimi ()).

Në fakt, ky është vetë programi, ky funksion do të funksionojë pafundësisht derisa përdoruesi të fikë fuqinë e pajisjes.

Shembuj skicash

Ju mund të konsideroni disa shembuj të skicave që do të bëhen një udhëzues për funksionimin e mëvonshëm të pajisjeve. Do të përpiqem të zbatoj secilin nga shembujt në materialet e mëposhtme. Sot do të flasim vetëm për mundësitë.

Shembulli 1

Një nga skicat interesante mund të përdoret për të shfaqur kohën aktuale të funksionimit të kontrolluesit, e ndjekur nga miratimi i komandës "blink", e cila synon të inicializojë procedurën e ndezjes së elementeve LED.

Në fakt, nuk ka asgjë veçanërisht të dobishme në skicë, por përfshin gjithashtu mundësinë e shfaqjes së rastësishme të një fraze të caktuar " Të dhënat e marra", mund të përdoret në të ardhmen drejtpërdrejt për testimin dhe analizimin e rregullave të vendosura për funksionimin e një elementi modular.

Shembulli 2

Shembulli 3

Vëmendje e veçantë duhet t'i kushtohet mundësisë së nxjerrjes së karaktereve dhe më pas instalimit të shkronjave LCD5110, i cili do të sigurojë kontrollin më të lehtë dhe më të besueshëm mbi gjendjen e vetë pajisjes.

Fontet nxirren dhe ndryshohen duke përdorur aftësitë Arduino. Në këtë rast, do t'ju duhet të përdorni një bibliotekë të gatshme të të dhënave, si dhe kodin burimor.

Shembuj të përdorimit të Arduino

Duke parë shembuj të shumtë të Arduino, mund të mahniteni vetëm nga qasja krijuese e zhvilluesve të projektit dhe imagjinata e jashtëzakonshme. Në fakt, ju mund të krijoni gjërat më të pabesueshme, për shembull, të njëjtin riprodhues muzikor me një grup LED.

Një zhvillim i tillë do të vlerësohet shumë nga adhuruesit e muzikës, duke i lejuar ata të krijojnë jo vetëm një kolonë zanore origjinale, por gjithashtu t'u japë atyre mundësinë për të shijuar një kombinim ngjyrash të ndritshme dhe të jashtëzakonshme.

Edhe kafshët shtëpiake, për shembull, macet, do të jenë në gjendje të vlerësojnë projektet. Arsyeja do të jetë një ushqyes automatik i maceve, i cili mund të zhvillohet në bazë të një CD player konvencional, për shembull, dhe jo vetëm.

Ndër avantazhet e kësaj pajisjeje, është e nevojshme të theksohet mundësia e ushqimit të dozuar të kafshës tani nuk ka nevojë të kontrollohet rregullisht sasia e ushqimit në tas. Koha e hapjes është rregulluar, pas së cilës macja do të marrë ushqime ushqyese në mënyrë rigoroze sipas orarit të vendosur, duke shijuar idenë origjinale të pronarit të saj.

Nëse flasim për projekte krejtësisht të pazakonta, mund të theksojmë pajisjet automatike për një lule, e cila tani mund të transmetojë informacion për gjendjen e saj aktuale direkt në Twitter. E gjithë kjo bëhet duke përdorur aftësitë e mikrokontrolluesit Arduino, i cili do t'ju lejojë të transferoni të dhëna drejtpërdrejt duke përdorur një lidhje interneti. Siç mund ta shihni, shembujt mund të jenë shumë të ndryshëm, unë do të përpiqem t'i kushtoj vëmendje secilit prej tyre në artikujt vijues.


Mbylle