tévék. Konzolok. Projektorok és tartozékok. Technológiák. Digitális TV

Arduino uno r3 projektek kezdőknek. Az Arduino programozása a semmiből. Tudnod kell a programozást?

Ez a szimulátor a Chrome böngészőben működik a legjobban
Nézzük meg közelebbről az Arduinót.

Az Arduino nem nagy számítógép, amelyhez csatlakozhatnak külső áramkörök. Az Arduino Uno Atmega 328P-t használ
Ez a legnagyobb chip a táblán. Ez a chip végrehajtja a memóriájában tárolt programokat. A programot usb-n keresztül letöltheti innen Arduino segítségével IDE. USB portáramellátást is biztosít az arduino számára.

Külön tápcsatlakozó van. Az alaplapon két 5V és 3.3V jelzésű tű található, amelyek a tápellátáshoz szükségesek különféle eszközök. Találsz még GND jelzésű tűket is, ezek a földelő érintkezők (a föld 0V). Az Arduino platform 14 digitális tűvel is rendelkezik, 0-tól 13-ig, amelyek külső csomópontokhoz csatlakoznak, és két állapotuk van, magas vagy alacsony (be vagy kikapcsolva). Ezek az érintkezők működhetnek kimenetként vagy bemenetként, pl. vagy továbbíthatnak bizonyos adatokat és vezérelhetnek külső eszközök vagy adatokat fogadhat az eszközökről. A tábla következő tűi A0-A5 felirattal vannak ellátva. Ezek olyan analóg bemenetek, amelyekről adatokat tudnak fogadni különféle érzékelők. Ez különösen akkor kényelmes, ha egy bizonyos tartományt, például hőmérsékletet kell mérnie. Az analóg bemenetek rendelkeznek további funkciók, amely külön is használható.

Hogyan kell használni a fejlesztő táblát.

A kenyérpirító az alkatrészek ideiglenes csatlakoztatásához, a készülék működésének ellenőrzéséhez szükséges, mielőtt mindent összeforraszt.
A következő példák mindegyike kenyérsütőtáblára van szerelve, így gyorsan módosíthatja az áramkört, és újra felhasználhatja az alkatrészeket anélkül, hogy a forrasztással bajlódna.

A kenyérsütőlapon lyuksorok találhatók, amelyekbe alkatrészeket és vezetékeket helyezhet be. Néhány ilyen lyuk elektromosan össze van kötve egymással.

A két felső és alsó sor sorokban van összekötve a teljes tábla mentén. Ezek a sorok az áramkör tápellátására szolgálnak. Lehet 5V vagy 3,3V, de akárhogy is legyen, először csatlakoztasd az 5V-ot és a GND-t a kenyérpanelhez a képen látható módon. Előfordulhat, hogy ezek a sorkapcsolatok a tábla közepén megszakadnak, majd ha kell, a képen látható módon csatlakoztathatja őket.








A fennmaradó lyukak, amelyek a tábla közepén helyezkednek el, öt lyukból álló csoportokba vannak csoportosítva. Az áramköri részek összekapcsolására szolgálnak.


Az első dolog, amit a mikrokontrollerünkhöz csatlakoztatunk, egy LED. Az elektromos bekötési rajz a képen látható.

Miért van szükség ellenállásra az áramkörben? IN ebben az esetben korlátozza a LED-en áthaladó áramot. Minden LED egy bizonyos áramerősségre van tervezve, és ha ez az áram nagyobb, a LED meghibásodik. Az Ohm-törvény segítségével megtudhatja, hogy mekkora értékűnek kell lennie az ellenállásnak. Azok számára, akik nem ismerik vagy elfelejtették, Ohm törvénye szerint lineáris kapcsolat van az áram és a feszültség között. Azaz minél nagyobb feszültséget adunk az ellenállásra, annál több áram fog átfolyni rajta.
V=I*R
Ahol V- feszültség az ellenálláson
én- áram az ellenálláson keresztül
R- ellenállás, amelyet meg kell találni.
Először is meg kell találnunk az ellenálláson lévő feszültséget. A legtöbb használt 3 mm-es vagy 5 mm-es LED rendelkezik üzemi feszültség 3c. Ez azt jelenti, hogy 5-3 = 2V-ot kell eloltanunk az ellenálláson.

Ezután kiszámítjuk az ellenálláson áthaladó áramot.
A legtöbb 3 mm-es és 5 mm-es LED teljes fényerővel világít 20 mA-en. Az ennél nagyobb áram letilthatja őket, míg a kisebb intenzitású áram csökkenti a fényerejüket anélkül, hogy kárt okozna.

Tehát a LED-et az 5V-os áramkörhöz szeretnénk úgy csatlakoztatni, hogy 20mA áramot hordozzon. Mivel az összes alkatrész egy áramkörben található, az ellenállásnak is 20 mA árama lesz.
Megkapjuk
2V = 20 mA * R
2V = 0,02A *R
R = 100 Ohm

100 Ohm a minimális ellenállás, jobb, ha egy kicsit többet használunk, mert a LED-ek jellemzői eltérőek.
IN ebben a példában 220 ohmos ellenállást használnak. Csak mert a szerzőnek sok van belőlük: kacsints: .

Helyezze be a LED-et a kártya közepén lévő lyukakba úgy, hogy a hosszú vezetéke csatlakozzon az egyik ellenállásvezetékhez. Csatlakoztassa az ellenállás második végét 5 V-ra, és csatlakoztassa a LED második vezetékét a GND-hez. A LED-nek világítania kell.

Kérjük, vegye figyelembe, hogy különbség van a LED csatlakoztatásában. Az áram a hosszabb terminálról a rövidebbre folyik. A diagramon elképzelhető, hogy az áram abban az irányban folyik, amerre a háromszög irányul. Próbálja meg a LED-et fejjel lefelé fordítani, és látni fogja, hogy nem fog világítani.

De az, hogy hogyan csatlakoztatja az ellenállást, teljesen mindegy. Megfordíthatja, vagy megpróbálhatja a LED másik érintkezőjére csatlakoztatni, ez nem befolyásolja az áramkör működését. Továbbra is korlátozza az áramot a LED-en keresztül.

