Qarqe të thjeshta Arduino për fillestarët. Qarqet e thjeshta në Arduino për modelet e fillestarëve në Arduino

Vonesat në Arduino luajnë një rol shumë të madh. Pa to, edhe shembulli më i thjeshtë i Blink, i cili bie në sy pas një periudhe kohe të caktuar, nuk mund të funksionojë. Por shumica e programuesve të rinj dinë pak për vonesat në kohë dhe përdorin vetëm vonesën e Arduino pa ditur efektet anësore të kësaj komande. Në këtë artikull, unë do të flas në detaje në lidhje me funksionet e kohës dhe si t'i përdor ato në Arduino IDE.

Ekzistojnë disa komanda të ndryshme në Arduino që janë përgjegjës për të punuar me kohën dhe pauzat:

  • vonesë ()
  • vonesëMikrosekonda ()
  • millis ()
  • mikros ()

Ato ndryshojnë në saktësi dhe kanë karakteristikat e tyre që duhet të merren parasysh gjatë shkrimit të kodit.

Përdorimi i funksionit të vonesës arduino

Sintaksë

Vonesa e Arduino është komanda më e thjeshtë dhe përdoret më shpesh nga fillestarët. Në thelb, është një vonesë që ndalon programin për numrin e milisekondave të treguara në kllapa. (Ka 1000 milisekonda në një sekondë.) Vlera maksimale mund të jetë 4294967295 ms, që është afërsisht e barabartë me 50 ditë. Le të shohim një shembull të thjeshtë që tregon qartë se si funksionon kjo komandë.

