Paprastos Arduino grandinės pradedantiesiems. Paprastos „Arduino“ grandinės pradedantiesiems „Arduino“ dizainas

„Arduino“ vėlavimai vaidina labai svarbų vaidmenį. Be jų negali veikti net paprasčiausias „Blink“ pavyzdys, kuris po nurodyto laiko mirksi šviesos diodu. Tačiau dauguma pradedančiųjų programuotojų mažai žino apie laiko delsimą ir naudoja tik Arduino delsą, nežinodami apie šios komandos šalutinį poveikį. Šiame straipsnyje išsamiai kalbėsiu apie laiko nustatymo funkcijas ir kaip jas naudoti Arduino IDE.

„Arduino“ yra keletas skirtingų komandų, atsakingų už darbą su laiku ir pauzėmis:

  • delsimas()
  • delsimas mikrosekundės ()
  • milis ()
  • mikros ()

Jie skiriasi tikslumu ir turi savo ypatybes, į kurias reikėtų atsižvelgti rašant kodą.

Naudojant arduino delsos funkciją

Sintaksė

Arduino delsa yra paprasčiausia komanda, kurią dažniausiai naudoja pradedantieji. Iš esmės tai yra delsa, kuri pristabdo programą skliausteliuose nurodytam milisekundžių skaičiui. (Vienoje sekundėje yra 1000 milisekundžių.) Didžiausia reikšmė gali būti 4294967295 ms, o tai yra maždaug 50 dienų. Pažvelkime į paprastą pavyzdį, kuris aiškiai parodo, kaip ši komanda veikia.

Void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); // siųsti aukštą signalą į 13 kontakto delsą (10000); // pristabdyti 10 000 ms arba 10 sekundžių digitalWrite13, LOW) ; // siųsti žemą signalą į 13 kontaktą delay(10000); // pristabdyti 10 000 ms arba 10 sekundžių)

Pagal metodą sąranka Nurodome, kad 13 kaištis bus naudojamas kaip išvestis. Pagrindinėje programos dalyje į kaištį pirmiausia siunčiamas aukštas signalas, tada darome 10 sekundžių delsą. Atrodo, kad tuo metu programa yra sustabdyta. Tada duodamas žemas signalas ir vėl vėluoja ir viskas prasideda iš naujo. Dėl to gauname, kad kaištis pakaitomis tiekiamas 5 V arba 0.

Turite aiškiai suprasti, kad per pauzę naudojant delsą programos darbas sustabdomas, programa negaus jokių duomenų iš jutiklių. Tai yra didžiausias Arduino delsos funkcijos naudojimo trūkumas. Šį apribojimą galite apeiti naudodami pertraukimus, tačiau apie tai kalbėsime atskirame straipsnyje.

Vėlavimo su mirksinčiu šviesos diodu pavyzdys

Grandinės pavyzdys, iliustruojantis, kaip veikia delsos funkcija.
Galite sukurti grandinę su šviesos diodu ir rezistoriumi. Tada turėsime standartinį pavyzdį – mirksi LED. Norėdami tai padaryti, prie kaiščio, kurį nurodėme kaip išvestį, turite prijungti šviesos diodą su teigiamu kontaktu. Laisvąją šviesos diodo koją sujungiame su įžeminimu per maždaug 220 omų rezistorių (galima šiek tiek daugiau). Galite nustatyti poliškumą žiūrėdami į jo vidų. Didelis puodelis viduje prijungtas prie minuso, o maža kojelė su pliusu. Jei jūsų šviesos diodas yra naujas, poliškumą galite nustatyti pagal laidų ilgį: ilga kojelė yra pliusas, trumpa - minusas.

uždelsimo mikrosekundžių funkcija

Ši funkcija yra visiškas delsos analogas, išskyrus tai, kad jos matavimo vienetai yra ne milisekundės, o mikrosekundės (1 sekundėje yra 1 000 000 mikrosekundžių). Didžiausia vertė bus 16383, tai yra 16 milisekundžių. Skiriamoji geba yra 4, tai yra, skaičius visada bus keturių kartotinis. Fragmento pavyzdys atrodytų taip:

DigitalWrite(2, AUKŠTAS); // siųsti aukštą signalą į kaištį 2 delayMicroseconds(16383); // pauzė 16383 µs digitalWrite(2, LOW); // siųsti žemą signalą į 2 kontaktą delayMicroseconds(16383); // pauzė 16383 µs

Problema su uždelsimuMikrosekundėmis yra lygiai tokia pati kaip ir delsimo - šios funkcijos visiškai „pakabina“ programą ir ji kurį laiką tiesiogine prasme užšąla. Šiuo metu neįmanoma dirbti su prievadais, skaityti informaciją iš jutiklių ir atlikti matematinius veiksmus. Ši parinktis tinka mirksinčioms lemputėms, tačiau patyrę vartotojai jos nenaudoja dideliems projektams, nes tokių gedimų ten nereikia. Todėl daug geriau naudoti toliau aprašytas funkcijas.

Millis funkcija vietoj delsos

Funkcija millis () leis jums nedelsiant atlikti Arduino delsą ir taip apeiti ankstesnių metodų trūkumus. Maksimali millis parametro reikšmė yra tokia pati kaip delsos funkcijos vertė (4294967295ms arba 50 dienų).

Naudodami milis nesustabdome viso eskizo vykdymo, o tiesiog nurodome, kiek laiko Arduino turėtų tiesiog „apeiti“ tikslų kodo bloką, kurį norime pristabdyti. Skirtingai nuo delsos milis, jis pats nieko nesustabdo. Ši komanda tiesiog grąžina mums iš mikrovaldiklio integruoto laikmačio milisekundžių skaičių, kuris praėjo nuo pradžios. Su kiekvienu iškvietimu į kilpą mes patys matuojame laiką, prabėgusį nuo paskutinio mūsų kodo iškvietimo ir, jei laiko skirtumas yra mažesnis už norimą pauzę, kodą ignoruojame. Kai tik skirtumas tampa didesnis nei reikiama pauze, vykdome kodą, gauname esamą laiką naudodami tuos pačius milius ir prisimename – šis laikas bus naujas atskaitos taškas. Kitame cikle atgalinis skaičiavimas jau bus nuo naujo taško ir mes vėl ignoruosime kodą, kol naujas skirtumas tarp milis ir mūsų anksčiau išsaugotos reikšmės vėl pasieks norimą pauzę.

Atidėti nedelsiant naudojant milis reikia daugiau kodo, tačiau jo pagalba galite mirksėti šviesos diodu ir pristabdyti eskizą nestabdydami sistemos.

Štai pavyzdys, aiškiai iliustruojantis komandos darbą:

Nepasirašytas ilgas laikas; // Kintamasis atskaitos taško saugojimui void setup() ( Serial.begin(9600); ) void loop() ( /* Šiuo metu prasideda delay() analogo vykdymas. Apskaičiuokite skirtumą tarp esamo momento ir anksčiau išsaugotas atskaitos taškas, jei skirtumas yra didesnis už norimą reikšmę, tada vykdykite kodą. = millis(); Serial.println ("10 sekundžių") ;

