Sadržaj:
Video: Poboljšanje Arduino LED kocke raspoloženja (jednostavno) (uključen video): 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Nakon što sam vidio projekt male kocke za raspoloženje LED koji je kreirao 'Earl, odlučio sam napraviti poboljšanu verziju LED kocke za raspoloženje. Moja verzija bit će složenija od izvorne, jer će biti nešto veća od izvorne, imati još dvije boje u odnosu na originalnu kocku (dodana žuta i bijela), imati beskonačnu količinu rotacije boja itd. trebao bi biti dobar projekt za vježbu o daljoj upotrebi LED svjetala za one koji su razumjeli koncept povezivanja LED svjetala sa žicama.
Korak 1: Materijali
Evo nekoliko materijala koji će vam biti potrebni za izradu ove kocke raspoloženja:
- Breadboard
- Arduino - (ovdje imam Leonarda)
- Arduino napajanje / USB kabel
- Breadboard
- Žice za kratkospojnike (mnogo njih, koristio sam 29 žica)
- Crvena LED x 2
- Plava LED x 2
- Zelena LED dioda x 2
- Žuta LED x 2
- Bijela LED x 1
- 9 otpornika
- Kutija dovoljno velika da stane na ploču (koristio sam kutiju za cipele)
- Pomoćni nož
- Papir
Korak 2: Kodirajte
Nekoliko objašnjenja za kôd dano ovdje:
Zasluge kodova idu izvornom izvoru mog projekta jer je urednik projekta kreirao ove kodove. Samo sam neke od njih poboljšao čineći ih složenijima. U nekim kodovima na kraju ćete možda vidjeti // 改. To znači da sam ovaj kôd uređivao pa se razlikuje od mog izvornog izvora.
Takođe imam verziju koda na Arduino Creatoru.
/* Kôd za 3 LED-a, crveno, zeleno i plavo (RGB) za stvaranje unakrsnog blijeđenja Da biste stvorili blijeđenje, morate učiniti dvije stvari: 1. Opišite boje koje želite prikazati 2. Navedite redoslijed po kojem želite da izblijedje
OPIS BOJE:
Boja je samo niz od tri posto, 0-100, koji kontrolira crvenu, zelenu i plavu LED diodu
Crvena je crvena LED lampica puna, plava i zelena isključena
int red = {100, 0, 0} Dim white su sve tri LED diode na 30% int dimWhite = {30, 30, 30} itd.
U nastavku su navedene neke uobičajene boje ili ih napravite sami
POPIS NARUDŽBE:
U glavnom dijelu programa morate navesti redoslijed u kojem želite da se boje pojavljuju, npr. crossFade (crveno); crossFade (zelena); crossFade (plava);
Te će se boje pojavljivati tim redoslijedom, blijedeći
jednu boju u drugu
Osim toga, postoji 5 opcionalnih postavki koje možete prilagoditi:
1. Početna boja je postavljena na crnu (tako da prva boja izblijedi), ali početnu boju možete postaviti na bilo koju drugu boju 2. Interna petlja radi 1020 interacija; promenljiva 'wait' postavlja približno trajanje jednog unakrsnog fadea. U teoriji, "čekanje" od 10 ms trebalo bi napraviti crossFade od ~ 10 sekundi. U praksi, ostale funkcije koje kod izvršava usporavaju ovo na ~ 11 sekundi na mojoj ploči. YMMV. 3. Ako je 'repeat' postavljeno na 0, program će se petljati u nedogled. ako je postavljeno na broj, to će se ponavljati taj broj puta, a zatim će se zaustaviti na posljednjoj boji u nizu. (Postavite 'return' na 1, a posljednju boju učinite crnom ako želite da na kraju izblijedi.) 4. Postoji opcionalna varijabla 'hold', koja programu zadaje 'hold' milisekunde kada je boja dovršeno, ali prije nego što počne sljedeća boja. 5. Postavite zastavicu DEBUG na 1 ako želite da se izlaz za otklanjanje grešaka šalje na serijski monitor.
Unutrašnjost programa nije komplicirana, ali jest
malo su nervozni - unutrašnji rad objašnjen je ispod glavne petlje.
April 2007, Clay Shirky
*
/ Izlaz
int ylwPin = 5; // Žuta LED, spojena na digitalni pin 5 // 改 int redPin = 6; // Crvena LED, spojena na digitalni pin 6 // 改 int grnPin = 7; // Zelena LED dioda, spojena na digitalni pin 7 // 改 int bluPin = 8; // Plava LED, spojena na digitalni pin 8 // 改 int whiPin = 9; // Bijela LED, spojena na digitalni pin 9 // 改 int ylwPin2 = 10; // Žuta LED, spojena na digitalni pin 10 // 改 int redPin2 = 11; // Crvena LED, spojena na digitalni pin 11 // 改 int grnPin2 = 12; // Zelena LED dioda, spojena na digitalni pin 12 // 改 int bluPin2 = 13; // Plava LED dioda, spojena na digitalni pin 13 // 改
// Nizovi boja
int crna [9] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // 改 int bijela [9] = {100, 100, 100, 100, 100, 100, 100, 100, 100}; // 改 int crveno [9] = {0, 0, 100, 0, 0, 0, 100, 0, 0}; // 改 int zeleno [9] = {0, 100, 0, 0, 0, 0, 0, 100, 0}; // 改 int plava [9] = {0, 0, 0, 100, 0, 0, 0, 0, 100}; // 改 int žuta [9] = {100, 0, 0, 0, 0, 100, 0, 0, 0}; // 改 int ljubičasta [9] = {0, 50, 0, 50, 0, 0, 50, 0, 50}; // 改 int narančasta [9] = {50, 50, 0, 0, 0, 50, 50, 0, 0}; // 改 int pink [9] = {0, 50, 0, 0, 50, 0, 0, 50, 0,}; // 改 // itd.
// Postavljanje početne boje
int redVal = crno [0]; int grnVal = crno [1]; int bluVal = crno [2]; int ylwVal = crno [3]; // 改 int whiVal = crno [4]; // 改
int wait = 15; // 10ms interno kašnjenje crossFade; povećanje za sporije blijeđenje // 改
int hold = 1; // Opcionalno zadržavanje kada je boja potpuna, prije sljedećeg crossFade // 改 int DEBUG = 1; // DEBUG brojač; ako je postavljeno na 1, upisat će vrijednosti nazad putem serijskog int loopCount = 60; // Koliko često bi DEBUG trebao izvještavati? int repeat = 0; // Koliko puta trebamo proći petlju prije zaustavljanja? (0 bez zaustavljanja) // 改 int j = 0; // Brojač petlji za ponavljanje
// Pokretanje varijabli boja
int prevR = redVal; int prevG = grnVal; int prevB = bluVal; int prevY = ylwVal; int prevW = whiVal; // 改
// Postavljanje LED izlaza
void setup () {pinMode (redPin, OUTPUT); // postavlja pinove kao izlazni pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT); pinMode (ylwPin, OUTPUT); // 改 pinMode (whiPin, OUTPUT); // 改 pinMode (grnPin2, OUTPUT); // 改 pinMode (bluPin2, OUTPUT); // 改 pinMode (ylwPin2, OUTPUT); // 改 pinMode (redPin2, OUTPUT); // 改
if (DEBUG) {// Ako želimo vidjeti vrijednosti za ispravljanje pogrešaka …
Serial.begin (9600); //… postavljanje serijskog izlaza}}
// Glavni program: popis redoslijeda ukrštanja
void loop () {crossFade (crveno); crossFade (zelena); crossFade (plava); crossFade (žuto); crossFade (bijelo); crossFade (ružičasta); crossFade (ljubičasta); crossFade (narančasta);
if (repeat) {// Da li petlju ponavljamo konačan broj puta?
j += 1; if (j> = repeat) {// Jesmo li već stigli? izlaz (j); // Ako je tako, zaustavite se. }}}
/* ISPOD OVOG LINIJA JE MATEMATIKA - NE TREBATE OVO PROMIJENITI OSNOVNO
Program funkcionira ovako:
Zamislite unakrsni prelaz koji pomiče crvenu LED sa 0-10, zelenu sa 0-5, a plavu sa 10 na 7, u deset koraka. Željeli bismo prebrojati 10 koraka i povećati ili smanjiti vrijednosti boje u ravnomjerno povećanim koracima. Zamislite da + označava povećanje vrijednosti za 1, a a - jednako snižavanju. Naše blijeđenje u 10 koraka izgledalo bi ovako:
1 2 3 4 5 6 7 8 9 10
R + + + + + + + + + + G + + + + + B - - -
Crvena boja raste od 0 do 10 u deset koraka, zelena od
0-5 u 5 koraka, a plava pada sa 10 na 7 u tri koraka.
U stvarnom programu postoci boja se pretvaraju u
0-255 vrijednosti, a postoji 1020 koraka (255*4).
Da biste shvatili koliki bi korak trebao biti između jednog naviše ili
tipkom na dolje jedne od LED vrijednosti nazivamo CalcuStep (), koji izračunava apsolutni jaz između početne i krajnje vrijednosti, a zatim taj razmak dijeli s 1020 kako bi se odredila veličina koraka između podešavanja vrijednosti. */
int CalculateStep (int prevValue, int endValue) {
int step = endValue - prevValue; // Koliki je ukupni jaz? if (korak) {// Ako nije nula, korak = 1020 / korak; // podijeljeno sa 1020} return step; }
/* Sljedeća funkcija je CalcuVal. Kada je vrijednost petlje, i, dostigne veličinu koraka odgovarajuću za jednu od boja, povećava ili smanjuje vrijednost te boje za 1. (R, G i B se računaju zasebno.) */
int calculatorVal (int korak, int val, int i) {
if ((korak) && i % step == 0) {// Ako korak nije nula i vrijeme je za promjenu vrijednosti, if (korak> 0) {// uvećava vrijednost ako je korak pozitivan … val += 1; } else if (korak 255) {val = 255; } else if (val <0) {val = 0; } povratni val; }
/* crossFade () pretvara postotne boje u a
0-255, zatim petlja 1020 puta, provjeravajući da li vrijednost treba ažurirati svaki put, zatim upisuje vrijednosti boje na ispravne pinove. */
void crossFade (int boja ) {// 改
// Pretvori u 0-255 int R = (boja [0] * 255) / 100; int G = (boja [1] * 255) / 100; int B = (boja [2] * 255) / 100; int Y = (boja [3] * 255) / 100; // 改 int W = (boja [4] * 255) /100; // 改
int stepR = CalculateStep (prevR, R);
int korakG = izračunatikorak (prevG, G); int korakB = izračunatikorak (prevB, B); int korakY = izračunatikorak (prethodniY, Y); // 改 int korakW = izračunatikorak (prevW, W); // 改
for (int i = 0; i <= 1020; i ++) {redVal = izračunajVal (stepR, redVal, i); grnVal = izračunajVal (stepG, grnVal, i); bluVal = CalcuVal (stepB, bluVal, i); ylwVal = izračunatiVal (stepY, ylwVal, i); // 改 whiVal = CalcuVal (stepW, whiVal, i); // 改
analogWrite (redPin, redVal); // Zapis trenutnih vrijednosti na LED pinove
analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal); analogWrite (ylwPin, ylwVal); // 改 analogWrite (whiPin, whiVal); // 改 analogWrite (grnPin2, grnVal); // 改 analogWrite (bluPin2, bluVal); // 改 analogWrite (ylwPin2, ylwVal); // 改 analogWrite (redPin2, redVal); // 改
kašnjenje (čekanje); // Pauza za 'čekanje' milisekundi prije nastavka petlje
if (DEBUG) {// Ako želimo serijski izlaz, ispišite ga na
if (i == 0 ili i % loopCount == 0) {// početak, i svaki loopCount puta Serial.print ("Loop/RGBYW: #"); Serial.print (i); Serial.print ("|"); Serial.print (redVal); Serial.print (" /"); Serial.print (grnVal); Serial.print (" /"); Serial.println (bluVal); Serial.print (" /"); Serial.println (ylwVal); // 改 Serial.print (" /"); // 改 Serial.println (whiVal); // 改 Serial.print (" /"); // 改} DEBUG += 1; }} // Ažuriranje trenutnih vrijednosti za sljedeću petlju prevR = redVal; prevG = grnVal; prevB = bluVal; prevY = ylwVal; // 改 prevW = whiVal; // 改 kašnjenje (zadržavanje); // Pauziranje za opcionalno 'čekanje' milisekundi prije nastavka petlje}
Korak 3: Postavite
- Uzmi ploču.
-
Demo spojnih žica kako bi LED svjetlo moglo zasjati:
- Stavite LED diodu na ploču. Duži kraj postavite s lijeve strane, a kraći s desne strane.
- Postavite jedan kraj kratkospojne žice na mjesto koje je u istom redu s dužim krajem LED diode. Drugi kraj postavite na odjeljak Digital PWM. Kod je odredio da se žute LED diode spajaju na 10 i 5, crvene na 6 i 11, plave na 8 i 13, zelene na 7 i 12 i na kraju bijele LED na 9.
- Postavite jedan kraj otpornika u isti red s kraćim krajem LED diode. Drugi kraj postavite negde blizu.
- Postavite kraj druge kratkospojne žice u istom redu s krajem otpornika koji nije u istom redu s kraćim krajem LED diode. Drugi kraj žice postavite na red s negativnim nabojem.
- Postavite kraj još jedne kratkospojne žice na red s negativnim nabojem, a drugi kraj postavite na GND.
- Ponovite 2. korak 8 puta jer želite da zasvijetli 9 LED dioda
-
Postavite ploču u kutiju. Evo nekoliko podsjetnika:
- Koristio sam napajanje. Napravite malu rupu za svoje žice pomoću pomoćnog noža koji će proći kroz kutiju i spojiti se na matičnu ploču.
- Uvjerite se da je kutija otvorena s jedne strane. Kutija za cipele već ima jednu stranu koja je otvorena. Ako je kutija potpuno zatvorena, odrežite jednu stranu kutije kako biste napravili slobodan prostor.
- Pokrijte stranu ničim papirom. Ovo je za LED svjetla koja svijetle kroz papir.
Preporučuje se:
Super jednostavno kristalno svjetlo raspoloženja: 6 koraka
Super jednostavno kristalno svjetlo raspoloženja: Zdravo tvorci! Ovo je super duper jednostavan arduino projekt koji će funkcionirati kao alat za učenje, kao i zlobno sjajno svjetlo raspoloženja. To je samo nekoliko komada, pa ga možete spojiti zajedno u vremenu koje je potrebno za ispis baze. Čini veliku lekciju
Zvučnik raspoloženja- snažan zvučnik za reprodukciju muzike raspoloženja na osnovu temperature okoline: 9 koraka
Mood Speaker- snažan zvučnik za reprodukciju muzike raspoloženja na osnovu temperature okoline: Zdravo! Za moj školski projekt u MCT Howest Kortrijk, napravio sam Mood Speaker, ovo je pametni Bluetooth zvučnik s različitim senzorima, LCD-om i WS2812b LED traka uključena. Zvučnik pušta muziku u pozadini na osnovu temperature, ali može
E -kocke - Arduino kocka/kocke 1 do 6 kockice + D4, D5, D8, D10, D12, D20, D24 i D30: 6 koraka (sa slikama)
E -kockice - Arduino kocka/kocke 1 do 6 kockice + D4, D5, D8, D10, D12, D20, D24 i D30: Ovo je jednostavan arduino projekt za izradu elektroničke kocke. Moguće je izabrati za 1 do 6 kockica ili 1 od 8 posebnih kockica. Odabir se vrši jednostavnim okretanjem rotacijskog kodera. Ovo su značajke: 1 matrica: prikazuje velike točke 2-6 kockica: prikazuje točke
Ručna muzička kutija / instrument sa 6 nota (jednostavno za izradu i poboljšanje!): 5 koraka (sa slikama)
Ručni muzički okvir / instrument sa 6 nota (lako se pravi i poboljšava!): Zdravo! Inspirisan Martinom Molinom, članom švedskog benda Wintergatan, nedavno sam se zaljubio u muzičke kutije i sve o njima. Ljudi koji stvaraju pjesme za muzičke kutije i dalje koriste staromodan način da pjesmu ne udaraju
Reaktivno svjetlo za muziku -- Kako napraviti super jednostavno muzičko reaktivno svjetlo za poboljšanje izgleda radne površine .: 5 koraka (sa slikama)
Muzičko reaktivno svjetlo || Kako napraviti super jednostavno muzičko reaktivno svjetlo za poboljšanje izgleda radne površine: Hej šta ima ljudi, danas ćemo izgraditi vrlo zanimljiv projekt. Danas ćemo izgraditi muzičko reaktivno svjetlo. LED dioda će promijeniti svoju svjetlinu prema bas koji je zapravo niskofrekventni audio signal. Vrlo je jednostavno za izgradnju. Mi ćemo