Az Arduino Sketch anatómiája.

Az Arduino programokat vázlatnak nevezik. Két fő funkcióból állnak. Funkció beállítástés funkciója hurok
Ezen a funkción belül beállíthatja az összes alapvető beállítást. Mely lábak működnek bemenetként vagy kimenetként, mely könyvtárakat kell csatlakoztatni, inicializálni a változókat. Funkció Beállítás() csak egyszer fut le a vázlat alatt, amikor a program végrehajtása elindul.
ez a fő funkció, amely ezután kerül végrehajtásra setup(). Valójában ez maga a program. Ez a funkció korlátlan ideig működik, amíg ki nem kapcsolja az áramellátást.

Arduino villogó LED



Ebben a példában egy LED-es áramkört fogunk az Arduino egyik digitális érintkezőjére csatlakoztatni, és egy program segítségével ki-be kapcsolni, emellett számos hasznos funkciót is megtanulunk.

Ezt a funkciót használják setup() része a programnak, és a bemenetként használt tűk inicializálására szolgál (BEMENET) vagy kilép (KIMENET). Addig nem tud adatokat olvasni vagy írni a tűről, amíg be nem állítja pinMode. Ennek a függvénynek két argumentuma van: pinNumber a PIN-kód, amelyet használni fog.

Mód-beállítja a tű működését. A bejáratnál (BEMENET) vagy kilép (KIMENET). A LED világításához jelet kell adnunk TÓL Arduino. Ehhez konfiguráljuk a kimeneti érintkezőt.
- ez a funkció az állapot beállítására szolgál (állami) pina (pinNumber). Két fő állapot van (valójában 3), az egyik az MAGAS 5V lesz a tűn, az más Alacsonyés a tű 0v lesz. Ez azt jelenti, hogy a LED világításához be kell állítani a LED-hez csatlakoztatott tűt magas szintű MAGAS.

Késleltetés. A program működésének késleltetésére szolgál egy msec-ben megadott időtartamra.
Az alábbiakban látható a kód, amely a LED-et villogtatja.
//LED Blink int ledPin = 7;//Arduino tű, amelyhez a LED csatlakozik void setup() ( pinMode(ledPin, OUTPUT);// a láb beállítása OUTPUT-ként) void loop() ( digitalWrite(ledPin, HIGH) ;// kapcsolja be a LED késleltetést (1000);//késleltetés 1000 ms (1 mp) digitalWrite(ledPin, LOW);//A LED késleltetés kikapcsolása (1000);//várjon 1 másodpercet

Kis magyarázatok a kódhoz.
A „//” karakterrel kezdődő sorok megjegyzések, és az Arduino figyelmen kívül hagyja őket.
Minden parancs pontosvesszővel végződik, ha elfelejti őket, hibaüzenetet kap.

ledPin egy változó. A változókat a programok az értékek tárolására használják. Ebben a példában a változó ledPin az érték 7-hez van rendelve, ez az Arduino PIN-kódja. Amikor az Arduino program egy változót tartalmazó sorral találkozik ledPin, a korábban megadott értéket fogja használni.
Szóval rekord pinMode(ledPin, OUTPUT) hasonló a felvételhez pinMode(7, OUTPUT).
De az első esetben csak meg kell változtatnia a változót, és minden sorában megváltozik, ahol használják, a második esetben pedig a változó megváltoztatásához manuálisan kell módosítania minden parancsban.

Az első sor a változó típusát jelzi. Az Arduino programozásakor fontos, hogy mindig deklaráljuk a változók típusát. Egyelőre elég, ha ezt tudod INT negatív és pozitív számokat közöl.
Az alábbiakban a vázlat szimulációja látható. Kattintson a Start gombra az áramkör működésének megtekintéséhez.

Amint az várható volt, a LED kialszik, majd egy másodperc múlva újra kigyullad. Próbálja meg módosítani a késleltetést, hogy megtudja, hogyan működik.

Több LED vezérlése.

Ebben a példában megtudhatja, hogyan vezérelhet több LED-et. Ehhez szereljen fel további 3 LED-et az alaplapra, és csatlakoztassa őket ellenállásokhoz és Arduino érintkezőkhöz az alábbiak szerint.

A LED-ek egyenkénti be- és kikapcsolásához egy ehhez hasonló programot kell írni:
//Multi LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() ( //tűk beállítása OUTPUT-ként pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) void loop() ( digitalWrite(led1Pin, HIGH) );//kapcsolja be a LED késleltetést (1000);//késleltetés 1 mp digitalWrite(led1Pin, LOW);//kapcsolja ki a LED késleltetést (1000);//késleltetés 1 mp //csinálja ugyanezt a másik 3 LED-ek digitalWrite(led2Pin , HIGH);//meggyújtják a LED késleltetését(1000);//késleltetés 1 mp digitalWrite(led2Pin, LOW);//kioltják a LED késleltetést (1000);//késleltetés 1 sec digitalWrite(led3Pin, HIGH) );//meggyújtja a LED késleltetést (1000);// késleltetés 1 mp digitalWrite(led3Pin, LOW);//eloltja a LED késleltetést (1000);//késleltetés 1 sec digitalWrite(led4Pin, HIGH);//bekapcsolás a LED késleltetése(1000);// késleltetés 1 mp digitalWrite(led4Pin, LOW);//a LED késleltetés kioltása (1000);//késleltetés 1 mp)

Ez a program remekül fog működni, de nem a legracionálisabb megoldás. A kódot módosítani kell. Annak érdekében, hogy a program újra és újra működjön, egy konstrukciót fogunk használni.
A hurkok akkor hasznosak, ha ugyanazt a műveletet többször meg kell ismételni. A fenti kódban megismételjük a sorokat

DigitalWrite(led4Pin, HIGH); késleltetés(1000); digitalWrite(led4Pin, LOW); késleltetés(1000);
teljes vázlatkód a mellékletben (letöltések száma: 1260)

LED fényerő állítás