Pirmiausia pristatome laiko kintamąjį, kuris išsaugos milisekundžių skaičių. Pagal numatytuosius nustatymus kintamojo reikšmė yra 0. Pagrindinėje programos dalyje tikriname sąlygą: jei milisekundžių skaičius nuo mikrovaldiklio pradžios atėmus laiko kintamajame įrašytą skaičių yra didesnis nei 10000, tada Atliekamas pranešimo išvedimo į prievado monitorių veiksmas ir į kintamąjį įrašoma dabartinė laiko reikšmė. Dėl programos veikimo prievado monitoriuje kas 10 sekundžių bus rodomas pranešimas 10 sekundžių. Šis metodas leidžia nedelsdamas mirksėti šviesos diodu.

Mikros funkcija vietoj delsos

Ši funkcija taip pat gali atlikti uždelsimą nenaudodama uždelsimo komandos. Jis veikia lygiai taip pat kaip milis, tačiau skaičiuoja mikrosekundes, o ne milisekundes, o skiriamoji geba yra 4 μs. Didžiausia jo vertė yra 4294967295 mikrosekundės arba 70 minučių. Jei jis perpildytas, vertė tiesiog iš naujo nustatoma į 0, nepamirškite apie tai.

Santrauka

Arduino platforma suteikia mums keletą būdų, kaip įgyvendinti mūsų projekto vėlavimą. Naudodami delsą, galite greitai pristabdyti eskizo vykdymą, tačiau tuo pačiu užblokuosite mikrovaldiklio veikimą. Naudodami komandą misis, galite tai padaryti be delsimo „Arduino“, tačiau tam reikės šiek tiek daugiau programavimo. Pasirinkite geriausią metodą, atsižvelgdami į jūsų projekto sudėtingumą. Paprastai paprastuose eskizuose ir su mažesniu nei 10 sekundžių vėlavimu naudojamas delsimas. Jei veikimo logika sudėtingesnė ir reikalingas didelis delsimas, geriau naudoti milis, o ne delsą.

“ pristato mokymų kursą „Arduino pradedantiesiems“. Serija susideda iš 10 pamokų ir papildomos medžiagos. Pamokose yra tekstinės instrukcijos, nuotraukos ir mokomieji vaizdo įrašai. Kiekvienoje pamokoje rasite reikalingų komponentų sąrašą, programų sąrašą ir prijungimo schemą. Baigę šias 10 pagrindinių pamokų, galėsite pereiti prie įdomesnių modelių ir Arduino pagrindu sukurtų robotų kūrimo. Kursas skirtas pradedantiesiems, norint jį pradėti nereikia jokios papildomos informacijos iš elektrotechnikos ar robotikos.

Trumpa informacija apie Arduino

Kas yra Arduino?

Arduino (Arduino) yra aparatinės įrangos skaičiavimo platforma, kurios pagrindiniai komponentai yra įvesties-išvesties plokštė ir kūrimo aplinka. „Arduino“ gali būti naudojamas atskiriems interaktyviems objektams kurti arba prisijungti prie kompiuteryje veikiančios programinės įrangos. Arduino yra vienos plokštės kompiuteris.

Kaip sujungiami Arduino ir robotai?

Atsakymas labai paprastas – Arduino dažnai naudojamas kaip roboto smegenys.

Arduino plokščių pranašumas prieš panašias platformas yra palyginti žema kaina ir beveik platus paplitimas tarp robotikos ir elektrotechnikos mėgėjų bei profesionalų. Pradėję dirbti su „Arduino“, sulauksite palaikymo bet kuria kalba ir bendraminčių, kurie atsakys į jūsų klausimus ir aptars jūsų pokyčius.

1 pamoka. Arduino mirksintis šviesos diodas

Pirmoje pamokoje sužinosite, kaip prijungti šviesos diodą prie Arduino ir valdyti, kad jis mirksėtų. Tai paprasčiausias ir paprasčiausias modelis.

Šviesos diodas- puslaidininkinis įtaisas, sukuriantis optinę spinduliuotę, kai per jį teka elektros srovė į priekį.

2 pamoka. Arduino mygtuko prijungimas

Šiame vadove sužinosite, kaip prijungti mygtuką ir šviesos diodą prie Arduino.

Paspaudus mygtuką, LED lemputė užsidegs paspaudus mygtuką, jis neužsidega. Tai taip pat yra pagrindinis modelis.

3 pamoka. Potenciometro prijungimas prie Arduino

Šioje pamokoje sužinosite, kaip prijungti potenciometrą prie Arduino.

Potenciometras- Tai rezistorius su reguliuojama varža.Potenciometrai naudojami kaip įvairių parametrų reguliatoriai – garso stiprumas, galia, įtampa ir kt.Tai taip pat yra viena iš pagrindinių schemų. Mūsų modelyje nuo potenciometro rankenėlės pasukimoŠviesos diodo ryškumas priklausys.

4 pamoka. Servo valdymas Arduino

Šioje pamokoje sužinosite, kaip prijungti servo prie Arduino.

Servoyra variklis, kurio veleno padėtį galima valdyti nustatant sukimosi kampą.

Servos naudojamos įvairiems mechaniniams robotų judesiams imituoti.

5 pamoka. Trijų spalvų šviesos diodas „Arduino“.

Šiame vadove sužinosite, kaip prijungti trijų spalvų šviesos diodą prie Arduino.

Trijų spalvų LED(rgb LED) - tai trys skirtingų spalvų šviesos diodai viename korpuse. Jie tiekiami arba su maža spausdinimo plokšte, ant kurios yra rezistoriai, arba be įmontuotų rezistorių. Pamoka apima abu variantus.

6 pamoka. Pjezo elementas Arduino

Šioje pamokoje sužinosite, kaip prijungti pjezo elementą prie Arduino.

Pjezo elementas- elektromechaninis keitiklis, kuris verčia elektros įtampa į membranos vibraciją. Šios vibracijos sukuria garsą.

Mūsų modelyje garso dažnį galima reguliuoti programoje nustačius atitinkamus parametrus.

7 pamoka. Arduino fotorezistorius

Šioje mūsų kurso pamokoje sužinosite, kaip prijungti fotorezistorių prie Arduino.

Fotorezistorius- rezistorius, kurio varža priklauso nuo ant jo krintančios šviesos ryškumo.

Mūsų modelyje šviesos diodas užsidega tik tada, kai šviesos ryškumas virš fotorezistoriaus yra mažesnis už tam tikrą šį ryškumą galima reguliuoti programoje.

8 pamoka. Arduino judesio jutiklis (PIR). Automatinis el. pašto siuntimas

Šioje mūsų kurso pamokoje sužinosite, kaip prijungti judesio jutiklį (PIR) prie Arduino, taip pat organizuoti automatinį el. pašto siuntimą.

