Arduino LED mirgo vienmērīgi. LED spilgtuma kontrole, izmantojot potenciometru

10.09.2021

Kā rodas programmas

Šis būs nedaudz neparasts raksts, tajā es centīšos ne tikai parādīt gatavu kodu, kas kaut ko dara, bet parādīšu, kā dzimst ierīce un programmaparatūra tai. Mēs aplūkosim programmas loģiku un to, kā šo loģiku veidot.

Šodien atrisināsim šādu problēmu: ir 2 gaismas diodes, tās jāsavieno ar Arduino un jārealizē iespēja regulēt to apgaismojuma spilgtumu.

Sāksim!

Pirmkārt, mums ir jādomā par to, kā izskatīsies mūsu ierīce un kas mums būs nepieciešams, lai to ieviestu. Mums ir nepieciešams kaut kas regulēt gaismas diožu spilgtumu un redzēt, kādā režīmā LED pašlaik darbojas vairogs, par kuru mēs runājām pēdējā rakstā, ir lielisks.

Tagad atliek tikai pieslēgt gaismas diodes, tam lieliski noder tā sauktais Bradboard, tā ir plastmasas lieta (nezinu kā to vēl nosaukt), kurā bez lodēšanas var pieslēgt vadus no Arduino un citiem. elektroniskās sastāvdaļas, kas ir ļoti ērti, ja nezināt, kā tieši tas izskatīsies gatava ierīce vai ķēde ir nepieciešama tikai dažiem startiem. Ķīnieši kniedē milzīgu skaitu savu šķirņu, es personīgi izmantoju šo:

Lai būtu vieglāk saprast, kā tas darbojas iekšpusē, pievienošu iekšējo savienojumu diagrammu:

Gaismas diožu pievienošana pieArduino

Daudzi tagad teiks: kas ir tik grūti savienot LED, tā ir spuldze! Un tie būs nepareizi, LED ir tālu no vienkāršas spuldzes, bet gan pusvadītāju apgaismes ierīce. Kuru darbina nevis spriegums kā parastā spuldze, bet gan strāva, un, ja strāva pārsniedz pieļaujamās vērtības, LED sāks pasliktināties, samazināsies tā spilgtums, kas kļūs pamanāms pēc kāda laika, atkarībā no jaudas. strāva tiek caurdurta vai pat uzreiz izdeg.

Kā izvairīties no LED bojājumiem lielas strāvas dēļ? Viss ir ļoti vienkāršs: jums ir jāizmanto strāvu ierobežojošs rezistors, kas jāaprēķina katrai LED atkarībā no tā īpašībām. LED rezistoru aprēķināšana ir atsevišķa raksta tēma, un šodien mēs šajā tēmā neiedziļināsimies, jo, visticamāk, jūs nezināt kaut kur atrastās gaismas diodes īpašības. Šajā gadījumā es izmantoju nelielu noteikumu: ja gaismas diode nav spilgta, es to baroju caur rezistoru ar pretestību no 220 līdz 400 omi atkarībā no tā, kurš rezistors bija pie rokas. Galvenais, kas jāatceras, ir tas, ka vairāk ir labāk nekā mazāk. Ar lielāku pretestību, nekā prasa LED, tas vienkārši degs blāvāk nekā parasti.

Tagad mums ir jāizlemj, kā pielāgot LED spilgtumu, šim nolūkam varat izmantot mainīgos rezistorus, kas principā novērsīs interaktīvo regulēšanu, un šī iemesla dēļ mēs neizmantosim šī metodešajā rakstā. Mēs izmantosim PWM, kas ieviests uz Arduino plates.

Kas ir PWM

PWM ( impulsa platuma modulācija) ir signāla darba cikla izmaiņas noteiktā laika periodā. Salīdzinot ar nemainīgu signālu, starplikas signālam ir šāda forma:

Šajā attēlā 100% no darba cikla ir PWM kā tāda neesamība, signāls iet bez izmaiņām, it kā izeja būtu vienkārši pievienota 5 voltiem.

0% darba cikls ir signāla neesamība, it kā vads nekur nebūtu pievienots.

Atlikušie darbības režīmi ir ātra darbības režīmu pārslēgšana, kas liek LED mirgot lielā, cilvēka acij nepamanāmā ātrumā (100 reizes sekundē), kas liek tai degt ar nepietiekamu spilgtumu. Arduino atkarībā no izmantotās mikroshēmas versijas ir dažādi daudzumi PWM izejas, uz tāfeles tās apzīmētas ar zīmi ~ no iepriekšējā raksta zinām, ka tās ir 6 izejas 3, 5, 6, 9, 10 un 11, izmantosim 10. un 11. tapas.