Néha módosítania kell a programban lévő LED-ek fényerejét. Ezt a paranccsal lehet megtenni analogWrite() . Ez a parancs olyan gyorsan kapcsolja be és ki a LED-et, hogy a szem nem látja a villogást. Ha a LED fele időben be van kapcsolva, fele pedig kikapcsolva, akkor vizuálisan úgy tűnik, hogy fényerejének felével világít. Ezt hívják impulzusszélesség-modulációnak (angolul PWM vagy PWM). Az alátétet meglehetősen gyakran használják, mivel digitális kód segítségével egy „analóg” komponens vezérlésére használható. Nem minden Arduino tű alkalmas erre a célra. Csak azok a következtetések, amelyek közelében ilyen megjelölés található" ~ ". A 3, 5, 6, 9, 10, 11 tűk mellett látni fogja.
Csatlakoztassa az egyik LED-jét az egyik PWM érintkezőhöz (a szerző számára ez a 9. érintkező). Most futtassa a LED villogó vázlatot, de először módosítsa a parancsot digitalWrite()-on analogWrite(). analogWrite() két argumentuma van: az első a pin szám, a második a PWM érték (0-255), a LED-ek esetében ez lesz a fényerő, az elektromos motoroknál pedig a forgási sebesség. Az alábbiakban egy példakód látható a különböző LED-fényerősségekhez.
//A LED fényerejének módosítása int ledPin = 9;//Ehhez a tűhöz csatlakozik egy LED void setup() ( pinMode(ledPin, OUTPUT);// a láb érintkezőjének inicializálása a kimenetre ) void loop() ( analogWrite( ledPin, 255);// teljes fényerő (255/255 = 1) késleltetés (1000);//szünet 1 mp digitalWrite(ledPin, LOW);//kapcsolja ki a LED késleltetését (1000);//szünet 1 mp analógWrite( ledPin, 191);//fényerő 3/4 (191/255 ~= 0,75) késleltetés (1000);//szünet 1 másodperc digitalWrite(ledPin, LOW);//kapcsolja ki a LED késleltetést (1000);// szünet 1 mp analógWrite(ledPin, 127); //fél fényerő (127/255 ~= 0,5) késleltetés(1000);//szünet 1 mp digitalWrite(ledPin, LOW);//LED késleltetés kikapcsolása(1000);/ /pause 1 sec analogWrite(ledPin, 63); //negyed fényerő (63/255 ~= 0,25) delay(1000);//pause 1 sec digitalWrite(ledPin, LOW);//kikapcsolja a LED késleltetést(1000) ;//szünet 1 másodperc)

Próbálja megváltoztatni a PWM értéket a parancsban analogWrite() hogy ez hogyan befolyásolja a fényerőt.
Ezután megtanulhatja, hogyan állíthatja be a fényerőt zökkenőmentesen teljesről nullára. Természetesen egy kódrészletet 255-ször másolhat
analogWrite(ledPin, fényerő); delay(5);//rövid késleltetés világosság = fényerő + 1;
De értse meg, ez nem lesz praktikus. Ennek legjobb módja a használata FOR hurok amelyet korábban használtak.
A következő példa két hurkot használ, az egyikkel a fényerőt 255-ről 0-ra csökkenti
for (int brightness=0;rightness=0;rightness--)( analogWrite(ledPin,lightness); delay(5); )
késés [5] a fényerő-bekapcsolási sebesség lelassítására szolgál 5*256=1280ms=1,28s)
Az első sor a " fényesség-", hogy a fényerő értéke 1-gyel csökkenjen minden alkalommal, amikor a ciklus ismétlődik fényerő >=0.A tábla cseréje > a táblán >= 0-t vettünk a fényerő tartományba. Ezt a vázlatot az alábbiakban modellezzük. //simán módosítsa a fényerőt int ledPin = 9;//egy LED csatlakozik ehhez a tűhöz void setup() ( pinMode(ledPin, OUTPUT);// a kimeneti láb inicializálása) void loop() ( //simán növelje a fényerő (0-tól 255-ig) ehhez: (int brightness=0;brightness=0;brightness--)( analogWrite(ledPin,brightness); delay(5); ) delay(1000);//várjon 1 másodpercet //a fényerő simán csökkentse (255-től 0-ig) for (int brightness=255;rightness>=0;rightness--)( analogWrite(ledPin,lightness); delay(5); ) delay(1000);//várjon 1 mp-et ) )
Nem nagyon látszik, de az ötlet világos.

RGB LED és Arduino

Az RGB LED valójában három különböző színű LED egy csomagban.

Különböző fényerejű LED-ek beépítésével különböző színeket hozhat létre. Az Arduino esetében, ahol a fényerőszintek száma 256, 256^3=16581375 lehetséges színt kap. A valóságban persze kevesebb lesz belőlük.
Az általunk használt LED a közös katód. Azok. mindhárom LED szerkezetileg katódokkal van összekötve egy terminálhoz. Ezt a tűt csatlakoztatjuk a GND érintkezőhöz. A fennmaradó érintkezőket korlátozó ellenállásokon keresztül a PWM érintkezőkhöz kell csatlakoztatni. A szerző a 9-11 érintkezőket használta így az egyes LED-eket külön lehet majd vezérelni. Az első vázlat bemutatja, hogyan kell az egyes LED-eket külön-külön bekapcsolni.



//RGB LED - teszt //tűs csatlakozások int red = 9; int zöld = 10; int kék = 11; void setup())( pinMode(piros, OUTPUT); pinMode(kék, OUTPUT); pinMode(zöld, OUTPUT); ) void loop())( //a piros LED be-/kikapcsolása digitalWrite(piros, HIGH); delay(500) digitalWrite (piros, LOW) //be/kikapcsolja a zöld LED-et digitalWrite(zöld, LOW); HIGH; digitalWrite(kék, LOW);

A következő példa a parancsokat használja analogWrite()és különböző véletlenszerű fényerő értékeket kapni a LED-ekhez. Látni fogja, hogy a különböző színek véletlenszerűen változnak.
//RGB LED - véletlenszerű színek //tűs csatlakozások int red = 9; int zöld = 10; int kék = 11; void setup())( pinMode(piros, OUTPUT); pinMode(kék, OUTPUT); pinMode(zöld, OUTPUT); ) void loop())( //válasszon egy véletlenszerű színt analógWrite(piros, véletlenszerű(256)); analógWrite(kék, véletlen(256));