Judesio jutiklis (PIR)- infraraudonųjų spindulių jutiklis, skirtas aptikti žmonių ar gyvūnų judėjimą arba buvimą.

Mūsų modelyje, gavęs signalą apie žmogaus judėjimą iš PIR jutiklio, Arduino siunčia komandą kompiuteriui išsiųsti El. laišką ir laiškas išsiunčiamas automatiškai.

9 pamoka. Temperatūros ir drėgmės jutiklio DHT11 arba DHT22 prijungimas

Šioje mūsų pamokoje sužinosite, kaip prijungti DHT11 arba DHT22 temperatūros ir drėgmės jutiklį prie Arduino, taip pat susipažinsite su jų charakteristikų skirtumais.

Temperatūros ir drėgmės jutiklis yra sudėtinis skaitmeninis jutiklis, susidedantis iš talpinio drėgmės jutiklio ir termistoriaus temperatūrai matuoti.

Mūsų modelyje Arduino nuskaito jutiklio rodmenis ir rodo rodmenis kompiuterio ekrane.

10 pamoka. Matricinės klaviatūros prijungimas

Šioje mūsų kurso pamokoje sužinosite, kaip prijungti matricinę klaviatūrą prie Arduino plokštės, taip pat susipažinsite su įvairiomis įdomiomis grandinėmis.

Matricos klaviatūra išrastas siekiant supaprastinti daugelio mygtukų prijungimą. Tokių įrenginių yra visur – kompiuterių klaviatūrose, skaičiuotuvuose ir pan.

11 pamoka. Realaus laiko laikrodžio modulio DS3231 prijungimas

Paskutinėje mūsų kurso pamokoje sužinosite, kaip iš šeimos prijungti realaus laiko laikrodžio modulį
DS prie Arduino plokštės, taip pat susipažinkite su įvairiomis įdomiomis grandinėmis.

Realaus laiko laikrodžio modulis- tai elektroninė grandinė, skirta įrašyti chronometrinius duomenis (esamas laikas, data, savaitės diena ir kt.), ir yra sistema, susidedanti iš autonominio maitinimo šaltinio ir įrašymo įrenginio.

Taikymas. Paruošti rėmeliai ir Arduino robotai


Pradėti mokytis Arduino galite ne tik nuo pačios lentos, bet ir įsigiję jau paruoštą, pilnavertį robotą šios plokštės pagrindu - robotą vorą, automobilį robotą, robotą vėžlį ir kt. Toks būdu Taip pat tinka tiems, kurių elektros grandinės ne itin traukia.

Įsigijus veikiantį roboto modelį, t.y. Tiesą sakant, paruoštas aukštųjų technologijų žaislas gali pažadinti susidomėjimą nepriklausomu dizainu ir robotika. Arduino platformos atvirumas leidžia iš tų pačių komponentų pasigaminti naujus žaislus.

Kitas variantas – įsigyti roboto rėmą ar kėbulą: platformą ant ratų ar takelį, humanoidą, vorą ir kt. Tokiu atveju roboto iškamšą turėsite atlikti patys.

Taikymas. Mobilusis katalogas


– Arduino platformos algoritmų kūrėjų asistentas, kurio tikslas – suteikti galimybę galutiniam vartotojui turėti mobilųjį komandų rinkinį (žinyną).

Paraišką sudaro 3 pagrindiniai skyriai:

  • Operatoriai;
  • Duomenys;
  • Funkcijos.

Kur nusipirkti Arduino


Arduino rinkiniai

Kursas bus atnaujintas papildomomis pamokomis. Sekite mus

Šiandien kalbėsime apie SD ir mikro SD kortelių naudojimą „Arduino“. Išsiaiškinsime, kaip prijungti SD korteles prie Arduino, kaip rašyti ir skaityti informaciją. Papildomos atminties naudojimas gali būti labai naudingas daugelyje projektų. Jei nežinote, kas yra SPI, I2C ir analoginiai kaiščiai, patariu žiūrėti ankstesnes pamokas ir suprasti šias Arduino ryšio sąsajas.

Šioje pamokoje kalbėsime apie belaidį ryšį tarp dviejų Arduino plokščių. Tai gali būti labai naudinga perduodant komandas iš vieno „Arduino“ į kitą arba keičiantis informacija tarp „pasidaryk pats“. Belaidžio duomenų perdavimo galimybė atveria naujas galimybes kuriant Jūsų projektus.

Šioje pamokoje sužinosime apie I2C magistralę. I2C yra ryšio magistralė, kuri naudoja tik dvi linijas. Naudodamas šią sąsają, „Arduino“ gali bendrauti su daugeliu įrenginių dviem laidais. Šiandien išsiaiškinsime, kaip prijungti jutiklius prie Arduino per I2C magistralę, kaip pasiekti konkretų įrenginį ir kaip gauti duomenis iš šių įrenginių.

Šioje pamokoje kalbėsime apie Arduino Serial ryšio sąsają. Šią sąsają jau naudojome ankstesnėse pamokose, kai kompiuterio ekrane rodydavome reikšmes iš jutiklių. Šiandien atidžiau pažvelgsime į tai, kaip veikia šis ryšys, taip pat išmoksime naudoti duomenis, perkeltus į kompiuterio prievado monitorių naudojant Processing.

Šiandien kalbėsime apie tranzistorius ir apkrovų prijungimą prie Arduino. Pats „Arduino“ iš vieno kaiščio negali sukurti didesnės nei 5 voltų įtampos ir didesnės nei 40 mA srovės. To pakanka jutikliams ir šviesos diodams, tačiau jei norime prijungti įrenginius, kurie reikalauja daugiau srovės, teks naudoti tranzistorius ar reles.

Šioje pamokoje kalbėsime apie grandinės projektavimo pagrindus, taikomus Arduino. Ir, žinoma, pradėkime nuo Ohmo dėsnio, nes tai yra visų schemų pagrindas. Taip pat šioje pamokoje kalbėsime apie varžą, traukimo ir ištraukimo rezistorius, srovės ir įtampos skaičiavimą.

Šiame straipsnyje nusprendžiau sudaryti išsamų nuoseklų vadovą Arduino pradedantiesiems. Pažiūrėsime, kas yra Arduino, ko reikia norint pradėti mokytis, kur atsisiųsti ir kaip įdiegti bei sukonfigūruoti programavimo aplinką, kaip ji veikia ir kaip naudotis programavimo kalba ir dar daugiau, ko reikia norint sukurti visavertę sudėtingi įrenginiai, pagrįsti šių mikrovaldiklių šeima.

Čia pabandysiu duoti trumpą minimumą, kad suprastumėte darbo su Arduino principus. Norėdami visapusiškiau pasinerti į programuojamų mikrovaldiklių pasaulį, atkreipkite dėmesį į kitus šios svetainės skyrius ir straipsnius. Paliksiu nuorodas į kitą šios svetainės medžiagą, kad būtų galima išsamiau išnagrinėti kai kuriuos aspektus.

