- Reikalingos medžiagos:
- LDR:
- RGB šviesos diodas:
- Grandinės schema:
- Programavimo paaiškinimas:
- „Arduino“ spalvų maišymo lempos darbas:
Ką daryti, jei galime sukurti įvairias spalvas naudodami vieną RGB lemputę ir padaryti savo kambario kampą patrauklesnį? Taigi, čia yra paprasta „ Arduino“ spalvų maišymo lempa, kuri gali pakeisti spalvą, kai kambaryje pasikeičia šviesa. Taigi ši lempa automatiškai pakeis savo spalvą pagal šviesos sąlygas kambaryje.
Kiekviena spalva yra raudonos, žalios ir mėlynos spalvos derinys. Taigi galime sukurti bet kokią spalvą naudodami raudoną, žalią ir mėlyną spalvas. Taigi, čia mes skirsime PWM, ty šviesos intensyvumą LDR. Tai dar labiau pakeis raudonos, žalios ir mėlynos spalvos intensyvumą RGB LED ir bus gaminamos skirtingos spalvos.
Žemiau esančioje lentelėje pateikiami spalvų deriniai su atitinkamais darbo ciklų pokyčiais.
Reikalingos medžiagos:
- 1 x „Arduino UNO“
- 1 x duona
- 3 x 220 omų rezistoriai
- 3 x 1-kilohm rezistoriai
- Džemperių laidai
- 3 x LDR
- 3 x spalvotos juostelės (raudona, žalia, mėlyna)
- 1 x RGB šviesos diodas
LDR:
Šioje grandinėje mes naudosime fotorezistorių (arba nuo šviesos priklausantį rezistorių, LDR arba foto laidžią ląstelę). LDR yra pagaminti iš puslaidininkinių medžiagų, kad jie galėtų turėti savo šviesai jautrias savybes. Šie LDR arba NUOTRAUKOS REZISTORIAI veikia „Foto laidumo“ principu. Dabar sakoma, kad šis principas yra toks: kai šviesa patenka ant LDR paviršiaus (šiuo atveju), padidėja elemento laidumas arba, kitaip tariant, sumažėja LDR pasipriešinimas, kai šviesa patenka į LDR paviršių. Ši LDR atsparumo sumažėjimo savybė pasiekiama, nes tai yra puslaidininkių medžiagos, naudojamos paviršiuje, savybė.
Čia trys LDR jutikliai naudojami atskirų raudonos, žalios ir mėlynos šviesos diodų ryškumui valdyti RGB lemputėje. Sužinokite daugiau apie LDR valdymą naudojant „Arduino“ čia.
RGB šviesos diodas:
Yra dviejų tipų RGB šviesos diodai, vienas yra įprastas katodo tipas (bendras neigiamas), kitas - įprastas anodo tipas (bendras teigiamas). CC (bendrasis katodas arba bendras neigiamas) bus po tris teigiamus terminalus, kurių kiekvienas terminalas žymės spalvą, ir vienas neigiamas terminalas, žymintis visas tris spalvas.
Savo grandinėje mes ketiname naudoti CA (bendras anodas arba bendras teigiamas) tipą. Įprasto anodo tipo atveju, jei norime, kad RED šviesos diodas būtų įjungtas, turime įžeminti RED LED kaištį ir įjungti bendrą teigiamą. Tas pats pasakytina apie visus šviesos diodus. Sužinokite čia, kaip susieti RGB LED su „Arduino“.
Grandinės schema:
Visa šio projekto schema pateikta aukščiau. Grandinės schemoje parodytą + 5 V ir įžeminimo jungtį galima gauti iš „Arduino“ 5 V ir įžeminimo kaiščio. Pats „Arduino“ gali būti maitinamas iš nešiojamojo kompiuterio arba per nuolatinės srovės lizdą, naudojant 12 V adapterį arba 9 V akumuliatorių.
Norėdami pakeisti RGB ryškumą, naudosime PWM. Daugiau apie PWM galite sužinoti čia. Štai keletas PWM pavyzdžių su „Arduino“:
- „Arduino Uno“ kintamas maitinimas
- Nuolatinės srovės variklio valdymas naudojant „Arduino“
- „Arduino“ pagrindu sukurtas tonų generatorius
Programavimo paaiškinimas:
Pirma, mes deklaruojame visus įėjimus ir išvesties kaiščius, kaip parodyta žemiau.
konstatavimo baitas raudonas_jutiklio_pin = A0; const baitas green_sensor_pin = A1; const baitas mėlynas_sensoriaus_pin = A2; const baitas green_led_pin = 9; konstatavimo baitas blue_led_pin = 10; konstatavimo baitas raudonas_priekaištis = 11;
Paskelbkite pradines jutiklių ir šviesos diodų reikšmes kaip 0.
nepasirašyta int red_led_value = 0; nepasirašyta int blue_led_value = 0; nepasirašytas int green_led_value = 0; nepasirašyta int raudona_siutiklio_vertė = 0; nepasirašyta int blue_sensor_value = 0; nepasirašyta int žalia_sensor_value = 0; negaliojanti sąranka () { pinMode (red_led_pin, OUTPUT); pinMode (blue_led_pin, OUTPUT); pinMode (green_led_pin, OUTPUT); Serijos pradžia (9600); }
Kilpos skyriuje imsime trijų jutiklių išvestį su „ analogRead“ (); funkciją ir saugoti trimis skirtingais kintamaisiais.
tuštuma kilpa () { red_sensor_value = analogRead (red_sensor_pin); vėlavimas (50); blue_sensor_value = analogRead (blue_sensor_pin); vėlavimas (50); green_sensor_value = analogRead (green_sensor_pin);
Spausdinkite šias reikšmes serijiniame monitoriuje derinimo tikslais
Serial.println („Neapdorotų jutiklių vertės:“); Serial.print ("\ t Raudona:"); Serial.print (raudona_sensor_value); Serial.print ("\ t mėlyna:"); Serial.print (mėlyna_sensor_value); Serial.print ("\ t žalia:"); Serial.println (žalia_sensor_value);
Iš jutiklių gausime 0–1023 reikšmes, tačiau mūsų „Arduino PWM“ kaiščių išvestis yra 0–255. Taigi turime pakeisti neapdorotas vertes į 0–255. Tam mes turime padalinti neapdorotas vertes iš 4 ARBA, norėdami konvertuoti šias vertes, galime naudoti „Arduino“ žemėlapių funkciją.
red_led_value = raudona_sensor_value / 4; // apibrėžti raudoną šviesos diodą blue_led_value = blue_sensor_value / 4; // apibrėžti mėlyną šviesos diodą žalia_virkšta_vertė = žalia_jutiklio_versija / 4; // apibrėžti Žaliąją Šviesą
Spausdinkite susietas vertes į serijinį monitorių
Serial.println ("Susietos jutiklio vertės:"); Serial.print ("\ t Raudona:"); Serial.print (raudona_virta_vertė); Serial.print ("\ t mėlyna:"); Serial.print (blue_led_value); Serial.print ("\ t žalia:"); Serial.println (žalia_galia_vertė);
Norėdami nustatyti RGB LED išvestį, naudokite analogWrite ()
„analogWrite“ (raudonas_šviesus_skaičius, raudonos___vertinis_vertė); // nurodyti raudoną šviesos diodą analogWrite (blue_led_pin, blue_led_value); // nurodyti mėlyną šviesos diodą analogWrite (green_led_pin, green_led_value); // nurodyti žalią
„Arduino“ spalvų maišymo lempos darbas:
Kai mes naudojame tris LDR, kai į šiuos jutiklius patenka šviesa, pasipriešinimas keičiasi, todėl įtampa keičiasi ir analoginiuose „Arduino“ kaiščiuose, kurie veikia kaip jutiklių įvesties kaiščiai.
Kai pasikeis šių jutiklių šviesos intensyvumas, atitinkamas RGB lemputė švytės keičiantis pasipriešinimo dydžiui, o RGB, naudojant PWM, spalvų maišymas yra skirtingas.