Az Arduino RGB LED zökkenőmentes bekapcsolása gombról. LED fényerő szabályozás potenciométerrel. Az Arduino program leírása

Ebben a kísérletben az egyik gombbal hozzáadjuk a LED fényerejének egy részét, a másikkal csökkentjük.

A KÍSÉRLET ALKATRÉSZEK LISTÁJA

- 1 Arduino Uno tábla;

- 1 forrasztás nélküli kenyértábla;

- 2 óra gomb;

- 1 ellenállás 220 Ohm névleges értékkel;

- 1 LED;

- 7 apa-apa vezeték.

KÖRDIAGRAMM

DIAGRAM A PENZTÁBLÁN

JEGYZET

  • Ha átdolgozza az előző kísérlet áramkörét, vegye figyelembe, hogy ezúttal a LED-et egy olyan porthoz kell csatlakoztatnunk, amely támogatja a PWM-et.

VÁZLAT

vázlat letöltése az Arduino IDE-hez
#define PLUS_BUTTON_PIN 2 #define MINUS_BUTTON_PIN 3 #define LED_PIN 9 int fényerő = 100; logikai érték plusUp = igaz; logikai mínuszUp = igaz; void setup() ( pinMode(LED_PIN, OUTPUT); pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP); pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP); ) void loop() (analogWrite(LED_PIN, fényerő); // a kattintásokra a plusUp függvény segítségével válaszolunk = handleClick(PLUS_BUTTON_PIN, plusUp, +35); minusUp = handleClick(MINUS_BUTTON_PIN, minusUp, -35); ) // Saját függvény 3 paraméterrel: a PIN-kód a // gombbal (buttonPin), az ellenőrzés előtti állapot (wasUp) ) és a fényerő fokozatossága //, amikor a gombra kattint (delta). A függvény // (angolul return) visszaadja a gomb új, aktuális állapotát logikai handClick(int buttonPin, logikai wasUp, int delta) ( boolean isUp = digitalRead(buttonPin); if (wasUp && !isUp) ( delay(10) ); isUp = digitalRead(buttonPin); // kattanás esetén módosítsa a fényerőt 0-ról 255-re if (!isUp) brightness = constrain(brightness + delta, 0, 255); ) return isUp; // adja vissza a vissza a hívó kódra )

MAGYARÁZAT A KÓDSZHOZ

  • Nem csak beépített funkciókat használhatunk, hanem saját magunkat is létrehozhatunk. Ez akkor indokolt, ha ugyanazokat a műveleteket kell megismételnünk a kód különböző helyein, vagy például ugyanazokat a műveleteket kell végrehajtanunk különböző adatokon, mint ebben az esetben: feldolgozni a 2-es és 3-as digitális portról érkező jelet.
  • A kódban bárhol meghatározhatja saját függvényeit a többi függvény kódján kívül. Példánkban az után definiáltunk egy függvényt hurok .
  • Saját funkciónk meghatározásához szükségünk van:
    • Adja meg, hogy milyen adattípust ad vissza. A mi esetünkben az logikai érték. Ha a függvény csak néhány műveletet hajt végre, és nem ad vissza értéket, használja a kulcsszót üres
    • Rendeljen a függvényhez egy nevet - azonosítót. Itt ugyanazok a szabályok érvényesek, mint a változók és konstansok elnevezésére. A függvények elnevezése ugyanabban a stílusban történik mint a Változók .
    • Zárójelben sorolja fel a függvénynek átadott paramétereket, jelezve mindegyik típusát. Ez az újonnan létrehozott függvényen belül és csak azon belül látható változók deklarációja. Például, ha ebben a kísérletben megpróbálunk hozzáférni wasUp vagy isUp tól től hurok() Hibaüzenetet fogunk kapni a fordítótól. Hasonlóképpen, a változók deklarált hurok, nem láthatók más függvények számára, de értékeik paraméterként átadhatók.
    • Egy pár kapcsos zárójel közé írja be a függvény által végrehajtott kódot
    • Ha a függvénynek valamilyen értéket kell visszaadnia, használja a kulcsszót Visszatérés adja meg, hogy milyen értéket adjon vissza. Ennek az értéknek az általunk deklarált típusúnak kell lennie
  • Az úgynevezett globális változók, i.e. A bármely függvényből elérhető változókat általában a program elején deklaráljuk. A mi esetünkben ez Fényerősség .
  • Az általunk létrehozott függvényen belül fogantyúKattintson Ugyanaz történik, mint a kísérletben.
  • Mivel a fényerő 35-ös növelésével, legfeljebb nyolc egymás utáni kattintás után az egyik gombon a kifejezés értéke fényerő + delta az intervallumon kívülre kerül . A funkció használata korlátozza korlátozzuk a változó megengedett értékeit Fényerősség meghatározott intervallumhatárokat.
  • Kifejezésben plusUp = handleClick(PLUS_BUTTON_ PIN kódot , plusz fel, +35) elérjük a változót pluszfel kétszer. Mert a = a jobb oldali operandus értékét a bal oldali operandusba helyezi, először kiszámolja, hogy mi adható vissza fogantyúKattintson. Tehát amikor adunk neki pluszfel paraméterként még mindig az utolsó híváskor számított régi értéket tartalmazza fogantyúKattintson .
  • Belül fogantyúKattintson kiszámoljuk az új LED fényerő értékét és beírjuk egy globális változóba Fényerősség, amely minden iterációnál hurok csak átment analogWrite .