Kas yra Arduino ir kam jis skirtas?

Arduino yra elektroninis konstravimo rinkinys, leidžiantis kiekvienam sukurti įvairius elektromechaninius įrenginius. Arduino susideda iš programinės ir techninės įrangos. Programinės įrangos dalis apima kūrimo aplinką (programa, skirta programinei įrangai rašyti ir derinti), daug paruoštų ir patogių bibliotekų bei supaprastinta programavimo kalba. Techninėje įrangoje yra didelė mikrovaldiklių linija ir jiems paruošti moduliai. Dėl to dirbti su Arduino yra labai paprasta!

Su Arduino pagalba galite mokytis programavimo, elektrotechnikos ir mechanikos. Bet tai ne tik edukacinis konstruktorius. Remdamiesi juo, galite pagaminti tikrai naudingų prietaisų.
Pradedant nuo paprastų mirksinčių šviesų, meteorologinių stočių, automatikos sistemų ir baigiant išmaniųjų namų sistemomis, CNC staklėmis ir nepilotuojamais orlaiviais. Galimybių net neriboja jūsų vaizduotė, nes yra daugybė instrukcijų ir įgyvendinimo idėjų.

Arduino pradžios rinkinys

Norint pradėti mokytis Arduino, reikia įsigyti pačią mikrovaldiklio plokštę ir papildomas dalis. Geriausia įsigyti Arduino pradinį rinkinį, tačiau viską, ko reikia, galite pasirinkti patys. Rekomenduoju rinktis rinkinį, nes taip lengviau ir dažnai pigiau. Čia pateikiamos nuorodos į geriausius rinkinius ir atskiras dalis, kurias jums tikrai reikės studijuoti:

Pagrindinis Arduino rinkinys pradedantiesiems:Pirkti
Didelis komplektas mokymams ir pirmiesiems projektams:Pirkti
Papildomų jutiklių ir modulių rinkinys:Pirkti
„Arduino Uno“ yra pats paprasčiausias ir patogiausias šios linijos modelis:Pirkti
Nelituojamoji duonos lenta, skirta lengvam mokymuisi ir prototipų kūrimui:Pirkti
Laidų komplektas su patogiomis jungtimis:Pirkti
LED rinkinys:Pirkti
Rezistorių rinkinys:Pirkti
Mygtukai:Pirkti
Potenciometrai:Pirkti

Arduino IDE kūrimo aplinka

Norėdami rašyti, derinti ir atsisiųsti programinę įrangą, turite atsisiųsti ir įdiegti Arduino IDE. Tai labai paprasta ir patogi programa. Savo svetainėje jau aprašiau kūrimo aplinkos atsisiuntimo, diegimo ir konfigūravimo procesą. Todėl čia tiesiog paliksiu nuorodas į naujausią programos versiją ir į

Versija Windows Mac OS X Linux
1.8.2

Arduino programavimo kalba

Kai rankose turite mikrovaldiklio plokštę ir kompiuteryje įdiegtą kūrimo aplinką, galite pradėti rašyti pirmuosius eskizus (firmware). Norėdami tai padaryti, turite susipažinti su programavimo kalba.

Arduino programavimas naudoja supaprastintą C++ kalbos versiją su iš anksto nustatytomis funkcijomis. Kaip ir kitose C tipo programavimo kalbose, yra keletas kodo rašymo taisyklių. Štai patys pagrindiniai:

  • Po kiekvienos instrukcijos turi būti kabliataškis (;)
  • Prieš deklaruodami funkciją, turite nurodyti funkcijos grąžintą duomenų tipą arba galioti, jei funkcija nepateikia reikšmės.
  • Taip pat prieš deklaruojant kintamąjį būtina nurodyti duomenų tipą.
  • Komentarai skiriami: // eilutę ir /* bloką */

Daugiau apie duomenų tipus, funkcijas, kintamuosius, operatorius ir kalbos konstrukcijas galite sužinoti puslapyje Nereikia įsiminti ir atsiminti visos šios informacijos. Visada galite eiti į žinyną ir pažvelgti į konkrečios funkcijos sintaksę.

Visoje „Arduino“ programinėje įrangoje turi būti bent 2 funkcijos. Tai yra setup () ir loop ().

nustatymo funkcija

Kad viskas veiktų, turime parašyti eskizą. Tegul LED lemputė užsidega paspaudus mygtuką, o po kito paspaudimo užges. Štai mūsų pirmasis eskizas:

// kintamieji su prijungtų įrenginių kontaktais int switchPin = 8; int ledPin = 11; // kintamieji mygtuko būsenai ir šviesos diodams saugoti lastButton = LOW; loginis srovės mygtukas = LOW; loginis ledOn = klaidingas; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // funkcija, skirta atšaukti loginį debounse(boolean last) ( boolean current = digitalRead(switchPin); if(last != current) ( delsa ( 5); ledPin, ledOn);

// kintamieji su prijungtų įrenginių kontaktais

int switchPin = 8;

int ledPin = 11;

// kintamieji mygtuko ir šviesos diodo būsenai išsaugoti

boolean lastButton = LOW ;

boolean currentButton = LOW ;

loginis ledOn = false ;