Beidzot savienosim gaismas diodes ar dēli. Mēs uzliekam LCD ekrāna vairogu uz Arduino un saliekam šādu ķēdi, kurai mums ir nepieciešams smadzeņu panelis, 2 gaismas diodes, 2 250 omu rezistori un 3–4 vīrišķie vadi. Diagramma izskatīsies šādi:

Un neaizmirstiet, ka LED ir polaritāte, gaismas diodes garā vai greizā kāja (kā diagrammā) ir plus, kas ir savienota caur rezistoru.

Šeit es, iespējams, pabeigšu raksta pirmo daļu, otrajā daļā strādāsim pie darba loģikas izstrādes un programmas koda rakstīšanas. Visu to labāko!

Potenciometrs ir mainīgais rezistors, kas maina savu pretestību, pagriežot pogu.

Kas ir nepieciešams projektam:

  • Arduino UNO vai jebkurš cits analogs
  • Attīstības padome
  • Potenciometrs
  • LED
  • Rezistors 220 omi

Savienojuma shēma uz maizes dēļa.

Lai regulētu gaismas diodes spilgtumu, pievienojam to savienotājam, kas atbalsta PWM, mūsu gadījumā tas ir digitālais kontakts 3. Potenciometra VCC un GND savienotājus pievienojam maizes paneļa barošanas un zemējuma sliedēm. Savienotājs A0 ar analogo tapu A0.

Pēc veiksmīgas ķēdes montāžas lejupielādējiet šo skici:

#define LED 3 #define POT A0 void setup() ( pinMode(LED, OUTPUT); // tapas iestatīšana izvades režīmā pinMode(POT, INPUT); // tapas iestatīšana ievades režīmā ) void loop() ( / / deklarēt integer mainīgos int, spilgtumu //nolasīt potenciometra spriegumu, tā vērtības mainīsies no 0 līdz 1023 pagriezieniem = analogRead(POT) //ierakstīt pagrieziena vērtību spilgtuma mainīgajā, /; /dalīts ar 4. Iegūs vērtības no 0 līdz 255 spilgtums = pagrieziens / 4 //ieslēdz LED ar spilgtumu, kas vienāds ar spilgtuma vērtību analogWrite(LED, spilgtums);

Tagad mēģināsim uzrakstīt kodu tai pašai shēmai, bet tīrā SI vidē AtmelStudio 7 Tas izskatīsies šādi.

#iekļauts int main(void) ( //Konfigurējiet ieejām un izejām nepieciešamās MK tapas. DDRC = 0<

Tagad mēģināsim izprast šos divus piemērus. Fakts ir tāds, ka Arduino vide bija paredzēta ātrai iesācēju sākšanai. Ja jums ir nepieciešams mirgot gaismas diode vai noklikšķināt uz releja, to var izdarīt dažu minūšu laikā. Arduino vide ir pilnībā izolēta no mikrokontrollera aparatūras, un tāpēc viss tajā tiek veikts, izmantojot šīs programmatūras izstrādātāju ierakstītās funkcijas. Šīs funkcijas un to iekšējie elementi ir paslēpti programmas dziļumos. Parastais lietotājs var izsaukt tikai nepieciešamās funkcijas, lai konfigurētu MK aparatūras komponentus. Šķiet, ka tas ievērojami atvieglo programmēšanu. Principā tā ir taisnība. Tāpēc Arduino vide un dēļi ir ļoti populāri iesācēju MK projektu entuziastu vidū. Tomēr ir arī trūkumi, piemēram, tie, kas programmē Arduino, nevar programmēt mikrokontrollerus, kurus neatbalsta Arduino IDE. Piemēram, šķiet neiespējami ieprogrammēt nevienu Attiny AVR mikrokontrollera modeli. Un arī citi Atmega modeļi, kas nav iekļauti Arduino dēļos, ir izlaisti. Principā, ja projekti nav īpaši sarežģīti, tad var izdabāt, tad pietiek ar Arduino vidi. Ja vajag ko lielu un sarežģītu, tad protams tīri SI noteikumi. Bet tad jums būs jāsaprot MK reģistri, kā darbojas atsevišķi MK mezgli. Jums ir jāizlasa dokumentācija, jāizpēta un jāsaprot pati SI. Taču, ja jau ir pieredze skiču rakstīšanā Arduino vidē, tad ar laiku būs iespējams arī saprast SI.