Véletlen (256)-Véletlen számot ad vissza a 0 és 255 közötti tartományban.
Mellékelten található egy vázlat, amely bemutatja sima átmenetek színek pirostól zöldig, majd kékig, pirosig, zöldig stb. (letöltések száma: 348)
A példavázlat működik, de sok a duplikált kód. Egyszerűsítheti a kódot, ha megírja saját segédfunkcióját, amely simán vált egyik színről a másikra.
Így fog kinézni: (letöltések száma: 385)
Nézzük darabonként a függvénydefiníciót. A függvényt hívják faderés két érve van. Minden argumentum vesszővel van elválasztva, és típusuk a függvénydefiníció első sorában van deklarálva: void fader (belső szín1, belső szín2). Látja, hogy mindkét argumentum a következőképpen van deklarálva int, és nevet kapnak szín1És szín2 mint feltételváltozók egy függvény meghatározásához. Üres azt jelenti, hogy a függvény nem ad vissza semmilyen értéket, egyszerűen parancsokat hajt végre. Ha olyan függvényt kellene írnod, amely a szorzás eredményét adja vissza, az így nézne ki:
int szorzó(int szám1, int szám2)( int termék = szám1*szám2; visszatérő termék; )
Figyeld meg, hogyan deklaráltuk a típust int helyett visszatérési típusként
üres.
A függvényen belül vannak azok a parancsok, amelyeket az előző vázlatban már használt, csak a PIN-kódok lettek helyettesítve szín1És szín2. A függvényt hívják fader, argumentumait a következőképpen számítjuk ki szín1 = pirosÉs szín2 = zöld. Az archívum egy teljes vázlatot tartalmaz függvények használatával (letöltések száma: 288)

Gomb

A következő vázlat egy gombot használ normál nyitott érintkezőkkel, reteszelés nélkül.


Ez azt jelenti, hogy amíg a gombot nem nyomják meg, nem folyik rajta áram, elengedés után a gomb visszaáll eredeti helyzetébe.
A gombon kívül az áramkör ellenállást is használ. Ilyenkor nem korlátozza az áramerősséget, hanem 0V-ra (GND) „húzza” a gombot. Azok. amíg meg nem nyomják a gombot azon az Arduino tűn, amelyhez csatlakozik, addig fog alacsony szint. Az áramkörben használt ellenállás 10 kOhm.


//meghatározza, hogy mikor van lenyomva a gomb int buttonPin = 7; void setup())( pinMode(buttonPin, INPUT);//inicializálja a lábat a bemenetre Serial.begin(9600);//inicializálja a soros portot )(//ha megnyomja a gombot Serial.println("pressed"); // megjeleníti a "pressed" feliratot ) else ( Serial.println("nem lenyomva");// egyébként "nem lenyomva" ) )
Ebben a vázlatban több új parancs is található.
- Ez a parancs a tesztelt kimenet magas és alacsony értékeit veszi fel. Ezt a kimenetet először be kell állítani a setup()-ban.
; //ahol a gombPin az a PIN-kód, amelyhez a gomb csatlakoztatva van.
A soros port lehetővé teszi, hogy az Arduino üzeneteket küldjön a számítógépnek, miközben a vezérlő maga hajtja végre a programot. Ez hasznos egy program hibakereséséhez, üzenetek küldéséhez más eszközöknek vagy alkalmazásoknak. A soros porton (más néven UART vagy USART) keresztül történő adatátvitel engedélyezéséhez inicializálnia kell a setup()

Serial.begin() egyetlen érve van - ez az Arduino és a számítógép közötti adatátviteli sebesség.
A vázlat egy parancs segítségével üzenetet jelenít meg a képernyőn az Arduino IDE-ben (Eszközök >> Soros monitor).
- a kialakítás lehetővé teszi a programvégrehajtás előrehaladásának ellenőrzését több ellenőrzés egy helyen történő kombinálásával.
Ha a digitalRead HIGH értéket ad vissza, akkor a "megnyomva" szó jelenik meg a monitoron. Ellenkező esetben (egyébként) a „kiadva” szó jelenik meg a monitoron. Most megpróbálhatja be- és kikapcsolni a LED-et egy gomb megnyomásával.
//gombnyomás érzékelés LED kimenettel int buttonPin = 7; int ledPin = 8; void setup())( pinMode(buttonPin, INPUT);//ez alkalommal a gombtűt INPUT-ként állítjuk be pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin) )= =MAGAS)( digitalWrite(ledPin,HIGH); Serial.println("lenyomva"); ) else ( digitalWrite(ledPin,LOW); Serial.println("nem nyomott"); ) )

Analóg bemenet.

analogRead lehetővé teszi az adatok olvasását az Arduino egyik analóg érintkezőjéről, és egy értéket jelenít meg a 0 (0 V) és 1023 (5 V) tartományban. Ha az analóg bemenet feszültsége 2,5 V, akkor 2,5 / 5 * 1023 = 512 kerül kinyomtatásra
analogRead csak egy argumentuma van - Ez az analóg bemenet száma (A0-A5). A következő vázlat a potenciométer feszültségének leolvasásának kódját mutatja. Ehhez csatlakoztasson egy változtatható ellenállást, a külső kivezetéseket az 5V és a GND érintkezőkhöz, a középsőt pedig az A0 bemenethez.