negaliojantis nustatymas () (

pinMode(jungiklisPin, INPUT);

pinMode(ledPin, OUTPUT);

// atmetimo funkcija

boolean debounse (bulio paskutinis ) (

loginė srovė = digitalRead(switchPin);

if (paskutinis != dabartinis ) (

delsimas(5);

srovė = skaitmeninisRead(switchPin);

grąžinimo srovė;

void loop() (

currentButton = debounse(lastButton);

if (lastButton == LOW && currentButton == AUKŠTAS ) (

ledOn = ! ledOn ;

lastButton = currentButton ;

digitalWrite(ledPin, ledOn);

Šiame eskize sukūriau papildomą debounse funkciją, skirtą kontakto atšokimui slopinti. Mano svetainėje yra informacijos apie kontaktų atmetimą. Būtinai peržiūrėkite šią medžiagą.

PWM Arduino

Impulso pločio moduliavimas (PWM) yra įtampos valdymo procesas naudojant signalo darbo ciklą. Tai yra, naudodami PWM galime sklandžiai valdyti apkrovą. Pavyzdžiui, galite sklandžiai keisti šviesos diodo ryškumą, tačiau šis ryškumo pokytis gaunamas ne sumažinus įtampą, o padidinus žemo signalo intervalus. PWM veikimo principas parodytas šioje diagramoje:

Kai pritaikome PWM prie šviesos diodo, jis pradeda greitai užsidegti ir užgęsti. Žmogaus akis to nemato, nes dažnis yra per didelis. Tačiau filmuodami vaizdo įrašą greičiausiai pamatysite akimirkas, kai šviesos diodas nedega. Taip atsitiks, jei fotoaparato kadrų dažnis nėra PWM dažnio kartotinis.

Arduino turi įmontuotą impulsų pločio moduliatorių. PWM galite naudoti tik tiems kaiščiams, kuriuos palaiko mikrovaldiklis. Pavyzdžiui, Arduino Uno ir Nano turi 6 PWM kaiščius: tai D3, D5, D6, D9, D10 ir D11 kaiščiai. Kitose plokštėse kaiščiai gali skirtis. Galite rasti jus dominančios lentos aprašymą

Norint naudoti PWM „Arduino“, yra funkcija, kuri kaip argumentus paima PIN kodą ir PWM reikšmę nuo 0 iki 255. 0 yra 0% užpildymas aukštu signalu, o 255 yra 100%. Parašykime paprastą eskizą kaip pavyzdį. Tegul šviesos diodas įsižiebia sklandžiai, palaukite vieną sekundę ir užges taip pat sklandžiai, ir taip toliau iki begalybės. Štai šios funkcijos naudojimo pavyzdys:

// LED yra prijungtas prie kaiščio 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); delsa(5); ) )

// LED prijungtas prie 11 kaiščio

int ledPin = 11;

negaliojantis nustatymas () (

pinMode(ledPin, OUTPUT);

void loop() (

už (int i = 0 ; i< 255 ; i ++ ) {

analogWrite(ledPin, i);

delsimas(5);

delsimas (1000);

už (int i = 255; i > 0; i -- ) (

Šis simuliatorius geriausiai veikia „Chrome“ naršyklėje
Pažvelkime į Arduino atidžiau.

Arduino nėra didelis kompiuteris, kurį galima prijungti prie išorinių grandinių. Arduino Uno naudoja Atmega 328P
Tai didžiausias lustas lentoje. Šis lustas vykdo programas, kurios yra saugomos jo atmintyje. Programą galite atsisiųsti per usb naudodami Arduino IDE. USB prievadas taip pat tiekia maitinimą arduino.

Yra atskira maitinimo jungtis. Plokštėje yra du kaiščiai, pažymėti 5v ir 3,3v, kurie reikalingi įvairiems įrenginiams maitinti. Taip pat rasite kaiščius, pažymėtus GND, tai yra įžeminimo kaiščiai (žemė yra 0 V). Arduino platforma taip pat turi 14 skaitmeninių kontaktų, pažymėtų nuo 0 iki 13, kurie jungiasi prie išorinių mazgų ir turi dvi būsenas – aukštą arba žemą (įjungta arba išjungta). Šie kontaktai gali veikti kaip išėjimai arba kaip įėjimai, t.y. jie gali perduoti kai kuriuos duomenis ir valdyti išorinius įrenginius arba gauti duomenis iš įrenginių. Kiti lentos kaiščiai pažymėti A0-A5. Tai analoginiai įėjimai, galintys priimti duomenis iš įvairių jutiklių. Tai ypač patogu, kai reikia išmatuoti tam tikrą diapazoną, pavyzdžiui, temperatūrą. Analoginiai įėjimai turi papildomų funkcijų, kurias galima įjungti atskirai.

Kaip naudotis kūrimo lenta.

Duonos lenta reikalinga norint laikinai sujungti dalis, patikrinti, kaip veikia įrenginys, prieš viską lituojant.
Visi toliau pateikti pavyzdžiai yra surinkti ant duonos lentos, kad galėtumėte greitai pakeisti grandinę ir pakartotinai panaudoti dalis nesivargindami litavimo.

Duoninėje lentoje yra eilės skylių, į kurias galite įkišti dalis ir laidus. Kai kurios iš šių skylių yra elektra sujungtos viena su kita.

Dvi viršutinė ir apatinė eilutės yra sujungtos eilėmis išilgai visos lentos. Šios eilutės naudojamos grandinės maitinimui tiekti. Tai gali būti 5 V arba 3,3 V, bet bet kuriuo atveju pirmiausia reikia prijungti 5 V ir GND prie duonos plokštės, kaip parodyta paveikslėlyje. Kartais šios eilučių jungtys gali nutrūkti lentos viduryje, tada, jei reikia, galite jas sujungti, kaip parodyta paveikslėlyje.








Likusios skylės, esančios lentos viduryje, yra sugrupuotos į penkių skylių grupes. Jie naudojami grandinės dalims sujungti.


Pirmas dalykas, kurį prijungsime prie savo mikrovaldiklio, yra šviesos diodas. Elektros prijungimo schema parodyta paveikslėlyje.

Kodėl grandinėje reikalingas rezistorius? Šiuo atveju jis riboja srovę, kuri praeina per šviesos diodą. Kiekvienas šviesos diodas yra skirtas tam tikrai srovei, o jei ši srovė yra didesnė, šviesos diodas suges. Naudodami Ohmo dėsnį galite sužinoti, kokią vertę turi turėti rezistorius. Tiems, kurie nežino arba pamiršo, Ohmo dėsnis sako, kad tarp srovės ir įtampos yra tiesinis ryšys. Tai yra, kuo didesnę įtampą mes įjungsime į rezistorių, tuo daugiau srovės tekės per jį.
V=I*R
Kur V- įtampa per rezistorių
- srovė per rezistorių
R- pasipriešinimas, kurį reikia rasti.
Pirmiausia turime išsiaiškinti rezistoriaus įtampą. Daugumos naudojamų 3 mm arba 5 mm šviesos diodų darbinė įtampa yra 3 V. Tai reiškia, kad rezistoriuje turime užgesinti 5-3 = 2V.

Tada apskaičiuosime srovę, praeinančią per rezistorių.
Dauguma 3 mm ir 5 mm šviesos diodų šviečia visu ryškumu esant 20 mA. Didesnė nei ši srovė gali juos išjungti, o mažesnio intensyvumo srovė sumažins jų ryškumą, nesukeldama jokios žalos.

Taigi, mes norime prijungti šviesos diodą prie 5 V grandinės, kad jis veiktų 20 mA. Kadangi visos dalys yra įtrauktos į vieną grandinę, rezistorius taip pat turės 20 mA srovę.
Mes gauname
2V = 20 mA * R
2 V = 0,02 A * R
R = 100 omų

100 omų yra minimali varža, geriau naudoti šiek tiek daugiau, nes šviesos diodų charakteristikos šiek tiek skiriasi.
Šiame pavyzdyje naudojamas 220 omų rezistorius. Tik todėl, kad autorius jų turi labai daug: mirkčiojimas: .

Įkiškite šviesos diodą į plokštės viduryje esančias skylutes, kad jos ilgas laidas būtų prijungtas prie vieno iš rezistorių laidų. Prijunkite antrąjį rezistoriaus galą prie 5 V, o antrąjį šviesos diodo laidą prijunkite prie GND. LED turi užsidegti.

Atkreipkite dėmesį, kad LED prijungimo būdas skiriasi. Srovė teka iš ilgesnio terminalo į trumpesnį. Diagramoje galite įsivaizduoti, kad srovė teka ta kryptimi, į kurią nukreiptas trikampis. Pabandykite apversti šviesos diodą aukštyn kojomis ir pamatysite, kad jis neužsidega.

Tačiau tai, kaip prijungiate rezistorių, neturi jokio skirtumo. Galite jį apversti arba pabandyti prijungti prie kito LED kaiščio, tai neturės įtakos grandinės veikimui. Jis vis tiek apribos srovę per šviesos diodą.

Arduino eskizo anatomija.

„Arduino“ programos vadinamos eskizais. Jie susideda iš dviejų pagrindinių funkcijų. Funkcija sąranka ir funkcija kilpa
Šioje funkcijoje nustatysite visus pagrindinius nustatymus. Kurie kontaktai veiks kaip įvestis arba išvestis, kurias bibliotekas prijungti, inicijuokite kintamuosius. Funkcija Sąranka () paleidžiama tik vieną kartą eskizo metu, kai prasideda programos vykdymas.
tai yra pagrindinė funkcija, kuri atliekama po to setup (). Tiesą sakant, tai yra pati programa. Ši funkcija veiks neribotą laiką, kol išjungsite maitinimą.

Arduino mirksi LED



Šiame pavyzdyje mes prijungsime LED grandinę prie vieno iš Arduino skaitmeninių kontaktų ir įjungsime bei išjungsime naudodami programą, taip pat sužinosite keletą naudingų funkcijų.

Ši funkcija naudojama setup () yra programos dalis ir naudojama inicijuoti kaiščius, kuriuos naudosite kaip įvestį (INPUT) arba išeiti (IŠVADA). Negalėsite nuskaityti ar rašyti duomenų iš kaiščio, kol nenustatysite jo atitinkamai pinMode. Ši funkcija turi du argumentus: PIN kodas yra PIN kodas, kurį naudosite.

Režimas- nustato, kaip kaištis veiks. Prie įėjimo (INPUT) arba išeiti (IŠVADA). Norėdami užsidegti šviesos diodą, turime duoti signalą NUO Arduino. Norėdami tai padaryti, sukonfigūruojame išvesties kaištį.
- ši funkcija naudojama būsenai nustatyti (valstybė) pina (PIN kodas). Yra dvi pagrindinės būsenos (iš tikrųjų 3 iš jų), viena yra AUKŠTAS, ant kaiščio bus 5 V, tai kažkas kita Žemas ir kaištis bus 0v. Tai reiškia, kad norėdami įjungti šviesos diodą, turime nustatyti aukštą kaištį, prijungtą prie šviesos diodo AUKŠTAS.

Delsimas. Palaiko programos veikimą msek nurodytam laikotarpiui.
Žemiau yra kodas, dėl kurio LED mirksi.
//LED Blink int ledPin = 7;//Arduino kaištis, prie kurio prijungtas šviesos diodas void setup() ( pinMode(ledPin, OUTPUT);// kaiščio nustatymas kaip OUTPUT) void loop() ( digitalWrite(ledPin, HIGH) ;// įjungti LED delsą (1000);// delsa 1000 ms (1 sek.) digitalWrite(ledPin, LOW);//Išjunkite LED delsą (1000);//palaukite 1 sek.

Keletas kodo paaiškinimų.
Eilutės, prasidedančios raide „//“, yra komentarai ir „Arduino“ jų nepaiso.
Visos komandos baigiasi kabliataškiu, jei jas pamiršite, gausite klaidos pranešimą.

ledPin yra kintamasis. Kintamieji yra naudojami programose reikšmėms saugoti. Šiame pavyzdyje kintamasis ledPin reikšmė priskirta 7, tai yra Arduino PIN kodas. Kai Arduino programa susiduria su eilute su kintamuoju ledPin, bus naudojama anksčiau nurodyta vertė.
Taigi įrašas pinMode (ledPin, OUTPUT) panašus į įrašymą pinMode (7, IŠvestis).
Tačiau pirmuoju atveju tereikia pakeisti kintamąjį ir jis keisis kiekvienoje eilutėje, kurioje jis naudojamas, o antruoju atveju, norint pakeisti kintamąjį, kiekvienoje komandoje turėsite atlikti pakeitimus rankiniu būdu.

Pirmoje eilutėje nurodomas kintamojo tipas. Programuojant Arduino, svarbu visada deklaruoti kintamųjų tipą. Kol kas jums užtenka tai žinoti INT skelbia neigiamus ir teigiamus skaičius.
Žemiau pateikiamas eskizo modeliavimas. Spustelėkite Pradėti, kad pamatytumėte grandinės veikimą.

Kaip ir tikėtasi, šviesos diodas užgęsta ir vėl įsijungia po vienos sekundės. Pabandykite pakeisti delsą, kad pamatytumėte, kaip jis veikia.

Kelių šviesos diodų valdymas.

Šiame pavyzdyje sužinosite, kaip valdyti kelis šviesos diodus. Norėdami tai padaryti, plokštėje įdiekite dar 3 šviesos diodus ir prijunkite juos prie rezistorių ir Arduino kaiščių, kaip parodyta žemiau.

Norėdami po vieną įjungti ir išjungti šviesos diodus, turite parašyti programą, panašią į šią:
//Multi LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() ( //nustatyti kaiščius kaip OUTPUT pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) void loop() ( digitalWrite(led1Pin, HIGH) );//įjunkite LED delsą (1000);//uždelskite 1 sek. digitalWrite(led1Pin, LOW);//išjunkite LED delsą (1000);//uždelskite 1 sek. //padarykite tą patį su kitais 3 Šviesos diodai digitalWrite(led2Pin , HIGH);//uždega LED delsą (1000);//uždeda 1 sek. digitalWrite(led2Pin, LOW);//užgesina LED delsą (1000);//uždeda 1 sek. digitalWrite(led3Pin, HIGH) );//uždekite LED delsą (1000);// uždelskite 1 sek. digitalWrite (led3Pin, LOW);//užgesinkite LED delsą (1000);//uždekite 1 sek. digitalWrite (led4Pin, HIGH);//įjunkite LED uždelsimas (1000);// uždelsimas 1 sek. digitalWrite (led4Pin, LOW);//užgesinkite šviesos diodo delsą (1000);//delskite 1 sek.

Ši programa veiks puikiai, tačiau tai nėra pats racionaliausias sprendimas. Kodą reikia pakeisti. Kad programa veiktų vėl ir vėl, naudosime konstrukciją, vadinamą .
Kilpos naudingos, kai tą patį veiksmą reikia kartoti kelis kartus. Aukščiau esančiame kode kartojame eilutes

DigitalWrite (led4Pin, HIGH); delsimas (1000); digitalWrite(led4Pin, LOW); delsimas (1000);
visas eskizo kodas priede (atsisiuntimai: 1260)

LED ryškumo reguliavimas

Kartais programoje reikės pakeisti šviesos diodų ryškumą. Tai galima padaryti naudojant komandą analogWrite() . Ši komanda įjungia ir išjungia šviesos diodą taip greitai, kad akys nematytų mirgėjimo. Jei šviesos diodas įjungtas pusę laiko ir išjungtas pusę laiko, vizualiai atrodys, kad jis šviečia puse ryškumo. Tai vadinama impulsų pločio moduliacija (angl. PWM arba PWM). Tarpiklis naudojamas gana dažnai, nes juo galima valdyti „analoginį“ komponentą naudojant skaitmeninį kodą. Ne visi Arduino smeigtukai tinka šiems tikslams. Tik tos išvados, šalia kurių daromas toks žymėjimas " ~ “. Pamatysite jį šalia smeigtukų 3,5,6,9,10,11.
Prijunkite vieną iš savo šviesos diodų prie vieno iš PWM kaiščių (autoriui tai yra 9 kaištis). Dabar paleiskite LED mirksintį eskizą, bet pirmiausia pakeiskite komandą digitalWrite()įjungta analogWrite(). analogWrite() turi du argumentus: pirmasis yra kaiščio numeris, o antrasis - PWM reikšmė (0-255), šviesos diodų atžvilgiu tai bus jų ryškumas, o elektros varikliams - sukimosi greitis. Žemiau pateikiamas skirtingų LED šviesų kodo pavyzdys.
//Pakeiskite šviesos diodo ryškumą int ledPin = 9;//prie šio kaiščio prijungtas šviesos diodas void setup() ( pinMode(ledPin, OUTPUT);// kaiščio inicijavimas į išvestį ) void loop() ( analogWrite( ledPin, 255);// visas ryškumas (255/255 = 1) delsa (1000);//pauzė 1 sek. digitalWrite(ledPin, LOW);//išjungti LED delsą (1000);//pauzė 1 sek analogWrite( ledPin, 191);//ryškumas 3/4 (191/255 ~= 0,75) delsa (1000);//pauzė 1 sek. digitalWrite(ledPin, LOW);//išjunkite LED delsą (1000);// pauzė 1 sek analogWrite(ledPin, 127); //pusės ryškumo (127/255 ~= 0,5) uždelsimas(1000);//pauzė 1 sek. digitalWrite(ledPin, LOW);//išjungti LED delsą(1000);/ /pause 1 sek analogWrite(ledPin, 63); //ketvirčio ryškumas (63/255 ~= 0,25) delay(1000);//pause 1 sec digitalWrite(ledPin, LOW);//išjunkite LED delsą(1000) ;//pauzė 1 sek)

Pabandykite pakeisti PWM reikšmę komandoje analogWrite() kad pamatytumėte, kaip tai veikia ryškumą.
Toliau sužinosite, kaip sklandžiai reguliuoti ryškumą nuo visiško iki nulio. Žinoma, galite nukopijuoti kodo dalį 255 kartus
analogWrite(ledPin, ryškumas); delay(5);//short delay brightness = ryškumas + 1;
Bet, jūs suprantate, tai nebus praktiška. Geriausias būdas tai padaryti yra naudoti FOR kilpą, kurią naudojome anksčiau.
Šiame pavyzdyje naudojamos dvi kilpos, iš kurių viena sumažina ryškumą nuo 255 iki 0
for (int brightness=0;brightness=0;brightness--)( analogWrite(ledPin,brightness); delay(5); )
vėlavimas (5) naudojamas sulėtinti išblukimo ir išnykimo greitį 5*256=1280ms=1,28sek)
Pirmoje eilutėje naudojama " ryškumas -", kad ryškumo reikšmė sumažėtų 1 kiekvieną kartą, kai ciklas kartojamas. Atminkite, kad ciklas tęsis iki šviesumas >=0.Keisdamas ženklą > ant ženklo >= į ryškumo diapazoną įtraukėme 0. Šis eskizas sumodeliuotas žemiau. //tolygiai pakeiskite ryškumą int ledPin = 9;//prie šio kontakto prijungtas šviesos diodas void setup() ( pinMode(ledPin, OUTPUT);// išvesties kaiščio inicijavimas) void loop() ( //tolygiai padidinkite ryškumas (nuo 0 iki 255 ), skirtas (int brightness=0;brightness=0;brightness--)( analogWrite(ledPin,brightness); delay(5); ) delay (1000);//palaukite 1 sek. //tolygiai sumažinkite ryškumą (nuo 255 iki 0), skirta (int brightness=255;brightness>=0;brightness--)( analogWrite (ledPin,brightness); delay (5); ) delay (1000);//palaukite 1 sek. ) )
Tai nelabai matosi, bet mintis aiški.

RGB LED ir Arduino

RGB LED iš tikrųjų yra trys skirtingų spalvų šviesos diodai vienoje pakuotėje.

Įtraukdami skirtingus šviesos diodus su skirtingu ryškumu, galite juos derinti ir sukurti skirtingas spalvas. Arduino, kur ryškumo lygių skaičius yra 256, gausite 256^3=16581375 galimas spalvas. Realybėje, žinoma, jų bus mažiau.
Šviesos diodas, kurį naudosime, yra įprastas katodas. Tie. visi trys šviesos diodai struktūriškai sujungti katodais prie vieno gnybto. Šį kaištį sujungsime su GND kaiščiu. Likę kaiščiai per ribojančius rezistorius turi būti prijungti prie PWM kaiščių. Autorius naudojo 9-11 kaiščius. Taip bus galima valdyti kiekvieną LED atskirai. Pirmajame eskize parodyta, kaip įjungti kiekvieną LED atskirai.



//RGB LED - išbandyti //pin jungtis int red = 9; int green = 10; int mėlyna = 11; void setup())( pinMode(raudona, IŠVESTIS); pinMode(mėlyna, IŠVESTIS); pinMode(žalia, IŠVESTIS); ) void loop())( //įjungti/išjungti raudoną šviesos diodą digitalWrite(raudona, HIGH); uždelsimas (500) ; AUKŠTAS skaitmeninisWrite (mėlyna, LOW);

Toliau pateiktame pavyzdyje naudojamos komandos analogWrite() ir gauti skirtingas atsitiktines šviesos diodų ryškumo vertes. Pamatysite, kad skirtingos spalvos keičiasi atsitiktinai.
//RGB LED - atsitiktinės spalvos //pin jungtys int red = 9; int green = 10; int mėlyna = 11; void setup())( pinMode(raudona, IŠVESTIS); pinMode(mėlyna, OUTPUT); pinMode(žalia, IŠVESTIS); ) void loop())( //pasirinkite atsitiktinę spalvą analogWrite(raudona, atsitiktinė(256)); analogWrite( mėlynas, atsitiktinis(256));

Atsitiktinis (256)-pateikia atsitiktinį skaičių nuo 0 iki 255.
Prisegtame faile yra eskizas, kuris parodys sklandų spalvų perėjimą iš raudonos į žalią, tada į mėlyną, raudoną, žalią ir kt. (atsisiuntimai: 348)
Pavyzdinis eskizas veikia, tačiau yra daug pasikartojančio kodo. Galite supaprastinti kodą parašydami savo pagalbinę funkciją, kuri sklandžiai keisis iš vienos spalvos į kitą.
Štai kaip tai atrodys: (atsisiuntimai: 385)
Pažvelkime į funkcijos apibrėžimą gabalas po gabalo. Funkcija vadinama fader ir turi du argumentus. Kiekvienas argumentas yra atskirtas kableliu, o tipas nurodytas pirmoje funkcijos apibrėžimo eilutėje: tuščias fader (1 spalva, 2 spalva). Matote, kad abu argumentai deklaruojami kaip tarpt, ir jiems suteikiami vardai spalva 1 Ir spalva 2 kaip sąlygos kintamieji funkcijai apibrėžti. Tuštuma reiškia, kad funkcija negrąžina jokių reikšmių, ji tiesiog vykdo komandas. Jei turėtumėte parašyti funkciją, kuri grąžintų daugybos rezultatą, ji atrodytų taip:
int daugiklis(int number1, int number2)( int produktas = skaičius1*skaičius2; grąžinti produktą; )
Atkreipkite dėmesį, kaip mes paskelbėme tipą tarpt kaip grąžinimo tipą
tuštuma.
Funkcijos viduje yra komandos, kurias jau naudojote ankstesniame eskize, tik PIN numeriai buvo pakeisti spalva 1 Ir spalva 2. Funkcija vadinama fader, jos argumentai apskaičiuojami kaip spalva1 = raudona Ir spalva2 = žalia. Archyve yra visas eskizas naudojant funkcijas (atsisiuntimai: 288)

Mygtukas

Kitame eskize bus naudojamas mygtukas su įprastai atidarytais kontaktais, neužfiksuojant.


Tai reiškia, kad kol mygtukas nespaudžiamas, per jį neteka srovė, o atleidus mygtukas grįžta į pradinę padėtį.
Be mygtuko, grandinėje naudojamas rezistorius. Šiuo atveju jis neriboja srovės, o „traukia“ mygtuką iki 0 V (GND). Tie. Kol mygtukas nebus paspaustas, Arduino kaištis, prie kurio jis prijungtas, bus žemas. Grandinėje naudojamas rezistorius yra 10 kOhm.


//nustatykite, kada mygtukas paspaudžiamas int buttonPin = 7; void setup())( pinMode(buttonPin, INPUT);//inicijuoti kaištį prie įvesties Serial.begin(9600);//inicijuoti nuoseklųjį prievadą) void loop())( if (digitalRead(buttonPin)==HIGH )(//jei mygtukas paspaustas Serial.println("paspaustas"); // rodomas užrašas "presed" ) else ( Serial.println("nepaspaustas");// kitaip "nepaspaustas" ) )
Šiame eskize yra keletas naujų komandų.
-Ši komanda paima mūsų tikrinamos išvesties aukštas ir žemas vertes. Ši išvestis pirmiausia turi būti sukonfigūruota kaip įvestis programoje setup ().
; //kur mygtukasPin yra PIN kodas, prie kurio prijungtas mygtukas.
Nuoseklusis prievadas leidžia „Arduino“ siųsti pranešimus į kompiuterį, kol pats valdiklis vykdo programą. Tai naudinga derinant programą, siunčiant pranešimus į kitus įrenginius ar programas. Norėdami įgalinti duomenų perdavimą per nuoseklųjį prievadą (taip pat vadinamą UART arba USART), turite jį inicijuoti setup ()

Serial.begin() turi tik vieną argumentą – tai duomenų perdavimo greitis tarp Arduino ir kompiuterio.
Eskizas naudoja komandą, kad ekrane būtų rodomas pranešimas Arduino IDE (Įrankiai >> Serial Monitorius).
- dizainas leidžia kontroliuoti programos vykdymo eigą, derinant kelis patikrinimus vienoje vietoje.
Jei „digitalRead“ grąžina HIGH, tada ekrane rodomas žodis „pressed“. Kitu atveju (kitaip) monitoriuje rodomas žodis „išleistas“. Dabar galite pabandyti įjungti ir išjungti šviesos diodą paspausdami mygtuką.
//mygtuko paspaudimo aptikimas su LED išvestimi int buttonPin = 7; int ledPin = 8; void setup())( pinMode(buttonPin, INPUT);//šį kartą mygtuko kaištį nustatysime kaip INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin) )= =HIGH)( digitalWrite(ledPin, HIGH); Serial.println("paspaustas"); ) else ( digitalWrite(ledPin,LOW); Serial.println("nepaspaustas"); ) )

Analoginis įėjimas.

analogiškas Skaityti leidžia nuskaityti duomenis iš vieno iš Arduino analoginių kontaktų ir rodo vertę nuo 0 (0 V) iki 1023 (5 V). Jei įtampa analoginiame įėjime yra 2,5 V, tada bus spausdinama 2,5 / 5 * 1023 = 512
analogiškas Skaityti turi tik vieną argumentą – tai analoginės įvesties numeris (A0-A5). Toliau pateiktame brėžinyje parodytas kodas, kaip nuskaityti įtampą iš potenciometro. Norėdami tai padaryti, prijunkite kintamąjį rezistorių, išorinius gnybtus prie 5 V ir GND kaiščių, o vidurinį - prie A0 įvesties.

Vykdykite šį kodą ir serijiniame monitoriuje pažiūrėkite, kaip keičiasi reikšmės priklausomai nuo rezistoriaus rankenėlės sukimosi.
//analoginis įvestis int potPin = A0;//centrinis potenciometro kaištis prijungtas prie šio kaiščio void setup())( //analoginis kaištis įtrauktas kaip įvestis pagal numatytuosius nustatymus, todėl inicijuoti nereikia Serial.begin(9600 ) ) void loop())( int potVal = analogRead(potPin);//potVal yra skaičius nuo 0 iki 1023 Serial.println(potVal)
Toliau pateiktame eskize yra sujungtas mygtuko paspaudimo eskizas ir LED ryškumo valdymo eskizas. Šviesos diodas įsijungs nuo mygtuko, o ryškumas bus valdomas potenciometru.
//mygtuko paspaudimo aptikimas su LED išvestimi ir kintamu intensyvumu int buttonPin = 7; int ledPin = 9; int potPin = A0; void setup())( pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin)==HIGH)(//jei mygtukas paspaustas int analogVal = analogRead(potPin) int scaledVal = map(analogVal, 0, 1023, 0, 255); ( digitalWrite(ledPin, LOW);//išjunkite, jei mygtukas nepaspaustas Serial.println("nepaspaustas"); ) )

Naujų naminių gaminių pristatymas į paštą

Gaukite naujų naminių gaminių pasirinkimą el. Jokio šlamšto, tik naudingos idėjos!