Tagad mēģināsim aplūkot SI kodu un saprast, ka tas nav tik biedējoši.

Piemēram, līnija #iekļauts
savieno galvenes failu, kurā ir atlasīts mūsu vēlamais MK. AtmelStudio 7 vide to dara automātiski, veidojot jaunu projektu.

DDRC=0<PORTC = 0<DDRD=1<PORTD = 0<

Šīs līnijas konfigurē Arduino plates tapas, kas mums vajadzīgas kā ievade vai izvade. PC0šis ir tāds pats kā A0 uz tāfeles šī tapa ir jākonfigurē kā ieeja, jo tai ir pievienots potenciometrs. Un ADC vērtība tiks nolasīta no šīs tapas.

Reģistrēties ADMUX Un ADCSRA Mēs konfigurējam pašu ADC mezglu vajadzīgajā režīmā. Jo īpaši mēs to konfigurējam tā, lai ADC automātiski pastāvīgi nolasītu vērtību no izejas A0 un saglabājiet šo vērtību reģistrā ADCH.

MK ir aparatūras taimeri, tie ir arī mezgli, kas ļauj strādāt ar PWM tapām, piemēram, PWM pin ~3, kuram ir pievienota gaismas diode, pieder iekšējai Taimeris2. Atmega 328 ir vairāk Taimeris0 Un Taimeris1. Tātad, izmantojot reģistrus TCCR2A Un TCCR2B, iestatīsim Timer2 režīmā FAST_PWM, tas dod mums iespēju strādāt ar Arduino plates tapu ~3. Nu, programmas galvenajā cilpā mēs nekavējoties pārsūtām vērtību no ADC uz mūsējo Taimeris2. Tas tiek darīts vienā rindā OCR2B=ADCH.

Vienīgais jautājums ir, kā augšupielādēt kodu, kas rakstīts SI, mūsu Arduino programmā AtmelStudio? To var izdarīt tieši no AtmelStudio vides. Tiesa, pirms tam jums ir jāizlasa un jāsaglabā sāknēšanas ielādētājs no Arduino plates ar to pašu programmētāju. Pretējā gadījumā Arduino plate nevarēs strādāt ar Arduino vidi. Jebkurā laikā varat izmantot programmētāju, lai atgrieztu sāknēšanas ielādētāju savā vietā.

Šajā eksperimentā mēs pievienojam gaismas diodes spilgtuma daļu ar vienu pogu un samazinām to ar otru.

EKSPERIMENTA DAĻU SARAKSTS

- 1 Arduino Uno dēlis;

- 1 bezlodējamais maizes dēlis;

- 2 pulksteņa pogas;

- 1 rezistors ar nominālo vērtību 220 omi;

- 1 LED;

- 7 vīriešu-vīriešu vadi.

SĒTES DIAGRAMMA

DIAGRAMMA UZ PLĀCES

LŪDZU, ŅEMIET VĒRĀ

  • Ja pārstrādājat iepriekšējā eksperimenta shēmu, ņemiet vērā, ka šoreiz mums ir jāpievieno gaismas diode pie porta, kas atbalsta PWM.

SKICE

lejupielādējiet Arduino IDE skici
#define PLUS_BUTTON_PIN 2 #define MINUS_BUTTON_PIN 3 #define LED_PIN 9 int spilgtums = 100; Būla plusUp = patiess; Būla minusUp = patiess; void setup() ( pinMode(LED_PIN, OUTPUT); pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP); pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP); ) void loop() ( analogWrite(LED_PIN, spilgtums); // reaģēt uz klikšķiem, izmantojot funkciju, ko mēs rakstījām plusU = handClick(PLUS_BUTTON_PIN, plusUp, +35 minusUp = handClick(MINUS_BUTTON_PIN, minusUp, -35) // Sava funkcija ar 3 parametriem: PIN numurs ar pogu // (buttonPin), stāvoklis pirms pārbaudes (wasUp) un spilgtuma gradācija //, noklikšķinot uz pogas (delta). Funkcija atgriež // (angļu valodā return) atpakaļ jauno, pašreizējo pogas Būla roktura stāvokliClick(int buttonPin, Boolean wasUp, int delta) ( boolean isUp = digitalRead(buttonPin); if (wasUp && !isUp) ( delay(10) ); isUp = digitalRead(buttonPin) // ja bija klikšķis, mainiet spilgtumu no 0 uz 255 if (!isUp) brightness = constrain(brightness + delta, 0, 255 ) return isUp; zvanītāja kodam)