Futtassa a következő kódot, és nézze meg a soros monitoron, hogyan változnak az értékek az ellenállás gombjának forgásától függően.
//analóg bemenet int potPin = A0;//a potenciométer központi tűje ehhez a lábhoz csatlakozik void setup())( //az analóg pin alapértelmezés szerint bemenetként szerepel, így nincs szükség inicializálásra Serial.begin(9600 ); ) void loop())( int potVal = analogRead(potPin);//potVal egy szám 0 és 1023 között Serial.println(potVal)
A következő vázlat egyesíti a gombkattintás vázlatát és a LED fényerőszabályzó vázlatát. A gombról a LED kigyullad, a fényerőt pedig potenciométer szabályozza.
//gombnyomás-érzékelés LED-kimenettel és változó intenzitású 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)(//ha a gomb megnyomva int analógVal = analógRead(potPin int scaledVal = map(analogVal, 0, 1023, 0, 255) analógWrite(ledPin, scaledVal) ( digitalWrite(ledPin, LOW);//kikapcsolás, ha nincs megnyomva a gomb Serial.println("lenyomva"); ) )

Új házi készítésű termékek kiszállítása a postára

Kaphat válogatott új házi készítésű termékeket e-mailben. Nincs spam, csak hasznos ötletek!

" bemutatja az "Arduino kezdőknek" tanfolyamot. A sorozat 10 leckéből, valamint kiegészítő anyagokból áll. A leckék szöveges utasításokat, fényképeket és oktatóvideókat tartalmaznak. Minden leckében talál egy listát szükséges alkatrészeket, programlista és csatlakozási rajz. Miután elvégezte ezt a 10 alapvető leckét, továbbléphet az Arduino-alapú robotok érdekesebb modelljére és építésére. A kurzus kezdőknek szól, nincs szükség tudásra az induláshoz. további információk az elektrotechnikából vagy a robotikából.

Rövid információ az Arduino-ról

Mi az az Arduino?

Arduino (Arduino) - hardver számítástechnikai platform, melynek fő összetevői az I/O kártya és a fejlesztői környezet. Az Arduino használható önálló interaktív objektumok létrehozására és csatlakozásra szoftver számítógépen végrehajtva. Az Arduino egy egylapos számítógép.

Hogyan kapcsolódnak egymáshoz az Arduino és a robotok?

A válasz nagyon egyszerű - az Arduino-t gyakran használják robot agy.

Az Arduino táblák előnye a hasonló platformokkal szemben, hogy viszonylag alacsony árat, és szinte széles körben elterjedt a robotika és elektrotechnika amatőrei és profi körében. Miután bekerült az Arduinóba, bármilyen nyelven támogatást és hasonló gondolkodású embereket találhat, akik válaszolnak kérdéseire, és megvitatják velük a fejlesztéseket.

1. lecke. Villogó LED Arduino-n

Az első leckében megtanulja, hogyan kell LED-et csatlakoztatni egy Arduino-hoz, és hogyan kell villogni. Ez a legegyszerűbb és legalapvetőbb modell.

LED- olyan félvezető eszköz, amely áthaladva optikai sugárzást hoz létre elektromos áram előre irányba.

2. lecke. Gomb csatlakoztatása Arduino-n

Ebből az oktatóanyagból megtudhatja, hogyan csatlakoztathat egy gombot és egy LED-et Arduino-hoz.

A gomb megnyomásakor a LED világít, ha megnyomja a gombot, nem világít. Ez egyben az alapmodell is.

3. lecke. Potenciométer csatlakoztatása Arduino-n

Ebből az oktatóanyagból megtudhatja, hogyan csatlakoztathat potenciométert az Arduino-hoz.

Potenciométer- Ezt állítható ellenállású ellenállás.Szabályozóként potenciométereket használnak különféle paraméterek– hangerő, teljesítmény, feszültség stb.Ez is az egyik alapséma. A mi modellünkben a potenciométer gombjának elforgatásátólA LED fényereje attól függ.

4. lecke. Szervovezérlés az Arduino-n

Ebből az oktatóanyagból megtudhatja, hogyan csatlakoztathat szervót egy Arduino-hoz.

Szervoegy olyan motor, amelynek tengelyhelyzete a forgásszög beállításával szabályozható.

A szervókat a robotok különféle mechanikus mozgásainak szimulálására használják.

5. lecke. Háromszínű LED Arduino-n

Ebből az oktatóanyagból megtudhatja, hogyan csatlakoztathat háromszínű LED-et Arduino-hoz.

Háromszínű LED(rgb led) - ez három különböző színű LED egy házban. Ezek vagy kis nyomtatott áramköri lappal vannak ellátva, amelyen ellenállások vannak, vagy beépített ellenállások nélkül. A lecke mindkét lehetőséget lefedi.

6. lecke. Piezo elem az Arduino-n

Ebben a leckében megtudhatja, hogyan kell egy piezo elemet Arduinohoz csatlakoztatni.

Piezo elem- egy elektromechanikus átalakító, amely lefordítja elektromos feszültség membrán vibrációba. Ezek a rezgések hangot hoznak létre.

Modellünkben a hangfrekvencia a programban a megfelelő paraméterek beállításával állítható.

7. lecke. Fotoellenállás az Arduino-n

Tanfolyamunk ezen leckében megtudhatja, hogyan csatlakoztathat fotoellenállást Arduino-hoz.

Fotoellenállás- olyan ellenállás, amelynek ellenállása a ráeső fény fényerősségétől függ.

A mi modellünkben a LED csak akkor világít, ha a fényerősség a fotoellenállás felett kisebb, mint egy bizonyos, ez a fényerő a programban állítható.

8. lecke. Mozgásérzékelő (PIR) az Arduino-n. E-mail automatikus küldése

Tanfolyamunk ezen leckében megtudhatja, hogyan lehet mozgásérzékelőt (PIR) csatlakoztatni az Arduino-hoz, valamint megszervezheti az automatikus e-mail küldést.

Mozgásérzékelő (PIR)- Infravörös érzékelő az emberek vagy állatok mozgásának vagy jelenlétének érzékelésére.

A mi modellünkben, amikor egy PIR érzékelőtől emberi mozgásra vonatkozó jelet kap, az Arduino parancsot küld a számítógépnek, hogy küldjön egy e-mailt, és a levél automatikusan elküldésre kerül.

9. lecke. DHT11 vagy DHT22 hőmérséklet- és páratartalom-érzékelő csatlakoztatása

Ebben a leckénkben megtudhatja, hogyan csatlakoztathat DHT11 vagy DHT22 hőmérséklet- és páratartalom-érzékelőt Arduino-hoz, és megismerheti a jellemzőik különbségeit is.