Konfigurimi i zbrazët () ( modaliteti pin (13, OUTPUT); ) cikli i zbrazët () (Dixhital Shkrimi (13, LARTË); // dërgoni një sinjal të lartë në vonesën e pinit 13 (10000); // ndaloni 10000 ms ose 10 sekonda dixhitalWrite13, LOW) ; // dërgoni një sinjal të ulët në pin 13 vonesë (10000); // pauzë 10000 ms ose 10 sekonda)

Në metodë konfigurimi Ne specifikojmë që pin 13 do të përdoret si një dalje. Në pjesën kryesore të programit, një sinjal i lartë dërgohet fillimisht në pin, pastaj bëjmë një vonesë prej 10 sekondash. Gjatë kësaj kohe, programi duket se është pezulluar. Pastaj jepet një sinjal i ulët dhe përsëri ka një vonesë dhe gjithçka fillon nga e para. Si rezultat, marrim se kunja furnizohet në mënyrë alternative ose me 5 V ose 0.

Ju duhet të kuptoni qartë se gjatë një pauze duke përdorur vonesë, puna e programit është pezulluar, aplikacioni nuk do të marrë asnjë të dhënë nga sensorët. Ky është disavantazhi më i madh i përdorimit të funksionit të vonesës Arduino. Ju mund ta kapërceni këtë kufizim duke përdorur ndërprerje, por ne do të flasim për këtë në një artikull të veçantë.

Shembull i vonesës me ndezjen LED

Një qark shembull për të ilustruar se si funksionon funksioni i vonesës.
Ju mund të ndërtoni një qark me një LED dhe një rezistencë. Pastaj do të kemi një shembull standard - ndezjen e një LED. Për ta bërë këtë, duhet të lidhni një LED me një kontakt pozitiv në kunj, të cilin ne e caktuam si dalje. Ne e lidhim këmbën e lirë të LED me tokëzimin përmes një rezistence prej afërsisht 220 Ohms (pak më shumë është e mundur). Ju mund të përcaktoni polaritetin duke parë brendësinë e tij. Kupa e madhe brenda është e lidhur me minusin, dhe këmba e vogël me plusin. Nëse LED juaj është i ri, atëherë mund të përcaktoni polaritetin nga gjatësia e prizave: këmba e gjatë është plus, këmba e shkurtër është minus.

Funksioni vonesëMikrosekonda

Ky funksion është një analog i plotë i vonesës, përveç se njësitë e tij matëse nuk janë milisekonda, por mikrosekonda (në 1 sekondë ka 1.000.000 mikrosekonda). Vlera maksimale do të jetë 16383, e cila është e barabartë me 16 milisekonda. Rezolucioni është 4, domethënë, numri do të jetë gjithmonë shumëfish i katër. Një fragment shembulli do të duket kështu:

DigitalWrite (2, LARTË); // dërgoni një sinjal të lartë në pin 2 vonesëMicroseconds(16383); // pauzë 16383 µs digitalWrite(2, LOW); // dërgoni një sinjal të ulët në pin 2 vonesëMicroseconds(16383); // pauzë 16383 µs

Problemi me vonesënMicroseconds është saktësisht i njëjtë si me vonesën - këto funksione "varin" plotësisht programin dhe ai fjalë për fjalë ngrin për një kohë. Në këtë kohë, është e pamundur të punosh me porte, të lexosh informacione nga sensorët dhe të kryesh operacione matematikore. Ky opsion është i përshtatshëm për ndezjen e dritave, por përdoruesit me përvojë nuk e përdorin atë për projekte të mëdha, pasi dështime të tilla nuk janë të nevojshme atje. Prandaj, është shumë më mirë të përdorni funksionet e përshkruara më poshtë.

Funksioni Millis në vend të vonesës

Funksioni millis() do t'ju lejojë të kryeni një vonesë pa vonesë në Arduino, duke anashkaluar kështu mangësitë e metodave të mëparshme. Vlera maksimale e parametrit millis është e njëjtë me atë të funksionit të vonesës (4294967295ms ose 50 ditë).

Duke përdorur millis, ne nuk e ndalojmë ekzekutimin e të gjithë skicës, por thjesht tregojmë se sa kohë Arduino duhet thjesht të "anashkalojë" bllokun e saktë të kodit që duam të ndalojmë. Ndryshe nga delay millis, ajo nuk ndalon asgjë në vetvete. Kjo komandë thjesht na kthen nga kohëmatësi i integruar i mikrokontrolluesit numrin e milisekondave që kanë kaluar që nga fillimi. Me çdo thirrje në lak, ne vetë masim kohën që ka kaluar nga thirrja e fundit e kodit tonë dhe nëse diferenca kohore është më e vogël se pauza e dëshiruar, atëherë ne e shpërfillim kodin. Sapo diferenca të bëhet më e madhe se pauza e kërkuar, ne ekzekutojmë kodin, marrim kohën aktuale duke përdorur të njëjtën millis dhe e mbajmë mend - kjo herë do të jetë pika e re e fillimit. Në ciklin tjetër, numërimi mbrapsht do të jetë tashmë nga pika e re dhe ne do të injorojmë përsëri kodin derisa diferenca e re midis millis dhe vlerës sonë të ruajtur më parë të arrijë përsëri pauzën e dëshiruar.

Vonesa pa vonesë duke përdorur millis kërkon më shumë kod, por me ndihmën e tij mund të pulsoni një LED dhe të ndaloni një skicë pa ndalur sistemin.

Këtu është një shembull që ilustron qartë punën e ekipit:

Koha e gjatë e panënshkruar; // Variabla për ruajtjen e pikës së referencës void setup() ( Serial.begin(9600); ) void loop() ( /* Në këtë pikë fillon ekzekutimi i analogut delay(). Llogarit diferencën midis momentit aktual dhe pikë referimi e ruajtur më parë. Nëse diferenca është më e madhe se vlera e dëshiruar, atëherë ekzekutoni kodin. Nëse jo, mos bëni asgjë */ nëse (millis() - koha > 10000)( // Në vend të 10000, zëvendësoni vlerën e pauzës që ju nevojitet për kohën = millis (); Serial.println ("10 sekonda") ; ) )

Fillimisht prezantojmë variablin e kohës, i cili do të ruajë numrin e milisekondave. Si parazgjedhje, vlera e ndryshores është 0. Në pjesën kryesore të programit, kontrollojmë kushtin: nëse numri i milisekondave nga fillimi i mikrokontrolluesit minus numrin e shkruar në variablin e kohës është më i madh se 10000, atëherë veprimi i daljes së një mesazhi në monitorin e portit kryhet dhe vlera e kohës aktuale shkruhet në ndryshore. Si rezultat i funksionimit të programit, mesazhi 10 sekonda do të shfaqet në monitorin e portit çdo 10 sekonda. Kjo metodë ju lejon të pulsoni LED pa vonesë.

Mikro funksionojnë në vend të vonesës

Ky funksion gjithashtu mund të kryejë një vonesë pa përdorur komandën e vonesës. Punon saktësisht njësoj si millis, por numëron mikrosekonda në vend të milisekondave me një rezolucion prej 4 μs. Vlera maksimale e tij është 4294967295 mikrosekonda ose 70 minuta. Nëse tejmbushet, vlera thjesht rivendoset në 0, mos harroni për këtë.

Përmbledhje

Platforma Arduino na siguron disa mënyra për të zbatuar një vonesë në projektin tonë. Duke përdorur vonesën, ju mund të ndaloni shpejt ekzekutimin e një skice, por në të njëjtën kohë do të bllokoni funksionimin e mikrokontrolluesit. Përdorimi i komandës Millis ju lejon të bëni pa vonesë në Arduino, por kjo do të kërkojë pak më shumë programim. Zgjidhni metodën më të mirë në varësi të kompleksitetit të projektit tuaj. Si rregull, në skica të thjeshta dhe me një vonesë më të vogël se 10 sekonda, përdoret vonesa. Nëse logjika e funksionimit është më komplekse dhe kërkohet një vonesë e madhe, atëherë është më mirë të përdorni Millis në vend të vonesës.

" prezanton kursin e trajnimit "Arduino për fillestarët". Seria përbëhet nga 10 mësime, si dhe materiale shtesë. Mësimet përfshijnë udhëzime me tekst, foto dhe video mësimore. Në çdo mësim do të gjeni një listë të komponentëve të kërkuar, një listë programesh dhe një diagram lidhjeje. Pasi të keni përfunduar këto 10 mësime bazë, do të jeni në gjendje të kaloni në modele më interesante dhe në ndërtimin e robotëve të bazuar në Arduino. Kursi ka për qëllim fillestarët; nuk kërkohet asnjë informacion shtesë nga inxhinieria elektrike ose robotika për ta filluar atë.

Informacion i shkurtër rreth Arduino

Çfarë është Arduino?

Arduino (Arduino) është një platformë kompjuterike harduerike, përbërësit kryesorë të së cilës janë një tabelë hyrëse-dalëse dhe një mjedis zhvillimi. Arduino mund të përdoret për të krijuar objekte interaktive të pavarura ose për t'u lidhur me softuerin që funksionon në një kompjuter. Arduino është një kompjuter me një tabelë.

Si lidhen Arduino dhe robotët?

Përgjigja është shumë e thjeshtë - Arduino përdoret shpesh si truri i robotit.

Avantazhi i bordeve Arduino ndaj platformave të ngjashme është çmimi i tyre relativisht i ulët dhe shpërndarja pothuajse e përhapur midis amatorëve dhe profesionistëve në robotikë dhe inxhinieri elektrike. Pasi të hyni në Arduino, do të gjeni mbështetje në çdo gjuhë dhe njerëz me mendje të njëjtë, të cilët do t'u përgjigjen pyetjeve tuaja dhe do të diskutojnë zhvillimet tuaja me të.

Mësimi 1. LED ndezës në Arduino

Në mësimin e parë do të mësoni se si të lidhni një LED me një Arduino dhe ta kontrolloni atë që të pulsojë. Ky është modeli më i thjeshtë dhe më themelor.

Diodë që lëshon dritë- një pajisje gjysmëpërçuese që krijon rrezatim optik kur një rrymë elektrike kalon nëpër të në drejtimin përpara.

Mësimi 2. Lidhja e një butoni në Arduino

Në këtë tutorial do të mësoni se si të lidhni një buton dhe një LED me një Arduino.

Kur shtypet butoni, LED do të ndizet; kur shtypet butoni, nuk do të ndizet. Ky është gjithashtu modeli bazë.

Mësimi 3. Lidhja e një potenciometri në Arduino

Në këtë tutorial do të mësoni se si të lidhni një potenciometër me Arduino.

Potenciometër- Kjo rezistencë me rezistencë të rregullueshme.Potenciometrat përdoren si rregullues të parametrave të ndryshëm - vëllimi i zërit, fuqia, tensioni, etj.Kjo është gjithashtu një nga skemat bazë. Në modelin tonë nga rrotullimi i pullës së potenciometritShkëlqimi i LED do të varet.

Mësimi 4. Kontrolli i Servo në Arduino

Në këtë tutorial do të mësoni se si të lidhni një servo me një Arduino.

Servoështë një motor, pozicioni i boshtit të të cilit mund të kontrollohet duke vendosur këndin e rrotullimit.

Servot përdoren për të simuluar lëvizje të ndryshme mekanike të robotëve.

Mësimi 5. LED me tre ngjyra në Arduino

Në këtë tutorial do të mësoni se si të lidhni një LED me tre ngjyra me një Arduino.

LED me tre ngjyra(rgb led) - këto janë tre LED me ngjyra të ndryshme në një strehim. Ato vijnë ose me një tabelë të vogël qark të printuar në të cilën ndodhen rezistorët, ose pa rezistorë të integruar. Mësimi mbulon të dyja opsionet.

Mësimi 6. Elementi piezoelektrik në Arduino

Në këtë mësim do të mësoni se si të lidhni një element piezo me një Arduino.

Elementi piezo- një konvertues elektromekanik që përkthehet tensionit elektrik në dridhje të membranës. Këto dridhje krijojnë zë.

Në modelin tonë, frekuenca e zërit mund të rregullohet duke vendosur parametrat e duhur në program.

Mësimi 7. Fotorezistori në Arduino

Në këtë mësim të kursit tonë do të mësoni se si të lidhni një fotorezistencë me Arduino.

Fotorezistor- një rezistencë, rezistenca e të cilit varet nga shkëlqimi i dritës që bie mbi të.

Në modelin tonë, LED ndizet vetëm nëse shkëlqimi i dritës sipër fotorezistorit është më i vogël se një i caktuar; ky shkëlqim mund të rregullohet në program.

Mësimi 8. Sensori i lëvizjes (PIR) në Arduino. Dërgimi automatik i postës elektronike

Në këtë mësim të kursit tonë do të mësoni se si të lidhni një sensor lëvizjeje (PIR) me Arduino, si dhe të organizoni dërgimin automatik të e-mail.

Sensori i lëvizjes (PIR)- Sensori infra të kuqe për të zbuluar lëvizjen ose praninë e njerëzve ose kafshëve.

Në modelin tonë, kur merr një sinjal për lëvizjen e njeriut nga një sensor PIR, Arduino dërgon një komandë në kompjuter për të dërguar një E-mail dhe letra dërgohet automatikisht.

Mësimi 9. Lidhja e një sensori të temperaturës dhe lagështisë DHT11 ose DHT22

Në këtë mësim tonën, do të mësoni se si të lidhni një sensor të temperaturës dhe lagështisë DHT11 ose DHT22 me një Arduino, dhe gjithashtu do të njiheni me ndryshimet në karakteristikat e tyre.

Sensori i temperaturës dhe lagështisëështë një sensor dixhital i përbërë i përbërë nga një sensor kondensativ i lagështisë dhe një termistor për matjen e temperaturës.

Në modelin tonë, Arduino lexon leximet e sensorit dhe shfaq leximet në ekranin e kompjuterit.

Mësimi 10. Lidhja e një tastierë matricë

Në këtë mësim të kursit tonë, do të mësoni se si të lidhni një tastierë matricë me një tabelë Arduino, dhe gjithashtu të njiheni me qarqe të ndryshme interesante.

Tastierë matricë shpikur për të thjeshtuar lidhjen e një numri të madh të butonave. Pajisjet e tilla gjenden kudo - në tastierat e kompjuterit, kalkulatorët, etj.

Mësimi 11. Lidhja e modulit të orës në kohë reale DS3231

Në mësimin e fundit të kursit tonë, ju do të mësoni se si të lidhni një modul orësh në kohë reale nga familja
DS në Bordin e Arduino, dhe gjithashtu njiheni me qarqe të ndryshme interesante.

Moduli i orës në kohë reale- ky është një qark elektronik i krijuar për të regjistruar të dhënat kronometrike (koha aktuale, data, dita e javës, etj.), dhe është një sistem i përbërë nga një burim autonom energjie dhe një pajisje regjistrimi.

Aplikacion. Korniza të gatshme dhe robotë Arduino


Ju mund të filloni të mësoni Arduino jo vetëm nga vetë bordi, por edhe duke blerë një robot të gatshëm, të plotë bazuar në këtë tabelë - një robot merimangë, një makinë robot, një robot breshkash, etj. Të tillë mënyrë Është gjithashtu i përshtatshëm për ata që nuk tërhiqen veçanërisht nga qarqet elektrike.

Duke blerë një model roboti pune, d.m.th. në fakt, një lodër e gatshme e teknologjisë së lartë mund të zgjojë interesin për dizajnin e pavarur dhe robotikën. Hapja e platformës Arduino ju lejon të bëni lodra të reja nga të njëjtët përbërës.

Një tjetër mundësi është blerja e një kornize ose trupi robotik: një platformë mbi rrota ose një pistë, një humanoid, një merimangë, etj. Në këtë rast, do të duhet ta bëni vetë mbushjen e robotit.

Aplikacion. Drejtoria celulare


– një asistent për zhvilluesit e algoritmeve për platformën Arduino, qëllimi i të cilit është t'i japë përdoruesit fundor mundësinë që të ketë një grup komandash celular (libër referimi).

Aplikacioni përbëhet nga 3 seksione kryesore:

  • Operatorët;
  • Të dhënat;
  • Funksione.

Ku të blini Arduino


Komplete Arduino

Kursi do të përditësohet me mësime shtesë. Na ndiq

Sot do të flasim për përdorimin e kartave SD dhe micro SD në Arduino. Ne do të kuptojmë se si të lidhim kartat SD me Arduino, si të shkruajmë dhe lexojmë informacione. Përdorimi i memories shtesë mund të jetë shumë i dobishëm në shumë projekte. Nëse nuk e dini se çfarë janë kunjat SPI, I2C dhe analoge, atëherë ju këshilloj të shikoni mësimet e kaluara dhe të kuptoni këto ndërfaqe komunikimi Arduino.

Në këtë tutorial do të flasim për komunikimin pa tel midis dy bordeve Arduino. Kjo mund të jetë shumë e dobishme për kalimin e komandave nga një Arduino në tjetrin, ose shkëmbimin e informacionit midis DIY -ve tuaja. Mundësia e transmetimit të të dhënave pa tel hap mundësi të reja në krijimin e projekteve tuaja.

Në këtë tutorial do të mësojmë për autobusin I2C. I2C është një autobus komunikimi që përdor vetëm dy linja. Duke përdorur këtë ndërfaqe, Arduino mund të komunikojë me shumë pajisje me dy tela. Sot do të kuptojmë se si të lidhim sensorët me Arduino përmes autobusit I2C, si të aksesojmë një pajisje specifike dhe si të marrim të dhëna nga këto pajisje.

Në këtë tutorial do të flasim për ndërfaqen e komunikimit Arduino Serial. Ne e kemi përdorur tashmë këtë ndërfaqe në mësimet e mëparshme, kur shfaqëm vlerat nga sensorët në ekranin e kompjuterit. Sot do të hedhim një vështrim më të afërt se si funksionon kjo lidhje, dhe gjithashtu do të mësojmë se si të përdorim të dhënat e transferuara në monitorin e portit të kompjuterit duke përdorur Përpunimin.

Sot do të flasim për transistorët dhe ngarkesat lidhëse me Arduino. Vetë Arduino nuk mund të prodhojë një tension më të lartë se 5 volt dhe një rrymë më të lartë se 40 mA nga një kunj. Kjo është e mjaftueshme për sensorë dhe LED, por nëse duam të lidhim pajisje që kërkojnë më shumë rrymë, do të duhet të përdorim transistorë ose reletë.

Në këtë mësim do të flasim për bazat e dizajnit të qarkut siç zbatohen në Arduino. Dhe le të fillojmë, natyrisht, me ligjin e Ohm-it, pasi kjo është baza e të gjithë qarkut. Gjithashtu në këtë mësim do të flasim për rezistencën, rezistorët e tërheqjes dhe tërheqjes, llogaritjen e rrymës dhe tensionit.

Në këtë artikull, vendosa të bashkoj një udhëzues të plotë hap pas hapi për fillestarët e Arduino. Ne do të shikojmë se çfarë është Arduino, çfarë ju duhet për të filluar të mësoni, ku të shkarkoni dhe si të instaloni dhe konfiguroni mjedisin e programimit, si funksionon dhe si të përdorni gjuhën e programimit, dhe shumë më tepër që janë të nevojshme për të krijuar të drejta të plota pajisje komplekse të bazuara në familjen e këtyre mikrokontrolluesve.

Këtu do të përpiqem të jap një minimum të kondensuar në mënyrë që të kuptoni parimet e punës me Arduino. Për një zhytje më të plotë në botën e mikrokontrolluesve të programueshëm, kushtojini vëmendje seksioneve dhe artikujve të tjerë të kësaj faqeje. Unë do të lë lidhje me materiale të tjera në këtë faqe për një studim më të detajuar të disa aspekteve.

Çfarë është Arduino dhe për çfarë shërben?

Arduino është një komplet elektronik ndërtimi që lejon këdo të krijojë një sërë pajisjesh elektro-mekanike. Arduino përbëhet nga softuer dhe harduer. Pjesa e softuerit përfshin një mjedis zhvillimi (një program për shkrimin dhe korrigjimin e firmware-it), shumë biblioteka të gatshme dhe të përshtatshme dhe një gjuhë programimi të thjeshtuar. Pajisja përfshin një linjë të madhe mikrokontrolluesish dhe module të gatshme për ta. Falë kësaj, puna me Arduino është shumë e lehtë!

Me ndihmën e Arduino ju mund të mësoni programim, inxhinieri elektrike dhe mekanikë. Por ky nuk është vetëm një konstruktor arsimor. Bazuar në të, ju mund të bëni pajisje vërtet të dobishme.
Duke filluar nga dritat e thjeshta ndezëse, stacionet e motit, sistemet e automatizimit dhe duke përfunduar me sistemet e shtëpive inteligjente, makinat CNC dhe mjetet ajrore pa pilot. Mundësitë nuk kufizohen as nga imagjinata juaj, sepse ka një numër të madh udhëzimesh dhe idesh për zbatim.

Kompleti fillestar Arduino

Për të filluar të mësoni Arduino, duhet të blini vetë pllakën e mikrokontrolluesit dhe pjesë shtesë. Është më mirë të blini një komplet fillestar Arduino, por ju mund të zgjidhni gjithçka që ju nevojitet vetë. Unë rekomandoj të zgjidhni një grup sepse është më i lehtë dhe shpesh më i lirë. Këtu janë lidhjet me grupet më të mira dhe pjesët individuale që patjetër do t'ju duhet të studioni:

Kompleti bazë Arduino për fillestarët:Blej
Komplet i madh për trajnime dhe projekte të para:Blej
Set i sensorëve dhe moduleve shtesë:Blej
Arduino Uno është modeli më themelor dhe më i përshtatshëm nga linja:Blej
Pllakë buke pa saldim për mësim të lehtë dhe prototip:Blej
Set i telave me lidhës të përshtatshëm:Blej
Kompleti LED:Blej
Kompleti i rezistencës:Blej
Butonat:Blej
Potenciometra:Blej

Mjedisi i zhvillimit të Arduino IDE

Për të shkruar, korrigjuar dhe shkarkuar firmware, duhet të shkarkoni dhe instaloni Arduino IDE. Ky është një program shumë i thjeshtë dhe i përshtatshëm. Në faqen time të internetit kam përshkruar tashmë procesin e shkarkimit, instalimit dhe konfigurimit të mjedisit të zhvillimit. Prandaj, këtu thjesht do të lë lidhje me versionin më të fundit të programit dhe në

Version Dritaret Mac OS X Linux
1.8.2

Gjuha e programimit Arduino

Kur keni në duar një tabelë mikrokontrollues dhe një mjedis zhvillimi të instaluar në kompjuterin tuaj, mund të filloni të shkruani skicat tuaja të para (firmware). Për ta bërë këtë, ju duhet të njiheni me gjuhën e programimit.

Programimi Arduino përdor një version të thjeshtuar të gjuhës C++ me funksione të paracaktuara. Ashtu si në gjuhët e tjera të programimit të ngjashme me C-në, ekzistojnë një sërë rregullash për shkrimin e kodit. Këtu janë ato më themeloret:

  • Çdo udhëzim duhet të ndiqet nga një pikëpresje (;)
  • Përpara se të deklaroni një funksion, duhet të specifikoni llojin e të dhënave të kthyer nga funksioni, ose të anuloni nëse funksioni nuk kthen një vlerë.
  • Është gjithashtu e nevojshme të tregohet lloji i të dhënave përpara se të deklarohet një ndryshore.
  • Komentet janë caktuar: // Inline dhe /* bllok */

Mund të mësoni më shumë rreth llojeve të të dhënave, funksioneve, variablave, operatorëve dhe konstruksioneve gjuhësore në faqen në Nuk keni nevojë të mbani mend dhe mbani mend të gjithë këtë informacion. Gjithmonë mund të shkoni te libri i referencës dhe të shikoni sintaksën e një funksioni të caktuar.

I gjithë firmware Arduino duhet të përmbajë të paktën 2 funksione. Këto janë setup() dhe loop().

funksioni i konfigurimit

Në mënyrë që gjithçka të funksionojë, duhet të shkruajmë një skicë. Le të ndezim LED-in pasi të shtypni butonin dhe të fiket pas shtypjes tjetër. Këtu është skica jonë e parë:

// variablat me kunjat e pajisjeve të lidhura int switchPin = 8; int ledPin = 11; // variabla për të ruajtur gjendjen e butonit dhe LED boolean lastButton = LOW; rryma booleanButton = ULËT; boolean ledOn = false; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // funksion për debounse debounse boolean(boolean fundit) (rryma boolean = digitalRead(switchPin); if(last != aktuale) ( vonesë ( 5); aktual = DigitalRead(switchPin); ) rrymë kthese; ) void loop() (currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == LARTË) (ledOn = !ledOn;) lastButton = aktualButton; digitalWrite (ledPin, ledOn); )

// variabla me kunjat e pajisjeve të lidhura

int switchPin = 8 ;

int ledPin = 11 ;

// variablat për të ruajtur gjendjen e butonit dhe LED

boolean lastButton = LOW ;

rrymë booleanButton = ULËT ;

Boolean LEDon = false;

konfigurimi i zbrazët () (

pinMode (SwitchPin, INPUT);

pinMode (ledPin, OUTPUT);

// funksion për debouncing

debounse boolean (e fundit logjike) (

rryma boolean = leximi dixhital (SwitchPin);

nëse (e fundit! = rrymë) (

vonesa (5);

aktual = dixhitalLeximi (SwitchPin);

kthimi i rrymës;

void loop() (

aktualButton = debounse(LastButton);

nëse (Butoni i fundit == I ULËT &&Butoni aktual == I LARTË) (

LEDON =! Ledon;

lastButton = aktualButton ;

digitalWrite (ledPin, ledOn);

Në këtë skicë, unë krijova një funksion shtesë debounse për të shtypur kërcimin e kontaktit. Ka informacion në lidhje me fryrjen e kontaktit në faqen time të internetit. Sigurohuni që të shikoni këtë material.

PWM Arduino

Modulimi i gjerësisë së pulsit (PWM) është procesi i kontrollit të tensionit duke përdorur ciklin e punës të një sinjali. Kjo do të thotë, duke përdorur PWM ne mund të kontrollojmë pa probleme ngarkesën. Për shembull, ju mund të ndryshoni pa probleme ndriçimin e një LED, por ky ndryshim në shkëlqim nuk merret duke ulur tensionin, por duke rritur intervalet e sinjalit të ulët. Parimi i funksionimit të PWM është paraqitur në këtë diagram:

Kur aplikojmë PWM në LED, ajo fillon të ndizet shpejt dhe të fiket. Syri i njeriut nuk është në gjendje ta shohë këtë sepse frekuenca është shumë e lartë. Por gjatë xhirimit të videos, me shumë mundësi do të shihni momente kur LED nuk ndizet. Kjo do të ndodhë me kusht që shpejtësia e kuadrove të kamerës të mos jetë shumëfish i frekuencës PWM.

Arduino ka një modulator të integruar të gjerësisë së pulsit. Mund të përdorni PWM vetëm në ato kunja që mbështeten nga mikrokontrolluesi. Për shembull, Arduino Uno dhe Nano kanë 6 kunja PWM: këto janë kunjat D3, D5, D6, D9, D10 dhe D11. Kunjat mund të ndryshojnë në dërrasat e tjera. Ju mund të gjeni një përshkrim të bordit për të cilin jeni të interesuar

Për të përdorur PWM në Arduino ekziston një funksion. Merr si argument numrin e pinit dhe vlerën PWM nga 0 në 255. 0 është 0% mbushje me një sinjal të lartë, dhe 255 është 100%. Le të shkruajmë një skicë të thjeshtë si shembull. Le ta bëjmë LED-in të ndizet pa probleme, të presim një sekondë dhe të shuhet po aq pa probleme, e kështu me radhë ad infinitum. Këtu është një shembull i përdorimit të këtij funksioni:

// LED është i lidhur me pinin 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); vonesë (5); ) )

// LED i lidhur me pinin 11

int ledPin = 11 ;

konfigurimi i zbrazët () (

pinMode (ledPin, OUTPUT);

void loop() (

për (int i = 0; i< 255 ; i ++ ) {

analogWrite(ledPin, i);

vonesa (5);

vonesë (1000);

për (int i = 255; i > 0; i -- ) (

Ky simulator funksionon më së miri në shfletuesin Chrome
Le të hedhim një vështrim më të afërt në Arduino.

Arduino nuk është një kompjuter i madh që mund të lidhet me qarqe të jashtme. Arduino Uno përdor Atmega 328P
Ky është çipi më i madh në tabelë. Ky çip ekzekuton programe që janë të ruajtura në memorien e tij. Ju mund ta shkarkoni programin përmes usb duke përdorur Arduino IDE. Porta USB gjithashtu siguron energji për arduino.

Ka një lidhës të veçantë të energjisë. Pllaka ka dy kunja të etiketuara 5v dhe 3.3v, të cilat nevojiten për të fuqizuar pajisje të ndryshme. Do të gjeni gjithashtu kunja të shënuara GND, këto janë kunjat e tokës (toka është 0V). Platforma Arduino ka gjithashtu 14 kunja dixhitale, të etiketuara nga 0 në 13, të cilat lidhen me nyjet e jashtme dhe kanë dy gjendje, të larta ose të ulëta (ndezur ose fikur). Këto kontakte mund të funksionojnë si dalje ose si hyrje, d.m.th. ata ose mund të transmetojnë disa të dhëna dhe të kontrollojnë pajisjet e jashtme, ose të marrin të dhëna nga pajisjet. Kunjat e ardhshme në tabelë janë etiketuar A0-A5. Këto janë hyrje analoge që mund të marrin të dhëna nga sensorë të ndryshëm. Kjo është veçanërisht e përshtatshme kur duhet të matni një diapazon të caktuar, siç është temperatura. Hyrjet analoge kanë funksione shtesë që mund të aktivizohen veçmas.

Si të përdorni një bord zhvillimi.

Pllaka e bukës nevojitet për të lidhur përkohësisht pjesët, për të kontrolluar se si funksionon pajisja, përpara se të bashkoni gjithçka.
Të gjithë shembujt e mëposhtëm janë montuar në një tabelë në mënyrë që të mund të bëni shpejt ndryshime në qark dhe të ripërdorni pjesët pa u shqetësuar me saldimin.

Pllaka e bukës ka rreshta vrimash në të cilat mund të futni pjesë dhe tela. Disa nga këto vrima janë të lidhura elektrike me njëra-tjetrën.

Dy rreshtat e sipërm dhe të poshtëm janë të lidhur në rreshta përgjatë gjithë tabelës. Këto rreshta përdoren për të furnizuar qarkun me energji elektrike. Mund të jetë 5V ose 3.3V, por sido që të jetë, gjëja e parë që duhet të bëni është të lidhni 5V dhe GND me tabelën e bukës siç tregohet në foto. Ndonjëherë këto lidhje rreshtash mund të prishen në mes të tabelës, atëherë nëse keni nevojë, mund t'i lidhni siç tregohet në figurë.








Vrimat e mbetura, të vendosura në mes të tabelës, grupohen në grupe me pesë vrima. Ato përdoren për të lidhur pjesët e qarkut.


Gjëja e parë që do të lidhim me mikrokontrolluesin tonë është një LED. Diagrami i lidhjes elektrike është paraqitur në foto.

Pse nevojitet një rezistencë në një qark? Në këtë rast, ajo kufizon rrymën që kalon nëpër LED. Çdo LED është projektuar për një rrymë të caktuar, dhe nëse kjo rrymë është më e lartë, LED do të dështojë. Ju mund të zbuloni se çfarë vlere duhet të ketë rezistenca duke përdorur ligjin e Ohm-it. Për ata që nuk e dinë ose e kanë harruar, ligji i Ohmit thotë se ekziston një marrëdhënie lineare midis rrymës dhe tensionit. Kjo do të thotë, sa më shumë tension të aplikojmë në rezistencë, aq më shumë rrymë do të rrjedhë nëpër të.
V=I*R
Ku V- Tensioni në të gjithë rezistencën
I- rryma përmes rezistencës
R- rezistenca që duhet gjetur.
Së pari, ne duhet të zbulojmë tensionin në të gjithë rezistencën. Shumica e LED-ve 3 mm ose 5 mm që do të përdorni kanë një tension funksionimi prej 3V. Kjo do të thotë që ne duhet të shuajmë 5-3 = 2V në rezistencë.

Më pas do të llogarisim rrymën që kalon nëpër rezistencë.
Shumica e LED-ve 3 mm dhe 5 mm shkëlqejnë me shkëlqim të plotë në 20 mA. Një rrymë më e madhe se kjo mund t'i çaktivizojë ato, ndërsa një rrymë me intensitet më të vogël do të ulë shkëlqimin e tyre pa shkaktuar ndonjë dëm.

Pra, ne duam të lidhim LED-in me qarkun 5V në mënyrë që të mbajë një rrymë prej 20 mA. Meqenëse të gjitha pjesët janë të përfshira në një qark, rezistenca do të ketë gjithashtu një rrymë prej 20 mA.
marrim
2V = 20 mA * R
2V = 0,02A * R
R = 100 Ohm

100 Ohm është rezistenca minimale, është më mirë të përdorni pak më shumë, sepse LED-të kanë disa ndryshime në karakteristika.
Në këtë shembull, përdoret një rezistencë 220 ohm. Vetëm se autori ka shumë prej tyre: wink: .

Fusni LED-in në vrimat në mes të tabelës, në mënyrë që priza e saj e gjatë të lidhet me një nga kapakët e rezistencës. Lidhni skajin e dytë të rezistencës në 5 V dhe lidhni prizën e dytë të LED me GND. LED duhet të ndizet.

Ju lutemi vini re se ka një ndryshim në mënyrën se si e lidhni LED. Rryma rrjedh nga terminali më i gjatë në atë më të shkurtër. Në diagram mund të imagjinoni se rryma rrjedh në drejtimin ku drejtohet trekëndëshi. Provoni ta ktheni LED-in me kokë poshtë dhe do të shihni që nuk do të ndizet.

Por mënyra se si e lidhni rezistencën nuk ka fare ndryshim. Mund ta ktheni ose të provoni ta lidhni me një kunj tjetër të LED, kjo nuk do të ndikojë në funksionimin e qarkut. Ajo do të vazhdojë të kufizojë rrymën përmes LED.

Anatomia e Skicës Arduino.

Programet për Arduino quhen sketch. Ato përbëhen nga dy funksione kryesore. Funksioni konfigurimi dhe funksionin lak
Brenda këtij funksioni do të vendosni të gjitha cilësimet bazë. Cilat kunja do të funksionojnë si hyrje ose dalje, cilat biblioteka të lidhen, inicializojnë variablat. Funksioni Konfigurimi () ekzekutohet vetëm një herë gjatë skicës, kur fillon ekzekutimi i programit.
ky është funksioni kryesor që ekzekutohet më pas konfigurimi (). Në fakt, është vetë programi. Ky funksion do të funksionojë për një kohë të pacaktuar derisa të fikni energjinë.

LED ndezës Arduino



Në këtë shembull, ne do të lidhim një qark LED me një nga kunjat dixhitale të Arduino dhe do ta ndezim dhe fikim atë duke përdorur një program, dhe gjithashtu do të mësoni disa funksione të dobishme.

Ky funksion përdoret në konfigurimi () pjesë e programit dhe shërben për të inicializuar kunjat që do të përdorni si hyrje (HYRJE) ose dalje (OUTPUT). Ju nuk do të jeni në gjendje të lexoni ose shkruani të dhëna nga pini derisa t'i vendosni ato në përkatësisht pinMode. Ky funksion ka dy argumente: pinNumërështë numri pin që do të përdorni.

Modaliteti-përcakton se si do të funksionojë kunja. Në hyrje (HYRJE) ose dalje (OUTPUT). Për të ndezur LED duhet të japim një sinjal NGA Arduino. Për ta bërë këtë, ne konfigurojmë pinin e daljes.
- ky funksion përdoret për të vendosur gjendjen (shteti) pinë (Numri i kunjit). Ka dy shtete kryesore (në fakt 3 prej tyre), një është I LARTË, do të ketë 5V në pin, kjo është diçka tjetër E ulët dhe pin do të jetë 0v. Kjo do të thotë që për të ndezur LED duhet të vendosim kunjin e lidhur me LED në një nivel të lartë I LARTË.

Vonesa. Shërben për të vonuar funksionimin e programit për një periudhë të specifikuar në msec.
Më poshtë është kodi që bën LED të pulsojë.
//LED Blink int ledPin = 7;//Pinën Arduino me të cilën është lidhur LED-ja void setup() ( pinMode(ledPin, OUTPUT);// vendosja e pinit si OUTPUT) void loop() ( digitalWrite(ledPin, HIGH) ;// aktivizoni vonesën LED (1000);// vononi 1000 ms (1 sek) dixhital Shkrimi (ledPin, LOW);//Fikni vonesën LED (1000);//prit 1 sekondë)

Shpjegime të vogla mbi kodin.
Rreshtat që fillojnë me "//" janë komente dhe injorohen nga Arduino.
Të gjitha komandat përfundojnë me një pikëpresje; nëse i harroni ato, do të merrni një mesazh gabimi.

ledPinështë një variabël. Variablat përdoren në programe për të ruajtur vlerat. Në këtë shembull, ndryshorja ledPin vlera i është caktuar 7, ky është numri pin Arduino. Kur programi Arduino ndeshet me një linjë me një ndryshore ledPin, do të përdorë vlerën që kemi specifikuar më parë.
Pra regjistroni pinMode (ledPin, OUTPUT) të ngjashme me regjistrimin pinMode (7, OUTPUT).
Por në rastin e parë, ju duhet vetëm të ndryshoni variablin dhe ai do të ndryshojë në çdo rresht ku përdoret, dhe në rastin e dytë, për të ndryshuar variablin, duhet të bëni ndryshime manualisht në secilën komandë.

Rreshti i parë tregon llojin e ndryshores. Kur programoni Arduino, është e rëndësishme që gjithmonë të deklaroni llojin e variablave. Tani për tani mjafton që ju ta dini këtë INT shpall numrat negativë dhe pozitivë.
Më poshtë është një simulim i skicës. Kliko start për të parë qarkun në veprim.

Siç pritej, LED fiket dhe ndizet përsëri pas një sekonde. Provoni të ndryshoni vonesën për të parë se si funksionon.

Kontrolli i shumë LED-ve.

Në këtë shembull, do të mësoni se si të kontrolloni shumë LED. Për ta bërë këtë, instaloni 3 LED të tjera në tabelë dhe lidhni ato me rezistorët dhe kunjat Arduino siç tregohet më poshtë.

Për të ndezur dhe fikur LED-et një nga një, duhet të shkruani një program të ngjashëm me këtë:
//Multi LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() ( //cakto kunjat si OUTPUT pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) void loop() ( digitalWrite(led1Pin, HIGH );//ndiz vonesën LED(1000);//vonesë 1 sek dixhitalWrite(led1Pin, LOW);//fike vonesën LED(1000);//vonesë 1 sek //bëj të njëjtën gjë për 3 të tjerat LED dixhitalWrite(led2Pin , LARTË);//ndizni vonesën LED(1000);//vonesë 1 sek dixhitaleWrite(led2Pin, LOW);//fikja e vonesës LED(1000);//vonesë 1 sek dixhitaleWrite(led3Pin, LARTË );//ndiz vonesën LED(1000);// vonesë 1 sek dixhitalWrite(led3Pin, LOW);//fikja e vonesës LED(1000);//vonesë 1 sek dixhitaleWrite(led4Pin, LARTË);//ndiz vonesa LED (1000);// vonesë 1 sek dixhitalWrite (led4Pin, LOW);//fikja e vonesës LED (1000);//vonesa 1 sekondë)

Ky program do të funksionojë shkëlqyeshëm, por nuk është zgjidhja më racionale. Kodi duhet të ndryshohet. Në mënyrë që programi të punojë pa pushim, ne do të përdorim një ndërtim të quajtur.
Unazat janë të dobishme kur duhet të përsërisni të njëjtin veprim disa herë. Në kodin e mësipërm ne përsërisim rreshtat

DigitalWrite (led4Pin, LARTË); vonesë (1000); digitalWrite (led4Pin, LOW); vonesë (1000);
kodi i plotë i skicës në bashkëngjitje (Shkarkime: 1260)

Rregullimi i ndriçimit LED

Ndonjëherë do t'ju duhet të ndryshoni shkëlqimin e LED -ve në program. Kjo mund të bëhet duke përdorur komandën analogWrite() . Kjo komandë e aktivizon dhe fiket LED -in aq shpejt sa syri nuk mund ta shohë dritën. Nëse LED është ndezur gjysmën e kohës dhe nga gjysma e kohës, do të duket vizualisht se po shkëlqen në gjysmën e shkëlqimit të saj. Ky quhet modulim i gjerësisë së pulsit (PWM ose PWM në anglisht). Shim përdoret mjaft shpesh, pasi mund të përdoret për të kontrolluar një komponent "analog" duke përdorur një kod dixhital. Jo të gjitha kunjat e Arduino janë të përshtatshme për këto qëllime. Vetëm ato përfundime afër të cilave nxirret një përcaktim i tillë " ~ ". Do ta shihni pranë kunjave 3,5,6,9,10,11.
Lidhni një nga LED-et tuaja me një nga kunjat PWM (për autorin kjo është pin 9). Tani ekzekutoni skicën e ndezjes LED, por së pari ndryshoni komandën DigitalWrite()analogWrite(). analogWrite() ka dy argumente: i pari është numri i pinit, dhe i dyti është vlera PWM (0-255), në lidhje me LED-të kjo do të jetë shkëlqimi i tyre, dhe për motorët elektrikë shpejtësia e rrotullimit. Më poshtë është një kod shembull për ndriçime të ndryshme LED.
//Ndrysho ndriçimin e LED-së int ledPin = 9;//një LED është i lidhur me këtë setup void pin() ( pinMode(ledPin, OUTPUT);// inicializimi i pinit në dalje ) void loop() ( analogWrite( ledPin, 255);// ndriçim i plotë (255/255 = 1) vonesë (1000);//pauzë 1 sek dixhitalWrite(ledPin, LOW);//fike vonesën LED (1000);//pauzë 1 sekondë analogeWrite( ledPin, 191);//shkëlqimi me 3/4 (191/255 ~= 0,75) vonesë (1000);//pauzë 1 sekondë dixhitaleWrite(ledPin, LOW);//fikni vonesën LED (1000);// pauzë 1 sek analogWrite (ledPin, 127); //gjysmë ndriçimi (127/255 ~= 0,5) vonesë (1000);//pauzë 1 sekondë DigitalWrite (ledPin, LOW);//fikja e vonesës LED (1000);/ /pauzë 1 sekondë analogeWrite(ledPin, 63); //dritë çerek (63/255 ~= 0,25) vonesë (1000);//pauzë 1 sekondë dixhitaleWrite(ledPin, LOW);//fikni vonesën LED (1000) ;//pauzë 1 sekondë)

Provoni të ndryshoni vlerën PWM në komandë analogWrite() për të parë se si kjo ndikon në ndriçimin.
Më pas, do të mësoni se si ta rregulloni ndriçimin pa probleme nga e plotë në zero. Sigurisht, ju mund të kopjoni një pjesë të kodit 255 herë
analogWrite (ledPin, shkëlqim); vonesë (5);//shkëlqim me vonesë të shkurtër = shkëlqim + 1;
Por, ju e kuptoni, kjo nuk do të jetë praktike. Mënyra më e mirë për ta bërë këtë është përdorimi i ciklit FOR që kemi përdorur më parë.
Shembulli i mëposhtëm përdor dy sythe, një për të ulur ndriçimin nga 255 në 0
për (shkëlqimi int=0; ndriçimi=0; ndriçimi--) (shkrimi analog (ledPin, ndriçimi); vonesa (5); )
vonesë (5) përdoret për të ngadalësuar shpejtësinë e zbehjes së ndriçimit 5*256=1280ms=1.28s)
Rreshti i parë përdor " shkëlqim -"Për ta bërë vlerën e shkëlqimit të ulet me 1 sa herë që përsëritet lak. Vini re se lak do të zgjasë deri sa ndriçimi >=0.Zëvendësimi i shenjës > në shenjë >= ne kemi përfshirë 0 në diapazonin e ndriçimit. Kjo skicë është modeluar më poshtë. //ndryshoni pa probleme ndriçimin int ledPin = 9;//një LED është i lidhur me këtë setup void pin() ( pinMode(ledPin, OUTPUT);// inicializimi i pinit të daljes) void loop() ( //rritni pa probleme ndriçimi (0 deri në 255 ) për (ndritshmëri int=0; ndriçim=0; ndriçim--)( analogWrite(ledPin, ndriçim); vonesë(5); ) vonesë (1000);//prit 1 sek //zvogëloje pa probleme ndriçimin (255 deri në 0) për (shkëlqim int=255; ndriçim>=0; ndriçim--) (shkrim analog(ledPin, ndriçim); vonesë (5); ) vonesë (1000);//prit 1 sekondë) )
Nuk është shumë e dukshme, por ideja është e qartë.

RGB LED dhe Arduino

Një LED RGB është në të vërtetë tre LED me ngjyra të ndryshme në një paketë.

Duke përfshirë LED të ndryshëm me ndriçim të ndryshëm, mund t'i kombinoni ato për të krijuar ngjyra të ndryshme. Për Arduino, ku numri i niveleve të ndriçimit është 256, do të merrni 256^3=16581375 ngjyra të mundshme. Në realitet, sigurisht, do të ketë më pak prej tyre.
LED që do të përdorim është katoda e zakonshme. Ato. të tre LED-et janë të lidhura strukturisht me katodë në një terminal. Ne do ta lidhim këtë kunj me pinin GND. Kunjat e mbetura, nëpërmjet rezistorëve kufizues, duhet të lidhen me kunjat PWM. Autori ka përdorur kunjat 9-11. Në këtë mënyrë do të jetë e mundur të kontrollohet çdo LED veç e veç. Skica e parë tregon se si të ndizni çdo LED individualisht.



//RGB LED - test //lidhjet me pin int të kuqe = 9; int jeshile = 10; blu int = 11; void setup())( pinMode(e kuqe, OUTPUT); pinMode(blu, OUTPUT); pinMode(jeshile, OUTPUT); ) void loop())( //ndizni/fikni LED-in e kuq dixhitalWrite(e kuqe, LARTË); vonesë (500) ; Shkrim dixhital (e kuqe, E ULËT); vonesë (500); //ndezni/fikni LED-in e gjelbër DigitalWrite (jeshile, LARTË); vonesë (500); Shkrimi dixhital (jeshile, LOW); vonesë (500); // ndizni/fikni LED-in blu dixhital Shkrimi (blu, LARTË); vonesë (500); dixhital Shkrimi (blu, ULËT); vonesë (500); )

Shembulli i mëposhtëm përdor komandat analogWrite() dhe për të marrë vlera të ndryshme të rastësishme të ndriçimit për LED. Do të shihni ngjyra të ndryshme që ndryshojnë rastësisht.
//RGB LED - ngjyra të rastësishme //lidhjet me pin int e kuqe = 9; int jeshile = 10; blu int = 11; void setup())( pinMode(e kuqe, OUTPUT); pinMode(blu, OUTPUT); pinMode(jeshile, OUTPUT); ) void loop())( //zgjedh një analog me ngjyra të rastësishmeWrite(e kuqe, rastësore(256)); analogWrite (blu, rastësore (256)); analogWrite (jeshile, rastësore (256)); vonesë (1000);//prit një sekondë)

E rastësishme (256)- kthen një numër të rastësishëm në rangun nga 0 në 255.
Në skedarin e bashkangjitur është një skicë që do të demonstrojë kalime të buta të ngjyrave nga e kuqja në jeshile, pastaj në blu, të kuqe, jeshile, etj. (Shkarkime: 348)
Skica e shembullit funksionon, por ka shumë kode të kopjuara. Ju mund ta thjeshtoni kodin duke shkruar funksionin tuaj ndihmës që do të ndryshojë pa probleme nga një ngjyrë në tjetrën.
Ja si do të duket: (Shkarkime: 385)
Le të shohim përcaktimin e funksionit pjesë-pjesë. Funksioni thirret fader dhe ka dy argumente. Çdo argument ndahet me presje dhe ka një lloj të deklaruar në rreshtin e parë të përkufizimit të funksionit: zbehës i zbrazët (int color1, int color2). Ju shikoni që të dy argumentet janë deklaruar si ndër, dhe atyre u jepen emra ngjyra 1 Dhe ngjyra2 si variabla të kushteve për të përcaktuar një funksion. E pavlefshme do të thotë që funksioni nuk kthen asnjë vlerë, ai thjesht ekzekuton komanda. Nëse do t'ju duhej të shkruanit një funksion që kthente rezultatin e shumëzimit, do të dukej kështu:
shumëzuesi int(numri int1, numri int2) (produkti int = numri1*numri2; produkti kthese; )
Vini re se si kemi deklaruar Type ndër si një lloj kthimi në vend
i pavlefshëm.
Brenda funksionit ka komanda që i keni përdorur tashmë në skicën e mëparshme, vetëm numrat e pin janë zëvendësuar me ngjyra 1 Dhe ngjyra2. Funksioni thirret fader, argumentet e tij llogariten si ngjyra 1 = e kuqe Dhe ngjyra2 = jeshile. Arkivi përmban një skicë të plotë duke përdorur funksione (Shkarkime: 288)

Butoni

Skica tjetër do të përdorë një buton me kontakte normalisht të hapura, pa mbërthyer.


Kjo do të thotë që ndërsa butoni nuk shtypet, nuk kalon rrymë nëpër të dhe pasi të lëshohet, butoni kthehet në pozicionin e tij origjinal.
Përveç butonit, qarku përdor një rezistencë. Në këtë rast, ai nuk kufizon rrymën, por "tërheq" butonin në 0V (GND). Ato. Derisa të shtypet butoni, pini Arduino me të cilin është lidhur do të ulet. Rezistenca e përdorur në qark është 10 kOhm.


//përcaktoni kur shtypet butoni int buttonPin = 7; void setup())( pinMode(buttonPin, INPUT);//initialize pin në hyrje Serial.begin(9600);//initialize portin serial) void loop())( if (digitalRead(buttonPin)==HIGH )(//nëse shtypet butoni Serial.println("shtypet"); // shfaq "i shtypur") tjetër (Serial.println("pa shtypur"); // ndryshe "i pashtypur") )
Ka disa komanda të reja në këtë skicë.
-Kjo komandë merr vlerat e larta dhe të ulëta të prodhimit që po testojmë. Ky dalje duhet së pari të konfigurohet si një hyrje në setup().
; //ku buttonPin është numri i pinit ku është lidhur butoni.
Porta serike lejon Arduino të dërgojë mesazhe në kompjuter ndërsa vetë kontrolluesi po ekzekuton programin. Kjo është e dobishme për korrigjimin e një programi, dërgimin e mesazheve në pajisje ose aplikacione të tjera. Për të mundësuar transferimin e të dhënave nëpërmjet një porti serik (i quajtur gjithashtu UART ose USART), duhet ta inicializoni atë në setup()

Serial.begin() ka vetëm një argument - kjo është shpejtësia e transferimit të të dhënave midis Arduino dhe kompjuterit.
Skica përdor një komandë për të shfaqur një mesazh në ekran në Arduino IDE (Tools >> Serial Monitor).
- dizajni ju lejon të kontrolloni ecurinë e ekzekutimit të programit duke kombinuar disa kontrolle në një vend.
Nëse digitalRead kthen LARTË, atëherë fjala "shtypet" shfaqet në monitor. Përndryshe (përndryshe) fjala "lëshuar" shfaqet në monitor. Tani mund të provoni të ndizni dhe fikni LED duke shtypur një buton.
//Zbulimi i shtypjes së butonit me dalje LED butoni intPin = 7; int ledPin = 8; void setup())( pinMode(buttonPin, INPUT);//këtë herë do të vendosim pinin e butonit si INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin )= = LARTË) (DixhitalWrite (ledPin, LARTË); Serial.println ("shtypur"); ) tjetër ( digitalWrite (ledPin, LOW); Serial.println ("pa shtypur"); ) )

Hyrja analoge.

analogLexo ju lejon të lexoni të dhëna nga një nga kunjat analoge të Arduino dhe shfaq një vlerë në intervalin nga 0 (0V) në 1023 (5V). Nëse voltazhi në hyrjen analoge është 2.5 V, atëherë do të shtypet 2.5 / 5 * 1023 = 512
analogLexo ka vetëm një argument - Ky është numri i hyrjes analoge (A0-A5). Skica e mëposhtme tregon kodin për leximin e tensionit nga potenciometri. Për ta bërë këtë, lidhni një rezistencë të ndryshueshme, terminalet e jashtme me kunjat 5V dhe GND, dhe terminalin e mesëm me hyrjen A0.

Drejtoni kodin e mëposhtëm dhe shikoni në monitorin serial se si ndryshojnë vlerat në varësi të rrotullimit të dorezës së rezistencës.
//hyrja analoge int potPin = A0;// kunja qendrore e potenciometrit është e lidhur me këtë konfigurim të pavlefshëm të pinit())( //pina analoge është përfshirë si hyrje si parazgjedhje, kështu që nuk nevojitet inicializimi Serial.begin(9600 ); ) void loop())( int potVal = analogRead(potPin);//potVal është një numër midis 0 dhe 1023 Serial.println(potVal); )
Skica e mëposhtme kombinon skicën e klikimit të butonit dhe skicën e kontrollit të ndriçimit LED. LED do të ndizet nga butoni dhe ndriçimi do të kontrollohet nga një potenciometër.
//Zbulimi i shtypjes së butonit me dalje LED dhe intensitet të ndryshueshëm butoni intPin = 7; int ledPin = 9; int potPin = A0; void setup())( pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (DigitalRead(buttonPin)==HIGH)(//nëse shtypet butoni int analogVal = analogRead(potPin);int scaledVal = hartë(analogVal, 0, 1023, 0, 255); analogWrite(ledPin, scaledVal);//ndiz led me intensitetin e vendosur nga tenxherja Serial.println("shtypet"); ) else (DixhitalWrite(ledPin, LOW);//fikni nëse butoni nuk shtypet Serial.println("pa shtypur"); ) )

Dorëzimi i produkteve të reja shtëpiake në zyrën postare

Merrni një përzgjedhje të produkteve të reja shtëpiake me email. Jo spam, vetëm ide të dobishme!