KODS SKAIDROJUMI

  • Mēs varam izmantot ne tikai iebūvētās funkcijas, bet arī izveidot savas. Tas ir attaisnojams, ja mums ir jāatkārto vienas un tās pašas darbības dažādās koda vietās vai, piemēram, mums ir jāveic vienas un tās pašas darbības ar dažādiem datiem, kā šajā gadījumā: jāapstrādā signāls no 2. un 3. digitālā porta.
  • Jūs varat definēt savas funkcijas jebkur kodā ārpus citu funkciju koda. Mūsu piemērā mēs definējām funkciju pēc cilpa .
  • Lai definētu savu funkciju, mums ir nepieciešams:
    • Norādiet, kādu datu tipu tas atgriezīs. Mūsu gadījumā tā ir Būla. Ja funkcija veic tikai dažas darbības un neatgriež nekādu vērtību, izmantojiet atslēgvārdu nederīgs
    • Piešķiriet funkcijai nosaukumu - identifikatoru. Šeit darbojas tie paši noteikumi, kas attiecas uz mainīgo un konstantu nosaukšanu. Funkcijas ir nosauktas tādā pašā stilā piemēram, mainīgie .
    • Iekavās uzskaitiet funkcijai nodotos parametrus, norādot katra veidu. Šī ir to mainīgo deklarācija, kas ir redzami jaunizveidotajā funkcijā un tikai tajā. Piemēram, ja šajā eksperimentā mēs mēģinām piekļūt wasUp vai isUp no cilpa () Mēs saņemsim kļūdas ziņojumu no kompilatora. Tāpat mainīgie, kas deklarēti cilpa, nav redzamas citām funkcijām, taču to vērtības var nodot kā parametrus.
    • Starp cirtainiem lencēm ierakstiet funkcijas izpildīto kodu
    • Ja funkcijai ir jāatgriež kāda vērtība, izmantojiet atslēgvārdu atgriezties norādiet, kādu vērtību atgriezt. Šai vērtībai ir jābūt tāda veida, kādu mēs deklarējām
  • Tā sauktie globālie mainīgie, t.i. Mainīgie, kuriem var piekļūt no jebkuras funkcijas, parasti tiek deklarēti programmas sākumā. Mūsu gadījumā tas ir spilgtumu .
  • Mūsu izveidotās funkcijas iekšpusē rokturisNoklikšķiniet Notiek tas pats, kas eksperimentā.
  • Tā kā, palielinot spilgtuma pakāpi par 35, pēc ne vairāk kā astoņiem secīgiem klikšķiem uz vienas no pogām izteiksmes vērtība spilgtums + delta izies ārpus intervāla . Izmantojot funkciju ierobežot mēs ierobežojam mainīgā pieļaujamās vērtības spilgtumu noteiktas intervālu robežas.
  • Izteiksmē plusUp = rokturisClick(PLUS_BUTTON_ PIN , plusUp, +35) mēs piekļūstam mainīgajam plusUz augšu divreiz. Kopš = ievieto labā operanda vērtību kreisajā operandā, vispirms aprēķinot, kas atgriezīsies rokturisNoklikšķiniet. Tātad, kad mēs viņai dodam plusUz augšu kā parametrs tam joprojām ir vecā vērtība, kas aprēķināta pēdējā zvana laikā rokturisNoklikšķiniet .
  • Iekšā rokturisNoklikšķiniet mēs aprēķinām jauno LED spilgtuma vērtību un ierakstām to globālajā mainīgajā spilgtumu, kas katrā iterācijā cilpa tikko nodots analogWrite .

JAUTĀJUMI, LAI PĀRBAUDĪTU SEVI

  1. Ko nozīmē atslēgvārds? nederīgs ?
  2. Kā programma uzvedas, ja viens mainīgais tiek minēts no dažādām piešķiršanas operatora pusēm = ?

UZDEVUMI NEATKARĪGAM RISINĀJUMAM

  1. Pārveidojiet kodu, lai spilgtuma maiņas solis tiktu pielāgots vienuviet.
  2. Izveidojiet citu funkciju un pārstrādājiet kodu tā, lai viena funkcija būtu atbildīga par taustiņsitienu izsekošanu, bet otra - par gaismas diodes spilgtuma aprēķināšanu un atgriešanu analogWrite .