Hőmérséklet és páratartalom érzékelő egy kompozit digitális érzékelő, amely egy kapacitív páratartalom érzékelőből és egy termisztorból áll a hőmérséklet mérésére.

Modellünkben az Arduino beolvassa az érzékelő leolvasásait, és megjeleníti a leolvasásokat a számítógép képernyőjén.

10. lecke. Mátrix billentyűzet csatlakoztatása

Tanfolyamunk ezen leckében megtanulod, hogyan lehet mátrix billentyűzetet csatlakoztatni egy Arduino kártyához, és megismerkedhetsz különféle érdekes áramkörökkel.

Mátrix billentyűzet nagyszámú gomb csatlakoztatásának egyszerűsítésére találták ki. Az ilyen eszközök mindenhol megtalálhatók - számítógép-billentyűzetekben, számológépekben és így tovább.

11. lecke. A DS3231 valós idejű óra modul csatlakoztatása

Tanfolyamunk utolsó leckében megtanulod, hogyan lehet a családból valós idejű óramodult csatlakoztatni
DS-t az Arduino táblára, és ismerkedjen meg különféle érdekes áramkörökkel.

Valós idejű óra modul- Ezt elektronikus áramkör A kronometrikus adatok (aktuális idő, dátum, hét napja stb.) rögzítésére szolgáló rendszer egy autonóm áramforrásból és egy rögzítőeszközből álló rendszer.

Alkalmazás. Kész keretek és Arduino robotok


Az Arduino tanulását nemcsak magáról a tábláról kezdheti el, hanem egy kész, teljes értékű robot vásárlásával is, amely ezen a táblán alapul - pók robot, robotautó, teknős robot stb. Ilyenút alkalmas azoknak, akik elektromos diagramok nem különösebben vonzó.

Működő robotmodell vásárlásával, pl. Valójában egy kész high-tech játék felkeltheti az érdeklődést a független tervezés és a robotika iránt. Az Arduino platform nyitottsága ugyanezt teszi lehetővé alkatrészek készíts magadnak új játékokat.

Egy másik lehetőség egy robot váz vagy karosszéria vásárlása: egy kerekes platform vagy egy pálya, egy humanoid, egy pók stb. Ebben az esetben Önnek kell elvégeznie a robot feltöltését.

Alkalmazás. Mobil telefonkönyv


– asszisztens az Arduino platform algoritmusainak fejlesztői számára, melynek célja, hogy a végfelhasználónak lehetőséget adjon mobil tárcsázás parancsok (referenciakönyv).

Az alkalmazás 3 fő részből áll:

  • Üzemeltetők;
  • Adat;
  • Funkciók.

Hol lehet megvásárolni az Arduino-t


Arduino készletek

A tanfolyamot további leckékkel frissítjük. Kövess minket

Ez minden bizonnyal nagyszerű kiindulási megoldás, de meddig mehet el az Arduino? Hát elég messzire, de egy bizonyos határig, mert (mint az életben általában) mindig választani kell az egyszerűség és a teljesítmény között. Valószínűleg ezért láttuk a nagy teljesítményű Arduino klónok megjelenését, például a cég mikrokontroller-családján vagy a Netduino-n. ARM mikrokontrollerek. Ez az alternatíva sok esetben megmentheti a fejlesztőt teljesítménynövekedéssel, de végül mégis távozik rejtett funkciókat a mikrokontroller erőforrásokat és felhasználókat használó könyvtárak pedig kénytelenek lesznek megtanulni a mikrokontroller hardverét.

A szerző személyesen döntött úgy, hogy több hónapos tanulmányozás után teljesen elhagyja az Arduino-t. Valójában a szerző szerint maga az Arduino platform késztette erre a lépésre. Az alábbiakban felsoroljuk az okokat, de először nézzük meg az Arduino előnyeit.

Az Arduino előnyei (ami nagyszerű):

  • Az Arduino IDE az AVRGCC C fordítón alapul. Az Arduino tanulása végső soron segít a C++ tanulásában. Ha nem szereted az egyes magas szintű Arduino parancsokat vagy könyvtárakat, lecserélheted őket C++ megfelelőkre (mint kiderült, nem mindig);
  • A tápellátás, a programozás és az Arduino platformmal való kommunikáció egyetlen USB-kábellel (vagy egyes klónokhoz speciális chipen található adapterrel) történik;
  • A beépített könyvtárakkal néhány egyszerű (és lassú) projektet percek alatt megvalósíthat anélkül, hogy gondolkodnia kellene ezen könyvtárak megvalósításáról és működéséről. Lassú a gombok olvasása, az adatok LCD-kijelzőn való megjelenítése vagy soros interfészen keresztüli elküldése, valamint az elektromos motorokkal való munkavégzés;
  • A soros és SPI kommunikáció kiváló és szabványos.