KÉRDÉSEK MAGAD TESZTELÉRE

  1. Mit jelent a kulcsszó? üres ?
  2. Hogyan viselkedik egy program, ha egy változót a hozzárendelési operátor különböző oldalairól említenek = ?

FELADATOK AZ ÖNÁLLÓ MEGOLDÁSHOZ

  1. Módosítsa a kódot úgy, hogy a fényerő változtatási lépése egy helyen legyen beállítva.
  2. Hozzon létre egy másik függvényt, és dolgozza át a kódot úgy, hogy az egyik funkció a billentyűleütések követéséért, a másik pedig a LED fényerejének kiszámításáért és visszaállításáért feleljen. analogWrite .

Most nézzük a többszínű LED-et, amelyet gyakran rövidítéssel hívnak: RGB LED. Az RGB egy rövidítés, amely a következőket jelenti: Piros - piros, Zöld - zöld, Kék - kék. Azaz három külön LED van elhelyezve ebben a készülékben. Típustól függően az RGB LED-eknek közös katódja vagy közös anódja lehet.

1. Színek keverése

Miért jobb egy RGB LED, mint három hagyományos? Ez arról szól, hogy látásunk képes-e keverni a különböző, egymáshoz közel elhelyezett forrásokból származó fényt. Ha például kék és piros LED-eket helyezünk egymás mellé, akkor több méter távolságban a fényük összeolvad, és a szem egy lila pontot lát. És ha zöldet is adunk hozzá, akkor a pont fehérnek tűnik számunkra. Pontosan így működnek a számítógép-monitorok, a televíziók és a kültéri képernyők. A TV-mátrix különböző színű egyedi pontokból áll. Ha veszel egy nagyítót, és átnézel a bekapcsolt monitoron, könnyen kivehetők ezek a pontok. De a kültéri képernyőn a pontok nincsenek túl sűrűn elhelyezve, így szabad szemmel is megkülönböztethetők. De több tíz méteres távolságból ezek a pontok megkülönböztethetetlenek. Kiderült, hogy minél közelebb vannak egymáshoz a többszínű pontok, annál kisebb távolságra van szüksége a szemnek ahhoz, hogy ezeket a színeket keverje. Innen a következtetés: a három különálló LED-től eltérően egy RGB LED színkeverése már 30-70 cm-es távolságban is észrevehető, a matt lencsés RGB LED egyébként még jobban teljesít.