Funkcija analogWrite () tiek izmantota, lai vājinātu LED un to pakāpeniski ieslēgtu.

AnalogWrite izmanto impulsa platuma modulāciju (PWM), kas ļauj digitālajai tapai ieslēgt/izslēgties lielā ātrumā, radot slāpēšanas efektu.

Kas jums būs nepieciešams projektam

  • Arduino dēlis
  • Maizes dēlis
  • LED
  • 220 omu rezistors

LED savienojuma shēma ar Arduino

Savienojiet LED anodu (garāku, pozitīvo kāju) ar Arduino plates digitālo tapu 9, izmantojot 220 omu rezistoru. Savienojiet katodu (īsāku, negatīvi lādētu kāju) ar zemi.

Arduino savienotās gaismas diodes shēmas shēma


Vairoga iespēja ar LED priekš Arduino

Arduino programmas apraksts

Pēc tam, kad tapa 9 ir pasludināta par ledPin, funkcijas setup() pamatteksts nav jāaizpilda.

Funkcijai analogWrite (), ko izmantosit galvenajā cilpā, ir nepieciešami divi argumenti: viens, lai norādītu tapu, uz kuru rakstīt, un otrs, lai parādītu rakstāmo PWM vērtību.

Lai pakāpeniski iedegtos un izslēgtu LED, pakāpeniski palieliniet PWM vērtību no 0 līdz 255, pēc tam atpakaļ uz 0, lai pabeigtu ciklu. Zemāk esošajā skicē PWM vērtība tiek izmantota mainīgajam, ko sauc par spilgtumu. Katru reizi, kad cilpa beidzas, tā palielina mainīgā vērtību.

Ja spilgtums sasniedz robežvērtību (0 vai 255), fadeAmount maina savu vērtību uz negatīvu. Citiem vārdiem sakot, ja fadeAmount ir 5, tā vērtība mainās uz -5. Nākamajā cilpas atkārtojumā tas izraisa spilgtuma mainīgā maiņu.

AnalogWrite () ļauj PWM vērtībai ātri mainīties, lai skices beigās esošā aizkave kontrolētu samazināšanās ātrumu. Mēģiniet mainīt aizkaves aizkaves vērtību un redzēt, kā programma darbojas.

Skice priekš Arduino IDE

Šajā piemērā parādīts, kā nodrošināt vājināšanu 9. tapā, izmantojot funkciju analogWrite().

int led = 9; // tapa, pie kuras ir pievienota gaismas diode

int spilgtums = 0; // LED spilgtums

int fadeAmount = 5; // cik daudz palielināt gaismas diodes spilgtumu

// iestatīšanas funkcija palaiž vienu reizi pēc plates pārstartēšanas:

// deklarē tapu 9 kā izvadi:

pinMode(led, OUTPUT);

// cilpa atkārtojas bezgalīgi:

// iestata 9. tapas spilgtumu:

analogWrite(led, spilgtums);

// mainīt spilgtumu nākamajā iterācijā, izmantojot cilpu:

brightness = spilgtums + fadeAmount;

// robežvērtībās maina vājinājuma vērtību uz līdzīgu ar pretēju zīmi:

if (spilgtums == 0 || spilgtums == 255) (

fadeAmount = -fadeAmount ;

// aizkave 30, lai izsekotu izbalēšanas efektu

Tagad apskatīsim daudzkrāsu LED, ko bieži sauc saīsinājumā: RGB LED. RGB ir saīsinājums, kas apzīmē: sarkans — sarkans, zaļš — zaļš, zils — zils. Tas ir, šīs ierīces iekšpusē ir ievietotas trīs atsevišķas gaismas diodes. Atkarībā no veida RGB gaismas diodei var būt kopīgs katods vai kopīgs anods.

1. Krāsu sajaukšana

Kāpēc RGB gaismas diode ir labāka par trim parastajām? Tas viss ir saistīts ar mūsu redzes spēju sajaukt gaismu no dažādiem avotiem, kas atrodas tuvu viens otram. Piemēram, ja novietosim blakus zilās un sarkanās gaismas diodes, tad vairāku metru attālumā to mirdzums saplūdīs un acs ieraudzīs vienu violetu punktu. Un, ja pievienosim arī zaļo, punkts mums šķitīs balts. Tieši tā darbojas datoru monitori, televizori un āra ekrāni. Televizora matrica sastāv no atsevišķiem dažādu krāsu punktiem. Ja paņemat palielināmo stiklu un skatāties caur to ieslēgtajā monitorā, šos punktus varat viegli redzēt. Taču uz āra ekrāna punkti nav izvietoti ļoti blīvi, lai tos varētu atšķirt ar neapbruņotu aci. Bet no vairāku desmitu metru attāluma šie punkti nav atšķirami. Izrādās, jo tuvāk viens otram atrodas daudzkrāsaini punktiņi, jo mazāks attālums ir nepieciešams acij, lai sajauktu šīs krāsas. No tā izriet secinājums: atšķirībā no trim atsevišķām gaismas diodēm RGB LED krāsu sajaukšanās ir pamanāma jau 30-70 cm attālumā Starp citu, RGB LED ar matētu objektīvu darbojas vēl labāk.

2. RGB LED pievienošana Arduino

Tā kā daudzkrāsu gaismas diode sastāv no trim parastajām gaismas diodēm, mēs tās savienosim atsevišķi. Katra gaismas diode ir savienota ar savu tapu, un tai ir savs atsevišķs rezistors. Šajā apmācībā mēs izmantojam RGB LED ar kopīgu katodu, tāpēc zemei ​​būs tikai viens vads. Shematiska diagramma
Izkārtojuma izskats

3. Programma RGB gaismas diodes vadīšanai

Izveidosim vienkāršu programmu, kas pēc kārtas izgaismos katru no trim krāsām.<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); }

const baits rPin = 3; const baits gPin = 5; const baits bPin = 6; void setup() ( pinMode(rPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(bPin, OUTPUT); ) void loop() ( // izslēgt zilu, ieslēgt sarkanu digitalWrite(bPin, LOW); digitalWrite( rPin, HIGH; , HIGH (500) Ielādējiet programmu Arduino un novērojiet rezultātu. Jūsu pārlūkprogramma neatbalsta video tagu. Nedaudz optimizēsim programmu: mainīgo rPin, gPin un bPin vietā izmantosim masīvu. Tas mums palīdzēs nākamajos uzdevumos.

const baits rgbPins = (3,5,6); void setup() ( for(baits i=0; i
  • 4. Septiņas varavīksnes krāsas
  • Tagad mēģināsim izgaismot divas krāsas vienlaikus. Ieprogrammēsim šādu krāsu secību:
  • sarkans
  • sarkans + zaļš = dzeltens
  • zaļš
  • zaļš + zils = gaiši zils
zils<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.

zils + sarkans = violets

Vienkāršības labad mēs izlaidām oranžo krāsu. Tātad, izrādījās, ka tās ir sešas varavīksnes krāsas 🙂 const baits rgbPins = (3,5,6); const baits varavīksne = ( (1,0,0), // sarkans (1,1,0), // dzeltens (0,1,0), // zaļš (0,1,1), // zils ( 0,0,1), // zils (1,0,1), // violets ); void setup() ( for(baits i=0; i analogWrite 5. Gluda krāsas maiņa<3; i++){ pinMode(rgbPins[i], OUTPUT); } // начальное состояние - горит красный цвет analogWrite(rgbPins, 255); analogWrite(rgbPins, 0); analogWrite(rgbPins, 0); } void loop() { // гасим красный, параллельно разжигаем зеленый for(int i=255; i>Ne velti RGB LED pieslēdzām pie 3., 5. un 6. tapām. Kā zināms, šīs tapas ļauj ģenerēt dažādu darba ciklu PWM signālu. Citiem vārdiem sakot, mēs varam ne tikai ieslēgt vai izslēgt LED, bet arī kontrolēt tā sprieguma līmeni. Tas tiek darīts, izmantojot funkciju

. Padarīsim tā, lai mūsu gaismas diode starp varavīksnes krāsām pārietu nevis pēkšņi, bet vienmērīgi.

  1. Temperatūras indikators. Pievienosim ķēdei termistoru un pievienosim to analogajai ieejai. Gaismas diodei jāmaina krāsa atkarībā no termistora temperatūras. Jo zemāka temperatūra, jo zilāka krāsa, un jo augstāka temperatūra, jo vairāk sarkana.
  2. RGB lampa ar regulatoru. Pievienosim ķēdei trīs mainīgos rezistorus un savienosim tos ar analogajām ieejām. Programmai nepārtraukti jālasa rezistoru vērtības un jāmaina atbilstošā RGB LED komponenta krāsa.