Az Arduino hátrányai (mi a szörnyű):

  • Az Arduino IDE a legrosszabb és leginkább használhatatlan kódszerkesztő a Notepad óta. Egy nap átvált egy tisztességes külső szerkesztőre, de továbbra is nyitva kell hagynia az Arduino IDE-t az eszköz programozásához;
  • Arduino rendszerbetöltő. Bármely Arduino eszköz befejezéséhez manuálisan kell programoznia a rendszerbetöltőt minden csupasz ATmega mikrokontrollerbe. Ez 2 KB-kal csökkenti a rendelkezésre álló program Flash memóriáját;
  • Csak néhány lehetőség: ha hivatalos Arduino kártyákat használsz, akkor csak 30 KB vagy 254 KB beépített programmemóriával rendelkező opciók közül választhatsz majd. Mi történik, ha a kódja mondjuk 42 KB-ot foglal el? Az egyetlen választás egy Sanguino klón használata, amely nem teljesen kompatibilis az Arduino-val;
  • Nem egyszerű módon változtasd meg az órajelet, nem? A 3,3 V-os tápegységgel és 8 MHz-es órajellel ellátott mikrokontroller modell biztonságosan üzemelhet 12 MHz-es frekvencián;
  • A digitalWrite() függvény 56 ciklusban fut le (bár a szerző 400 ciklus eredményét kapta). Legalább ezt könnyű kitalálni, és áttérni a közvetlen port-hozzáférés használatára (a második módosítandó elem az Arduino IDE után). Általában az Arduino nem túl kényelmes a hatékony kódíráshoz;
  • Nem lehet (legalábbis nem könnyen) letiltani az alapértelmezett soros kommunikációs könyvtárat a TX és RX megszakítások használatára, függetlenül attól, hogy futott-e vagy sem;
  • Az időzítő túlcsordulás megszakítása szolgáltatási rutin 16 000 ciklusonként fut le háttér. Ez azért történik, hogy a millis() és micros() függvények akkor is működjenek, ha nincsenek használatban;
  • Üres Arduino projekt a platformhoz Arduino UNO 466 bájtot és 666 bájtot vesz igénybe az Arduino Mega2560 esetében. Az erőforrások többletköltése sok embernek nem tetszik, így a cikk szerzőjének sem. Az is bosszantó, hogy a fent leírt változtatásokhoz kapcsolódó projekt-összeállítási hibák jelentkeznek;
  • Végül, de nem utolsósorban az Arduino fejlesztői környezet kétségtelenül „rejti” a mikrokontroller architektúra fontos aspektusait: a regisztereket, megszakításokat és időzítőket. A tudásuk egyszerűen szükséges.

Az AVRGCC használatának nehézségei:

  • Néhány dolgot át kell írni C++-ban, amelyek közül a legfontosabb a soros kommunikáció (vitathatatlanul a legjobb rész az Arduino-ban). Szerencsére sokan vannak gyakorlati tanácsokatés oktatóanyagok ehhez a feladathoz. Más protokollokat sokkal könnyebb írni, mint például az SPI;
  • Meg kell vizsgálnia, hogy mely könyvtárak tartalmaznak nem fordítási parancsokat, és fel kell vennie ezeket a könyvtárakat a forráskódfájlba. A leggyakoribbak a következők: avr/io.h, avr/interrupt.h, util/delay.h, stdio.h és string.h;
  • A bájt- és logikai változók típusának uint8_t és boolnak kell lennie, az olyan bájtszámoknak, mint például a B00010001, 0b00010001 formátumúnak kell lenniük, és így tovább. Az összes többi változást megtalálod, nagyon kevés van belőlük;
  • Több tudásra van szüksége, és ami a legfontosabb, hogy ne adja fel.

Az AVRGCC használatának előnyei:

  • Más processzorra van szüksége a programmemória vagy a teljesítmény növeléséhez? Használhatod (például ugyanabból a megaAVR sorozatból), és csak újra kell fordítanod a projektet. Meg kell változtatnia néhány regisztert és megszakítási nevet, a makefile és a Fuse biteket;
  • Kell még egy órajel frekvenciája? Használjon másik kristályt, vagy használhatja a mikrokontroller beépített oszcillátorát, egyszerűen a Fuse bitek és a makefile megváltoztatásával;
  • Használhat megfelelő (Notepad++) vagy erőteljes (Atmel Studio 6) integrált kódfejlesztő környezetet;
  • Teljes irányítást kap a kódja felett. Amit írtál, az megvalósul. Semmi nincs elrejtve, semmi sem történik beleegyezésed nélkül. Hatékonyabban írsz és gyors kód. Többet fog tanulni.

Az Arduinohoz hasonlóan az AVRGCC is számos eszközzel, kész projekttel, könyvtárral és oktatási anyaggal rendelkezik. A választás a felhasználókon múlik.

Braincourse fiatal programozó harcos Arduino vagy hol kezdjem el az ismerkedést ezzel a platformmal.

„Hol kezdjem, felség? - kérdezte. „Kezdd elölről” – válaszolta a király fontosan...” (C) Lewis Carroll Alice Csodaországban

1. lépés: Kezdjük a legelejétől, vagy hogyan lenne jó, ha az Arduino ingyenes lenne

Rengeteg tankönyvet elolvasva Arduino, miután egy csomó hasznos alkalmazást találtunk ki ehhez a mindennapi életben, az akváriumi haletetés automatizálásától a személyes gyepre szánt robotvetőig, megértjük, hogy anélkül Arduino nem bírjuk!

Miután megvásároltunk egy vezérlőt, megértjük, hogy egy táblánk van, de sok ötletünk van. Mit tegyek? Eszes elvezet minket a helyes döntéshez.

Az Arduino klónozása szükséges saját kezével!

2. lépés: Gyűjtsön össze mindent, amire szüksége van

A folyamat felgyorsítása érdekében használjuk fejlesztő tábla. Amint az ismeretes műszaki paraméterek vezérlő ATmega 328 IC, minimális konfigurációban való futtatásához szükségünk van:

− vezérlő Arduino Duemilanove(programozóként lesz használva);
− mikroáramkör ATmega 328 IC ;
− 16 MHz-es kvarc rezonátor;
− ellenállások 100 Ohm 3 db.;
− kondenzátorok 22pF 2 db.;
− LED-ek 3 db piros, zöld, .és sárga izzás;
− 5 voltos feszültségstabilizátor, például 7805;
− bármely 9 akkumulátor csatlakozóval;
− USB kábel;
− számítógéppel vagy laptoppal telepített csomag programokat Arduino IDE;
− kenyértábla és vezetékek.

3. lépés: Indítsa el az elrendezést



A vezérlő chipet ráhelyezzük a kenyérlapra.

4. lépés: Szerelje be a feszültségstabilizátort és a tápáramköröket

A táblára szereljük az L7805 feszültségstabilizátort. A mikroáramkör érintkezőinek célja 1 bemenet (7-20 Volt), 2 tokos, 3 kimenet (5 Volt). Rögzítő vezetékek segítségével csatlakoztatjuk a stabilizátort az áramforráshoz és a vezérlőhöz, a fényképeken látható módon.

5. lépés: Csatlakoztassa a tápfeszültséget a vezérlőhöz

