Sadržaj:
Video: Poboljšanje Arduino LED kocke raspoloženja (jednostavno) (uključen video): 4 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
Nakon što sam vidio projekt male kocke za raspoloženje LED koji je stvorio '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 usporedbi s izvornom kockom (dodana žuta i bijela), imati beskonačnu količinu rotacije boja itd. trebao bi biti dobar projekt za vježbu o daljnjoj uporabi 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:
- Oglasna ploča
- Arduino - (ovdje imam Leonarda)
- Arduino napajanje / USB kabel
- Oglasna ploča
- Kratkospojne žice (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 dioda x 1
- 9 otpornika
- Kutija dovoljno velika da stane na ploču (koristio sam kutiju za cipele)
- Pomoćni nož
- Papir
Korak 2: Kodiranje
Nekoliko objašnjenja za kôd dano ovdje:
Zasluge kodova idu izvornom izvoru mog projekta jer je urednik projekta stvorio te kodove. Neke sam samo 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 izvornog izvora.
Također imam verziju koda na Arduino Creatoru.
/* Kôd za 3 LED svjetla, crveno, zeleno i plavo (RGB) za stvaranje unakrsnog blijeđenja (RGB) Da biste stvorili blijeđenje, morate učiniti dvije stvari: 1. Opišite boje koje želite prikazati 2. Navedite redoslijed po kojem želite da izblijede
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 (bijela) su sve tri LED diode pri 30% int dimWhite = {30, 30, 30} itd.
U nastavku su navedene neke uobičajene boje ili ih napravite sami
NAVEDENJE NARUDŽBE:
U glavnom dijelu programa morate navesti redoslijed u kojem želite da se boje pojavljuju, npr. crossFade (crveno); crossFade (zeleno); crossFade (plavo);
Te će se boje pojavljivati tim redoslijedom, blijedeći
jednu boju u drugu
Osim toga, postoji 5 izbornih postavki koje možete prilagoditi:
1. Početna boja je postavljena na crnu (tako da prva boja blijedi), ali početnu boju možete postaviti na bilo koju drugu boju 2. Unutarnja petlja radi 1020 interacija; varijabla "wait" postavlja približno trajanje jednog unakrsnog ugađanja. 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 ponavljati u nedogled. ako je postavljeno na broj, to će se ponavljati taj broj puta, a zatim zaustaviti na posljednjoj boji u nizu. (Postavite 'return' na 1, a zadnju boju učinite crnom ako želite da na kraju izblijedi) dovršeno, ali prije nego što počne sljedeća boja. 5. Postavite zastavicu DEBUG na 1 ako želite da se izlaz za ispravljanje pogrešaka šalje na serijski monitor.
Unutrašnjost programa nije komplicirana, ali jesu
malo su nervozni - unutarnji rad objašnjen je ispod glavne petlje.
Travnja 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 čekanje = 15; // 10 ms interno kašnjenje crossFade; povećanje za sporije blijeđenje // 改
int hold = 1; // Opcionalno zadržavanje kad je boja potpuna, prije sljedećeg crossFade // 改 int DEBUG = 1; // DEBUG brojač; ako je postavljeno na 1, vratit će vrijednosti natrag putem serijskog int loopCount = 60; // Koliko često bi DEBUG trebao izvještavati? int ponavljanje = 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 unakrsnih uzoraka
void loop () {crossFade (crveno); crossFade (zeleno); crossFade (plavo); crossFade (žuto); crossFade (bijela); crossFade (ružičasta); crossFade (ljubičasta); crossFade (narančasta);
if (ponavljanje) {// Petljamo li konačan broj puta?
j += 1; if (j> = repeat) {// Jesmo li već stigli? izlaz (j); // Ako je tako, prestanite. }}}
/* ISPOD OVOG LINIJA JE MATEMATIKA - NE TREBATE TO MJENJATI OSNOVNO
Program radi ovako:
Zamislite crossfade koji pomiče crvenu LED od 0-10, zelenu od 0-5, a plavu od 10 do 7, u deset koraka. Željeli bismo izbrojati 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 njezinu smanjenju. Naše blijeđenje u 10 koraka izgledalo bi ovako:
1 2 3 4 5 6 7 8 9 10
R + + + + + + + + + + G + + + + + B - - -
Crvena se diže od 0 do 10 u deset koraka, zelena od
0-5 u 5 koraka, a plava pada s 10 na 7 u tri koraka.
U stvarnom programu postoci boja se pretvaraju u
0-255 vrijednosti, a postoji 1020 koraka (255*4).
Da bismo shvatili koliki bi trebao biti korak između jednog gore ili
tipku 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 prilagodbi vrijednosti. */
int CalculateStep (int prevValue, int endValue) {
int step = endValue - prevValue; // Koliki je ukupni jaz? if (korak) {// Ako nije nula, korak = 1020 / korak; // podijeli sa 1020} return step; }
/* Sljedeća funkcija je CalcuVal. Kad vrijednost petlje, i, dosegne veličinu koraka prikladnu za jednu od boja, povećava ili smanjuje vrijednost te boje za 1. (R, G i B se izračunavaju zasebno.) */
int CalculatorVal (int korak, int val, int i) {
if ((step) && 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 treba li vrijednost ažurirati svaki put, a 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 korakR = izračunatiKorak (prevR, R);
int korakG = izračunatikorak (prevG, G); int korakB = izračunatiKorak (prevB, B); int korakY = izračunavanjeKorak (prevY, Y); // 改 int korakW = izračunavanjeKorak (prevW, W); // 改
za (int i = 0; i <= 1020; i ++) {redVal = izračunajVal (stepR, redVal, i); grnVal = izračunatiVal (stepG, grnVal, i); bluVal = izračunajVal (stepB, bluVal, i); ylwVal = izračunatiVal (stepY, ylwVal, i); // 改 whiVal = izračunatiVal (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); // 改
odgoda (č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 ("Petlja/RGBYW: #"); Serijski.ispis (i); Serial.print ("|"); Serijski.ispis (redVal); Serial.print (" /"); Serijski.ispis (grnVal); Serial.print (" /"); Serial.println (bluVal); Serial.print (" /"); Serijski.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; // 改 odgoda (zadržavanje); // Pauziraj za opcionalno 'čekanje' milisekundi prije nastavka petlje}
Korak 3: Postavljanje
- Uzmi ploču.
-
Demo spojnih žica kako bi LED svjetlo moglo zasjati:
- Stavite LED na ploču. Postavite duži kraj 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. Kôd 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 bijela LED na 9.
- Jedan kraj otpornika postavite u isti red s kraćim krajem LED diode. Drugi kraj postavite negdje 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.
- Stavite 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 mali otvor za svoje žice pomoću pomoćnog noža koji će proći kroz kutiju i spojiti se na matičnu ploču.
- Provjerite je li 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čeni:
Super jednostavno kristalno svjetlo raspoloženja: 6 koraka
Super jednostavno kristalno svjetlo raspoloženja: Pozdrav tvorci! Ovo je super duper jednostavan arduino projekt koji će funkcionirati kao alat za učenje, kao i opako strašno 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 glazbe raspoloženja na temelju temperature okoline: 9 koraka
Mood Speaker- snažan zvučnik za reprodukciju glazbe raspoloženja na temelju 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 glazbu u pozadini ovisno o temperaturi, ali može
Prepoznavanje boje W/ TCS230 senzor i Arduino [Uključen kalibracijski kod]: 12 koraka
Prepoznavanje boja W/ TCS230 senzor i Arduino [Uključen kalibracijski kod]: PregledU ovom ćete vodiču naučiti o senzoru TCS230 i kako ga koristiti s Arduinom za prepoznavanje boja. Na kraju ovog vodiča pronaći ćete fascinantnu ideju za stvaranje olovke za odabir boje. Ovom olovkom možete skenirati boje
Ručna glazbena kutija / instrument sa 6 nota (jednostavno za izradu i poboljšanje!): 5 koraka (sa slikama)
Ručna glazbena kutija / instrument s 6 nota (jednostavno za izradu i poboljšanje!): Pozdrav! Nadahnut Martinom Molinom, članom švedskog benda Wintergatan, nedavno sam se zaljubio u glazbene kutije i sve o njima. Ljudi koji stvaraju pjesme za glazbene kutije i dalje koriste staromodan način da pjesmu ne udaraju
Glazbeno reaktivno svjetlo -- Kako napraviti super jednostavno glazbeno reaktivno svjetlo za poboljšanje izgleda radne površine .: 5 koraka (sa slikama)
Glazbeno reaktivno svjetlo || Kako napraviti super jednostavno glazbeno reaktivno svjetlo za poboljšanje izgleda radne površine: Hej, što ima ljudi, danas ćemo izgraditi vrlo zanimljiv projekt. Danas ćemo izgraditi glazbeno reaktivno svjetlo. LED dioda će promijeniti svoju svjetlinu prema bas koji je zapravo niskofrekventni audio signal. Vrlo je jednostavno izgraditi. Mi ćemo