2. RGB LED csatlakoztatása Arduinohoz

Mivel a többszínű LED három normál LED-ből áll, ezeket külön fogjuk csatlakoztatni. Minden LED saját érintkezőhöz csatlakozik, és különálló ellenállással rendelkezik. Ebben az oktatóanyagban RGB LED-et használunk közös katóddal, így csak egy vezeték lesz a földeléshez. Sematikus ábrája
Elrendezés megjelenése

3. RGB LED vezérlésére szolgáló program

Komponáljunk egy egyszerű program, amely felváltva világítja meg mind a három színt. const bájt rPin = 3; const bájt gPin = 5; const bájt bPin = 6; void setup() ( pinMode(rPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(bPin, OUTPUT); ) void loop() ( // kapcsolja ki a kéket, kapcsolja be a pirosat digitalWrite(bPin, LOW); digitalWrite( rPin, HIGH); késleltetés (500); // piros kikapcsolása, zöld bekapcsolása digitalWrite(rPin, LOW); digitalWrite (gPin, HIGH); késleltetés (500); // zöld kikapcsolása, kék bekapcsolása digitalWrite(gPin) , LOW); digitalWrite (bPin, HIGH); késleltetés (500); ) Töltse be a programot az Arduino-ra, és figyelje meg az eredményt. Az Ön böngészője nem támogatja a videocímkét. Optimalizáljuk egy kicsit a programot: az rPin, gPin és bPin változók helyett egy tömböt fogunk használni. Ez segítségünkre lesz a következő feladatokban. const byte rgbPins = (3,5,6); void setup() ( for(byte i=0; i<3; i++) pinMode(rgbPins[i], OUTPUT); } void loop() { digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); }

4. A szivárvány hét színe

Most próbáljunk meg egyszerre két színt világítani. Programozzuk a következő színsort:
  • piros
  • piros + zöld = sárga
  • zöld
  • zöld + kék = világoskék
  • kék
  • kék + piros = lila
A narancssárga színt az egyszerűség kedvéért elhagytuk. Tehát kiderült, hogy a szivárvány hat színe 🙂 const byte rgbPins = (3,5,6); const byte szivárvány = ( (1,0,0), // piros (1,1,0), // sárga (0,1,0), // zöld (0,1,1), // kék ( 0,0,1), // kék (1,0,1), // lila ); void setup() ( for(byte i=0; i<3; i++) pinMode(rgbPins[i], OUTPUT); } void loop() { // перебираем все шесть цветов for(int i=0; i<6; i++){ // перебираем три компоненты каждого из шести цветов for(int k=0; k<3; k++){ digitalWrite(rgbPins[k], rainbow[i][k]); } delay(1000); } } В результате работы программы получается: Your browser does not support the video tag.

5. Sima színváltás

Nem véletlenül csatlakoztattuk az RGB LED-et a 3-as, 5-ös és 6-os érintkezőkhöz. Mint ismeretes, ezek a tűk lehetővé teszik különböző munkaciklusú PWM jelek generálását. Vagyis nem csak be- vagy kikapcsolhatjuk a LED-et, hanem szabályozhatjuk rajta a feszültségszintet. Ez a funkció segítségével történik analogWrite. Ügyeljünk arra, hogy LED-ünk ne hirtelen, hanem simán váltson át a szivárvány színei között. const byte rgbPins = (3,5,6); int dim = 1; void setup() ( for(byte i=0; i<3; i++){ pinMode(rgbPins[i], OUTPUT); } // начальное состояние - горит красный цвет analogWrite(rgbPins, 255); analogWrite(rgbPins, 0); analogWrite(rgbPins, 0); } void loop() { // гасим красный, параллельно разжигаем зеленый for(int i=255; i>=0; i--)( analogWrite(rgbPins, i/dim); analógWrite(rgbPins, (255-i)/dim); delay(10); ) // kikapcsolja a zöldet, kapcsolja be párhuzamosan a kéket for(int i=255 ; i> =0; i--)( analogWrite(rgbPins, i/dim); analógWrite(rgbPins, (255-i)/dim); delay(10); ) // a kék kikapcsolása, a piros bekapcsolása párhuzamosan for(int i=255 ; i>=0; i--)( analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); ) ) A dim változó határozza meg a ragyogás fényessége. Dim = 1-nél a maximális fényerő van. Töltsd fel a programot az Arduino-ra. Az Ön böngészője nem támogatja a videocímkét.

Feladatok

  1. Hőmérséklet jelző. Adjunk hozzá egy termisztort az áramkörhöz, és csatlakoztassuk az analóg bemenetre. A LED színét a termisztor hőmérsékletétől függően kell megváltoztatnia. Minél alacsonyabb a hőmérséklet, annál kékebb a szín, és minél magasabb a hőmérséklet, annál több a vörös.
  2. RGB lámpa szabályozóval. Adjunk hozzá három változó ellenállást az áramkörhöz, és csatlakoztassuk őket az analóg bemenetekhez. A programnak folyamatosan le kell olvasnia az ellenállásértékeket, és módosítania kell a megfelelő RGB LED-komponens színét.

Ebben a példában megtudhatja, hogyan lehet megváltoztatni a LED fényerejét különböző ellenállású ellenállásokkal.

Ehhez a példához szüksége lesz

1 db 5 mm átmérőjű LED

1 270 ohmos ellenállás (piros, lila, barna)

1470 ohmos ellenállás (sárga, lila, barna)

1 db 2,2 kOhm ellenállás (piros, piros, piros)

1 10 kOhm ellenállás (barna, fekete, narancssárga)

LED-ek - általános információk

A LED-ek jól szolgálnak különféle típusú jelzésekre szolgáló eszközökben. Kevés áramot fogyasztanak és tartósak.

Ebben a példában a leggyakoribb 5 mm átmérőjű LED-eket használjuk. Szintén gyakoriak a 3 milliméter átmérőjű LED-ek és a 10 mm átmérőjű nagy LED-ek.

Nem ajánlott a LED-et közvetlenül akkumulátorhoz vagy feszültségforráshoz csatlakoztatni. Először is először ki kell találnia, hogy pontosan hol van a LED negatív és pozitív lába. Nos, másodszor, áramkorlátozó ellenállásokat kell használni, különben a LED nagyon gyorsan kiég.

Ha nem használ ellenállást a LED-del, akkor a LED nagyon gyorsan meghibásodik, mert túl sok áram fog átfolyni rajta. Ennek eredményeként a LED felmelegszik, és az érintkezést generáló fény megsemmisül.

Kétféleképpen lehet megkülönböztetni a LED pozitív és negatív lábait.

Az első az, hogy a pozitív láb hosszabb.

A második az, hogy a dióda házába belépve a negatív láb csatlakozóján lapos él található.

Ha olyan LED-del találkozik, amelynek lapos széle van a hosszabb lábon, a hosszabb láb továbbra is pozitív.

Ellenállások - általános információk

Resist - ellenállás (angol)

Ahogy a neve is sugallja, az ellenállások ellenállnak az elektromos áram áramlásának. Minél nagyobb az ellenállás értéke (ohm), annál nagyobb az ellenállás és annál kevesebb áram fog átfolyni azon az áramkörön, amelybe be van szerelve. Az ellenállásoknak ezt a tulajdonságát fogjuk felhasználni a LED-en áthaladó áram és így a fényerő szabályozására.

De először beszéljünk egy kicsit az ellenállásokról.

Az ellenállás mérésének mértékegységei az ohmok, amelyeket sok forrásban a görög Ω - Omega betűvel jelölnek. Mivel az Ohm az ellenállás kis értéke (az áramkörben szinte észrevehetetlen), gyakran használunk olyan mértékegységeket, mint a kOhm - kiloohm. (1000 Ohm) és MOhm megaohm (1 000 000 ohm).

Ebben a példában négy különböző értékű ellenállást fogunk használni: 270 Ω, 470 Ω, 2,2 kΩ és 10 kΩ. Ezeknek az ellenállásoknak a mérete megegyezik. Színes is. Az egyetlen dolog, ami megkülönbözteti őket, az a színes csíkok. Ezekből a csíkokból vizuálisan meghatározzák az ellenállások értékét.

A három színes csíkkal és az utolsó arany csíkkal rendelkező ellenállásoknál a következő megfeleltetések működnek:

Barna 1

Piros 2

Narancs 3

Zöld 5

Lila 7

Az első két csík az első 2 számértéket jelöli, így a piros, a lila 2, 7. A következő csík az első két számjegy után elhelyezendő nullák száma. Vagyis ha a harmadik csík barna, mint a fenti képen, akkor egy nulla lesz, és az ellenállás értéke 270 Ω.

Barna, fekete, narancssárga csíkokkal ellátott ellenállás: 10 és három nulla, tehát 10000 Ω. Vagyis 10 kΩ.

A LED-ekkel ellentétben az ellenállásoknak nincs pozitív és negatív lába. Nem számít, melyik lábbal csatlakoztatja őket a tápellátáshoz/földeléshez.

Csatlakozási diagram

Csatlakoztassa az alábbi ábra szerint:

Az Arduino 5 V-os érintkezővel rendelkezik a perifériák táplálására. Egy LED és egy ellenállás táplálására fogjuk használni. Semmi másra nincs szüksége az alaplapról, csak csatlakoztassa USB-n keresztül a számítógépéhez.

270 Ω-os ellenállás esetén a LED-nek elég erősen kell világítania. Ha a 270 Ω-os ellenállást 470 Ω-os ellenállásra cseréli, a LED nem fog olyan fényesen világítani. 2,2 kΩ-os ellenállás esetén a LED-nek kicsit jobban el kell halványulnia. Hiszen 10 kΩ-os ellenállásnál alig lesz látható a LED. Valószínű, hogy ahhoz, hogy az utolsó lépésben lássuk a különbséget, ki kell húzni a piros adaptert, kapcsolóként használva. Akkor láthatod a különbséget a fényerőben.

Egyébként ezt a kísérletet lekapcsolt világítás mellett is elvégezheti.

Különféle ellenállás-beépítési lehetőségek

Abban a pillanatban, amikor az 5V az ellenállás egyik lábához csatlakozik, az ellenállás második ága a LED pozitív szárához, a LED második ága pedig a földhöz van kötve. Ha az ellenállást úgy mozgatjuk, hogy az a LED mögé kerüljön az alábbiak szerint, akkor a LED továbbra is világít.

LED villog

Az Arduino kimenetre csatlakoztathatjuk a LED-et. Húzza át a piros vezetéket az 5 V-os tápcsatlakozóról a D13-ba az alábbi ábra szerint.

Most töltse le az általunk vizsgált „Pillogás” példát. Felhívjuk figyelmét, hogy mindkét LED - a beépített és a külső, amelyet telepített - villogni kezdett.

Próbáljunk meg egy másik tűt használni az Arduino-n. Mondjuk D7. Helyezze át a csatlakozót a D13 tűről a D7 érintkezőre, és módosítsa a kód következő sorát:

Töltse fel a módosított vázlatot az Arduino-ba. A LED továbbra is villogni fog, de ezúttal a D7-es érintkező tápellátását használja.

Az előző leckéken megismerkedtünk a legegyszerűbb áramkörökkel - összeszerelés ill. Ma egy potenciométeres (változó ellenállású) és LED-es modellt szerelünk össze. Egy ilyen modell használható robot irányítására.

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

Videós útmutató a modell összeszereléséhez:

A modell összeállításához szükségünk van:

  • Arduino tábla (vagy analógjai);
  • Kenyér deszka;
  • 6 vezeték és/vagy apa-apa jumper;
  • Fénykibocsátó dióda;
  • potenciométer (változó ellenállás);
  • 220 ohmos ellenállás;
  • Arduino IDE, amely letölthető az Arduino webhelyéről.

Mi kell a potenciométer és a LED csatlakoztatásához az Arduino-hoz?

Csatlakozási diagram Arduino modellhez potenciométerrel és LED-del:

Csatlakozási rajz Arduino modellhez potenciométerrel és LED-del

A következő program alkalmas ehhez a modellhez (egyszerűen átmásolhatja a programot az Arduino IDE-be):

// adja meg a LED-es lábak nevét
// és potenciométer
#define led 9
#define pot A0
void setup()
{
// láb LED-del - kimenet
pinMode(led, OUTPUT);
// tű potenciométerrel - bemenet
pinMode(pot, INPUT);
}
void loop()
{
// deklarálja az x változót
int x;
// olvassa le a feszültséget a potenciométerről:
// egy 0 és 1023 közötti számot kapunk
// elosztjuk 4-gyel, kapunk egy számot a tartományban
// 0-255 (a tört részt eldobjuk)
x = analógRead(pot) / 4;
// kiírja az eredményt a LED-be
analógWrite(led, x);
}

Így néz ki a LED-es potenciométer összeszerelt Arduino modellje:

Arduino modell potenciométerrel és LED-del összeszerelve

Ezzel befejeződik a harmadik „Arduino kezdőknek” lecke. Folytatjuk!

Leckék bejegyzései:

  1. Első lecke: .
  2. Második lecke: .
  3. Harmadik lecke: .
  4. Negyedik lecke: .
  5. Ötödik lecke: .
  6. Hatodik lecke: .
  7. Hetedik lecke: .
  8. Nyolcadik lecke: .
  9. Kilencedik lecke:

És próbáljunk meg egy új feladatot teljesíteni. Azt hiszem, mindenki látott már újévi kijelzőfüzéreket, amelyekben a LED-ek simán villognak. Tegyük fel, hogy valami ilyesmit szeretnénk csinálni.
Már megnéztük a digitalWrite() függvényt, és tudjuk, hogy az általa írt érték kétféle lehet - magas vagy alacsony. Ebben az esetben az analogWrite() függvény segít nekünk. A függvények "megfogalmazásai" csak a kezdeti előtagokban térnek el, így könnyen megjegyezhetők.

Az analogWrite() függvény, akárcsak a digitalWrite(), két argumentumot tartalmaz zárójelben, és ugyanazon a verbális elven működik: „hol, mit”. A fő különbség az értékek széles tartományának rögzítése a szokásos LOW vagy HIGH helyett. Ez lehetővé teszi a LED fényerejének beállítását. A fő megjegyzés, amelyet szem előtt kell tartani, az, hogy ez a funkció csak bizonyos névjegyeken működik. Ezeket a tűket "~" szimbólum jelöli. Ez a szimbólum azt jelzi, hogy ez egy PWM érintkező. A PWM (impulzusszélesség-moduláció) úgy hangzik, mint a PWM (impulzusszélesség-moduláció) oroszul. A működési elv az impulzus időtartamának megváltoztatásán alapul. Grafikusan ez a következőképpen ábrázolható:

Próbáljuk meg kitalálni, hogyan működik ez egy egyszerű példán keresztül. Ehhez a LED-et a PWM érintkezőhöz kell csatlakoztatni egy 150 ohmos ellenálláson keresztül, és egy egyszerű programot „hardwizalni” az Arduino-ba. A csatlakozási rajz és a vázlatkód az alábbiakban látható:


void setup()
{
pinMode(led,OUTPUT);
}

void loop()
{
for(int i=0; i<=255; i++)
{
analógWrite(led,i);
késleltetés(10);
}
for(int i=255; i>=0; i--)
{
analógWrite(led,i);
késleltetés(10);
}
}


Azt hiszem, a kód általában világos, de egy kicsit oda kell figyelnünk a for() ciklusra. Van olyan, hogy engedély. Mivel 8 bites felbontással dolgozunk (erről egy kicsit később lesz szó), a minimális érték 0, a maximum pedig 255 lesz. Minden iteráció végén 10 ms-ra állítjuk az időkésleltetést.

Térjünk vissza az előző lecke diagramjához, és próbáljunk meg hasonló füzért készíteni az analogWrite() függvény segítségével.


int gombPin = 2;
int csapok = (3,5,6,9,10,11);

logikai lastButton = LOW;
logikai aktuális gomb = LOW;
logikai engedélyezés = false;

void setup()
{
pinMode(buttonPin, INPUT);
for(int mód = 0; mód<= 5; mode++) pinMode(pins, OUTPUT);
}

logikai visszapattanás (boolean utolsó)
{
logikai áram = digitalRead(buttonPin);
if(utolsó != aktuális)
{
késleltetés(5);
aktuális = digitalRead(buttonPin);
}
visszatérő áram;
}

void loop()
{
currentButton = debounce(lastButton);
if(lastButton == LOW && currentButton == HIGH)
{
enable = !enable;
}

If(engedélyezés == igaz)
{
for (int i=0; i<=5; i++)
{
for (int világosság = 0; fényerő<= 255; brightness++)
{
késleltetés(1);
}
késleltetés(40);
}
for (int i=0; i<=5; i++)
{
for (int brightness = 255; világosság >= 0; fényerő--)
{
analógWrite(csapok[i], fényerő);
késleltetés(1);
}
késleltetés(40);
}
}

If(engedélyezés == false)
{
for(int i = 0; i<= 5; i++) digitalWrite(pins[i], LOW);
}

LastButton = currentButton;
}


Vizuálisan a vázlat némileg összetettebbé vált. Valójában itt minden egyszerű, és találjuk ki. Az összes csatlakoztatott LED-et azonosítanunk kell, de a szokásos int led helyett egy tömböt használunk, melynek minden eleme egy PWM pin az Arduino-n. A void setup() függvény törzsében is ravasz módon jártunk el. Az összes érintkező „listázását” a for() ciklusra bíztuk, amelynek minden iterációjával a megfelelő kontaktus konfigurálódik az OUTPUT-on. Térjünk át a void loop() függvényre. A debounce() függvény és a kezdeti if() feltétel változatlan marad. Két változó szintjeit továbbra is ellenőrizzük: az előző érték (kezdetben LOW) és a gomb aktuális állapota. Ha ezek a feltételek teljesülnek, az engedélyezési változó értéke megfordul. Ezt szem előtt tartva hozzáadtunk még két egyszerű if() feltételt. Ha enable = true, akkor a füzér be van kapcsolva, aminek „folyásának” simaságát a for() ciklus szabályozza. Ha engedélyezve = false, akkor minden LED kialszik. A feltételek végén a lastButton változó a gomb aktuális állapotát veszi fel.
Programunk tesztelése közben azt vettük észre, hogy nem minden a várt módon működik. Emlékszel, a legutóbbi leckében olyan módosítást hajtottunk végre, hogy ha nagy az időkésleltetés, akkor a gomb a lejárta után ki fog villanni? Az előző példában, amikor a girland be volt kapcsolva, a void loop() függvény törzsében a teljes késleltetés 85 ms volt. Ez lehetőséget adott arra, hogy egy bizonyos időn belül „odaérjünk”. Ebben a vázlatban ugyanazon feltételek mellett a késleltetés többször is eltér. Talán, ha ki akarja kapcsolni a füzért, a „megszakítás” szó sugallja magát. Ez lesz a megoldás erre a problémára!

Remélem, ez a cikk hasznos volt az Ön számára. A következő oktatóanyagban megvizsgáljuk az Arduino megszakításait, és elérjük a kívánt eredményt.




Top