A vezérlő érintkezőinek számozásának megfelelően rögzítő vezetékekkel csatlakoztatjuk a feszültségstabilizátor kimenetére és a közös vezetékre.

Tipp: A telepítő vezetékek különböző szigetelési színűek, próbáljon minden áramkörhöz azonos színű vezetéket használni.

6. lépés: Csatlakoztassa a kvarc rezonátort



A táblára helyezzük az oszcillációs áramkör rezonátorát és kondenzátorait.

A telepítési eljárás a következő:

− egy 22pF-os kondenzátort helyezünk a földelés és a vezérlő 9. lába közé;
− egy 22pF-os kondenzátort helyezünk a földelés és a vezérlő 10. lába közé;
− bekapcsoljuk a rezonátort a vezérlő 9. és 10. lába között;
− 10 kOm ellenállást kötünk a vezérlő 1 lába és a +5V közé (kikerüljük a „Reset” jelet).

7. lépés: Adjon hozzá vezérlő állapotjelzőket

A LED-eket sorba kötjük 100 Ohmos ellenállással, a föld és a programozónk közé.

7. lépés: Csatlakoztassa a kenyérsütőtáblát a programozókártyához


Az összeszerelt kenyértábla csatlakoztatása a táblához Arduino Duemilanove alábbiak szerint:

− csatlakoztassa a sárga LED kimenetét 9 kimenet a programozó csatlakozóján, annak pulzálása megmutatja, hogy a programozó működik;
− csatlakoztassa a piros LED kimenetet 8 kimenet a programozó csatlakozón, jelez lehetséges hibákat;
− csatlakoztassa a zöld LED kimenetét 7 csap a programozó csatlakozón; fénye jelzi az adatcserét a programozó és a mikrokontroller között.

A megmaradt vezetékekkel az ábrán látható módon összekötjük tábláinkat, nem felejtve el a tápvezetékeket + 5 VÉs keret közöttük.

8. lépés: Az Arduino Duemilanove tábla átalakítása programozóvá

A mikrokontrollerbe való betöltéshez ATmega 328IC a rendszerbetöltőt a miénkké kell alakítani Arduino Duemilanove a programozóba. A szerelvényünket a számítógéphez csatlakoztatjuk USB kábel. Nyissa meg az AndurinoIDE programozási környezetet, válassza ki benne a vázlatot (programot). AndurinoISPés töltse fel az Arduino Duemilanove-ba. A sárga LED villogásával megbizonyosodunk arról, hogy a vázlatot betöltöttük a programozónkba.

9. lépés: Töltse be a rendszerbetöltőt

AndurinoISP-ben (menüpont « Tols") válassza ki a szükséges vezérlő típust ( ATmega 328 IC). Kiadjuk a parancsot a rendszerbetöltő betöltésére "Burn bootloader". Figyeljük az AndurinoIDE üzeneteket, miután a rendszerbetöltő befejeződött " Kész a rendszerbetöltő égetése" mikrokontrollerünk készen áll arra, hogy rögzítse az új projektünk vázlatát házi készítésű termékek.

10. lépés: Lehetséges problémák és megoldások






A rendszerbetöltő rögzítésekor fellépő lehetséges hibák és azok kiküszöbölése a fenti hibakereső képernyőképeken láthatók.

Ez a cikk nem állítja, hogy a programozás teljes leírása. "a nulláról" mikrokontroller, de megmutatja, hogy minimális elemkészlet felhasználásával hogyan kezdheti el a „saját” elkészítését Andurino.

Ma az SD és a micro SD kártyák használatáról fogunk beszélni az Arduino-ban. Megtaláljuk, hogyan lehet SD-kártyákat csatlakoztatni az Arduino-hoz, hogyan írhatunk és olvashatunk információkat. Az extra memória használata sok projektben nagyon hasznos lehet. Ha nem tudja, mik az SPI, I2C és analóg érintkezők, akkor azt tanácsolom, hogy nézze meg a korábbi leckéket, és értse meg ezeket az Arduino kommunikációs felületeket.

Ebben a leckében arról fogunk beszélni vezeték nélküli kommunikáció kettő között Arduino táblák. Ez nagyon hasznos lehet parancsok átadásához egyik Arduinóról a másikra, vagy információcserére a barkácsgépek között. Lehetőség vezeték nélküli átvitel adatok új lehetőségeket nyitnak a projektek létrehozásában.

Ebben az oktatóanyagban az I2C buszról fogunk tanulni. Az I2C egy kommunikációs busz, amely csak két vonalat használ. Ezzel a felülettel az Arduino két vezetéken keresztül sok eszközzel tud kommunikálni. Ma kitaláljuk, hogyan lehet érzékelőket és érzékelőket csatlakoztatni az Arduinohoz az I2C buszon keresztül, hogyan lehet elérni konkrét eszközés hogyan lehet adatokat fogadni ezekről az eszközökről.

Ebben az oktatóanyagban az Arduino Serial kommunikációs felületről fogunk beszélni. Korábbi leckéken már használtuk ezt a felületet, amikor az érzékelőkből származó értékeket jelenítettük meg a számítógép képernyőjén. Ma közelebbről megvizsgáljuk ennek a kapcsolatnak a működését, és azt is megtanuljuk, hogyan lehet a Processing segítségével felhasználni a számítógép port monitorjára átvitt adatokat.

Ma a tranzisztorokról és a terhelések Arduinohoz való csatlakoztatásáról fogunk beszélni. Az Arduino maga nem tud 5 voltnál nagyobb feszültséget és 40 mA-nél nagyobb áramot előállítani egy érintkezőből. Érzékelőknek, LED-eknek ez elég, de ha áramigényesebb eszközöket akarunk csatlakoztatni, akkor tranzisztorokat vagy reléket kell használnunk.

Ebben a leckében az áramkör tervezésének alapjairól fogunk beszélni az Arduino esetében. És kezdjük természetesen Ohm törvényével, hiszen ez minden áramkör alapja. Ebben a leckében az ellenállásról, a felhúzó- és felhúzó ellenállásokról, valamint az áram és feszültség kiszámításáról is beszélünk.



Kapcsolódó kiadványok