Sadržaj:
- Korak 1: Planiranje izgradnje:
- Korak 2: Ručno izrađena sjenila
- Korak 3: Ručno izrađena sjenila
- Korak 4: Električni krug:
- Korak 5: Kôd:
- Korak 6: Nabavite ga samostalno s PonyProg-ovim pokretačkim pokretačem
- Korak 7: Dakle, to je moj Arduino Moodlamp
Video: Ručno izrađena RGB Moodlamp sa Arduino pogonom: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:38
Ova instrukcija je podijeljena na 5 dijelova:- Planiranje izgradnje (Korak 1)- Ručno izrađena sjenila (Korak 2+3)- Elektronički krug za pokretanje LED dioda od 3 W s kontrolerom ATmega8 (Korak 4)- Kôd (Korak 5)- Kako do njega doći samostalno (flash Arduino bootloader s PonyProg-om i snimite skicu) (6. korak) uskoro Vid: Neki dojmovi
de.youtube.com/watch?v=apZ9NpaUG84 Pic1: Moodlamp Pic2: Moćna LED od 3 W
Korak 1: Planiranje izgradnje:
Volim raditi koncept na samo jednom listu papira. Na prvom listu vidite neke rane ideje. Odabrao sam donji desni dizajn. Druga stranica prikazuje neke pojedinosti o konstrukciji. Mjerenja su eksperimentalna kao i svaki put, ali meni je u redu;-) Moje hardverske misli su bile:- Mogu li rukovati materijalima?- Hoće li svjetlo zasjati kroz sjenu? - Koliki udio bi trebao imati? - Koliko gumba i lonaca će mi trebati za jednostavno sučelje? Mislio sam na softver: Koliko različitih funkcija žarulja treba imati? - Automatsko blijeđenje RGB -a s promjenjivom brzinom - Ručno podešavanje boje - Bijela s podesivom svjetlinom
Korak 2: Ručno izrađena sjenila
Prikupljanje materijala: Sjenilo: U trgovini sam pronašao list veličine 30 stopa x 30 stopa od 30 ml plastike (slika 1-3). Upotrijebite oštar nož za rezanje. Zamazao sam plastiku brusnim papirom (slika 4-6). nabavite glatki cilindar Sve sam zavrnuo nakon bušenja desnih rupa (Slika 7-8). Montirajte plastične zavjese na mjedene nosače s navojem. Lijepo izgleda i prilično ga je lako nabaviti i rukovati. Izbušio sam i lupkao rupe kako bi odgovarao 1/8 navojnoj šipki (Pic9-10). U međuvremenu sam napravio hladnjak za hlađenje LED dioda od 3 W i za čvrstu podlogu. Da ne dobijem previše sjenila od vratila, sagradio sam mali kavez od šipke za zavarivanje s M8 maticom na vrhu (Pic12). Po završetku sam sve sastavio. Mali vijci i matice bili su malo zeznuti, ali 30 minuta kasnije uspio sam.
Korak 3: Ručno izrađena sjenila
Baza: Diskovi su ubačeni u tokarski stroj kako bi bili glatki i okrugli. Nakon toga sam ga obojao mrljom od drva mahagonija kako bi bor dobro izgledao. Što je sljedeće?!? Odlučio sam napraviti podlogu koristeći istu matirana plastika kao nijansa i pozadinsko osvjetljenje s RGB microLED (Pic5). Gumbi: Gumb sam napravio od komada mahagonija, a gumbi od odrezanog oraha.
Korak 4: Električni krug:
Na prvoj slici vidite moju shemu. I evo još jednog videa: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1
Korak 5: Kôd:
Na slikama vidite moj postupak s Arduinom. Prvo sam se okušao sa vlastitim ProtoShieldom, baterijom i nekim vrstama LED -a. Počeo sam sa "Spooky Projects" i "BionicArduino" od TodEKurta prije nekoliko mjeseci. Https://todbot.com/blog/spookyarduino/Moj kod je samo škakljiva kombinacija njegovog projektnog koda. "RGBMoodlight", "RGBPotMixer" i neka proširenja. Tri analogna ulaza i. jedan digitalni ulaz kao prekidač načina rada (Hvala Ju. za rutinu prekida:). LED diode su spojene na D9, D10 i D11 koji podržavaju PulseWithModulation. Ako želite, mogu objaviti skicu, ali to je stvarno gola kombinacija ova dva sjajna koda. Evo mog izvornog koda svjetiljke. Izgleda pomalo neuredno, jer je bila moja vrlo rana faza u programiranju … Ali ako je kopirate, trebala bi odlično funkcionirati. Postoje fini dijelovi, poput "PotColorMixer", "RGBfadingFunction" i Interrupt-Routine za mode-switch./* nejo lipanj 2008
Kôd za moju "Moodlamp", temeljenu na "dimmingLEDs" Claya Shirkyja
*nejo rujan 2008
- Konačni kod za lampicu raspoloženja s prekidačem za način rada, analognim brzim biranjem za RGB-blijeđenje i promjenu boje RGB-a.
- Funkcija zatamnjivanja radi samo za bijelu boju
*nejo listopada 2008
- Proširenje zvuka za moodlamp:
- Kondenzatorski mikrofon sa malim LM368 pojačalom, prijemnikom i RC-niskopropusnim filtrom
- s drugim analognim ulazom koristim funkciju RGBPotMixer za promjenu boje dobivanjem mikrofona.
* * * Kôd za 3 LED svjetla s unakrsnim blijeđenjem, crvenu, zelenu i plavu ili jednu trobojnu LED, koristeći PWM
- Program polako blijedi iz crvene u zelenu, zelenu u plavu i plavu u crvenu
- Kod za ispravljanje pogrešaka pretpostavlja Arduino 0004 jer koristi nove funkcije u stilu Serial.begin ()
- izvorno "dimmingLEDs" Claya Shirkyja
*
- AnalogRead je omogućen na Pin A0 za promjenu brzine blijeđenja RGB -a
- AnalogRead je omogućen na Pin A2 za promjenu boje hueRGB
* * */#include // Outputint ledPin = 13; // controlPin za otklanjanje pogrešakaint redPin = 9; // Crvena LED, spojena na digitalni pin 9int greenPin = 10; // Zelena LED dioda, spojena na digitalni pin 10int bluePin = 11; // Plava LED dioda, spojena na digitalni pin 11int dimredPin = 3; // Igle za analognu vrijednost zatamnjenja, spojene na upravljački dio tranzistora dimgreenPin = 5; int dimbluePin = 6; // Ulazni prekidačPin = 2; // prekidač je spojen na pin D2int val = 0; // varijabla za čitanje pin statusint buttonState; // varijabla za držanje tipke stateint buttonPresses = 0; // 3 pritiska za odlazak! Int potPin0 = 0; // Posuda za podešavanje kašnjenja između blijeđenja u Moodlampu; int potPin2 = 2; // Izlaz potenciometra za promjenu hueRGB colorint potVal = 0; // Varijabla za spremanje ulaza iz potenciometraint maxVal = 0; // vrijednost za spremanje faktora prigušivanja zadana je 255, ako nije povezan Potintint dimPin = 4; // Lonac spojen na A4 za prigušivanje svjetline // Varijable programaint redVal = 255; // Varijable za spremanje vrijednosti za slanje na pinstinu greenVal = 1; // Početne vrijednosti su crvena puna, zelena i plava offint blueVal = 1; int i = 0; // Brojač petlji int wait; // = 15; // kašnjenje 50 ms (0,05 sekundi); skratiti za brže blijeđenje k = 0; // vrijednost za controlLED u blink-functionint DEBUG = 0; // DEBUG brojač; ako je postavljeno na 1, zapisat će vrijednosti natrag putem serijskog LCD LCD = 0; // LCD brojač; ako je postavljeno na 1, vratit će vrijednosti natrag putem serialvoid setup () {pinMode (ledPin, OUTPUT); pinMode (redPin, OUTPUT); // postavlja pinove kao izlazni pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // postavlja pinove kao izlazni pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Postavi prekidač kao ulazni priključakInterrupt (0, isr0, RISING); if (DEBUG) {// Ako želimo vidjeti pin vrijednosti za ispravljanje pogrešaka … Serial.begin (9600); //… postavljanje serijskog izlaza u stilu 0004}} // Glavna petlja programavoid () {if (buttonPresses == 0) {Moodlamp (); // poziva funkciju Moodlight} if (buttonPresses == 1) {RGBPotMixer (); // poziva manuel mix funkciju} if (buttonPresses == 2) {Bijela (); // Ovdje je sve bijelo} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); // Bijelo (); Monitor(); dim ();} void Monitor () {// Pošalji stanje monitoru ako (DEBUG) {// Ako želimo pročitati izlaz DEBUG += 1; // Povećanje brojača DEBUG if (DEBUG> 10) {// Ispis svakih 10 petlji DEBUG = 1; // Poništite brojač Serial.print (i); // Serijske naredbe u stilu 0004 Serial.print ("\ t"); // Ispis kartice Serial.print ("R:"); // Pokazuje da je izlaz crvena vrijednost Serial.print (redVal); // Ispis crvene vrijednosti Serial.print ("\ t"); // Ispis kartice Serial.print ("G:"); // Ponovite za zeleno i plavo … Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serijski.ispis (blueVal); // println, završava s vratom nosača Serial.print ("\ t"); Serial.print ("dimValue:"); Serijski.ispis (maxVal); // println, završava s vratom nosača Serial.print ("\ t"); Serial.print ("čekaj:"); Serial.print (čekaj); // zapisuje vrijednost potPin0 na monitor Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serijski.ispis (potVal); // zapisuje vrijednost potPin0 na monitor Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (buttonState); // zapisuje vrijednost potPin0 na monitor Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (buttonPresses); // zapisuje vrijednost gumbaPritisne na monitor}}} void dim () // Funkcija zatamnjivanja bijele // možda kasnije za sve načine {maxVal = analogRead (dimPin); maxVal /= 4; // Analogni raspon od 0..1024 previše za zatamnjenje vrijednosti 0..255 analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // tražimo vrijednost iz potPin0; // ako nije povezan Pot: pričekajte 255 i += 1; // Brojač povećanja // i = i - maxVal; if (i <255) // Prva faza blijeđenja {redVal -= 1; // Crveno prema dolje greenVal += 1; // Zeleno gore blueVal = 1; // Plavo nisko} else if (i <509) // Druga faza blijeđenja {redVal = 1; // Crvena niska greenVal -= 1; // Zeleno prema dolje blueVal += 1; // Plavo gore} else if (i <763) // Treća faza blijeđenja {redVal += 1; // Crveno gore greenVal = 1; // Zeleni lo2 blueVal -= 1; // Plavo dolje} else // Ponovno postavite brojač i ponovno pokrenite blijeđenje {i = 1; } // radimo "255 -redVal" umjesto samo "redVal" jer su // LED diode spojene na +5V umjesto Gnd analogWrite (redPin, 255 - redVal); // Zapis trenutnih vrijednosti na LED pinove analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // zatamnjivanje dimredVal = max (redVal - maxVal, 0); dimgreenVal = min (greenVal - maxVal, 255); dimgreenVal = max (greenVal - maxVal, 0); dimblueVal = min (blueVal - maxVal, 255); dimblueVal = max (blueVal - maxVal, 0); analogWrite (redPin, 255 - dimredVal); // Zapis trenutnih vrijednosti na LED pinove analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / čekaj / = 4; odgoda (čekanje); // Pauza za 'čekanje' milisekundi prije nastavka petlje} void RGBPotMixer () {potVal = analogRead (potPin2); // očitavanje vrijednosti potenciometra na ulaznom pinu potVal = potVal / 4; // pretvoriti iz 0-1023 u 0-255 hue_to_rgb (potVal); // tretiramo potVal kao nijanse i pretvaramo u rgb vrijednosti // "255-" je zato što imamo LED sa zajedničkom anodom, a ne sa zajedničkom katodom analogWrite (redPin, 255-redVal); // Zapis vrijednosti na LED pinove analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } void White () {analogWrite (redPin, maxVal); // Zapisivanje vrijednosti na LED pinove analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*
- S obzirom na promjenjivu nijansu 'h', koja se kreće od 0-252,
- odgovarajuće podesite vrijednost boje RGB.
- Pretpostavlja maxValimum zasićenje i maksimalnu vrijednost (svjetlina)
- Izvodi isključivo cjelobrojnu matematiku, bez pokretnog zareza.
*/void hue_to_rgb (byte hue) {if (hue> 252) hue = 252; // povratak na 252 !! nejo byte hd = hue / 42; // 36 == 252/7, 252 == H_MAX bajt hi = hd % 6; // daje 0-5 bajta f = nijansa % 42; bajt fs = f * 6; prekidač (hi) {slučaj 0: redVal = 252; greenVal = fs; blueVal = 0; pauza; slučaj 1: redVal = 252-fs; greenVal = 252; blueVal = 0; pauza; slučaj 2: redVal = 0; greenVal = 252; blueVal = fs; pauza; slučaj 3: redVal = 0; greenVal = 252-fs; blueVal = 252; pauza; slučaj 4: redVal = fs; greenVal = 0; blueVal = 252; pauza; slučaj 5: redVal = 252; greenVal = 0; blueVal = 252-fs; pauza; }} void isr0 () {Serial.println ("\ n / n inerrupt / n"); buttonState = digitalRead (switchPin); // očitavanje kašnjenja početnog stanjaMicroseconds (100000); // if (val! = buttonState) {// stanje gumba se promijenilo! // if (buttonState == HIGH) {// provjerite je li gumb sada pritisnut buttonPresses ++; //} // val = buttonState; // spremamo novo stanje u našu varijablu if (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Sljedeća faza bili su upravljački programi tranzistora. Koristio sam 3 PNP tranzistora s maksimalnom strujom na 3Ampere. Nakon što su regulirani struja i napon, LEDemiter je radio sjajno punim intenzitetom.
Korak 6: Nabavite ga samostalno s PonyProg-ovim pokretačkim pokretačem
Kako koristiti svoj paralell port za snimanje arduino bootloadera na ATmega168 ili ATmega8 za korištenje jeftinog praznog čipa s arduino okruženjem uskoro ….. možda i na zasebnom uputstvu Evo i dobrih uputa za korištenje čipa samostalno: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
Korak 7: Dakle, to je moj Arduino Moodlamp
Ako vam se svidjelo, ocijenite me.
Preporučeni:
Ručno izrađena lemilica za lemljenje s niskim talištem: 5 koraka
Ručno izrađena lemilica za lemljenje s niskim talištem: Napravite lemljenje za lemljenje s niskim talištem radi lakšeg odlemljivanja. Posjetite moj blog.MaterijaliBismuth metal 2,5g63/37 Kolofonijsko jezgro 2,5 g
Tekst u govor Kliknite na UMhip s ARMbasic pogonom i ostale SBC sa pogonom na ARMbasic: 3 koraka
Tekst u govor Kliknite na UChip s ARMbasic pogonom i ostale SBC -ove s ARMbasic pogonom: Uvod: Dobar dan. Moje ime je Tod. Ja sam svemirski i obrambeni profesionalac koji je također pomalo štreber u srcu. Inspiracija: Potiče iz ere dial-up BBS-a, 8-bitnih mikrokontrolera, osobnih računala Kaypro/Commodore/Tandy/TI-994A, kada R
Circuit Playground Express (CPE) ručno izrađena torba: 5 koraka
Ručno izrađena torbica Circuit Playground Express (CPE): U ovom Instuctableu dobit ćete korake za kodiranje mikrokontrolera Circuit Playground Express (CPE) s MakeCodeom i izradu tote torbe od flanelske košulje i druge tkanine. Ima mnogo prostora za tumačenje i inovacije! Sta ces napredovati
Ručno izrađena utičnica za punjač za automobil: 7 koraka
Ručno izrađena utičnica za punjač automobila: Na posljednjem odmoru u Norveškoj iznajmili smo kombi koji će se koristiti kao kamper; u ovom grubom smještaju nedostaje jedan "luksuz" bio je nedostatak USB punionice u stražnjem dijelu kombija, tj. u spavaćem prostoru, napajane čak i u ključu
Ručno izrađena blagdanska razglednica koja je dar sam po sebi!: 8 koraka
Ručno izrađena blagdanska foto kartica koja je sama po sebi dar !: Ova uputa pokazat će vam kako napraviti jedinstveni set čestitki, od kojih primatelji mogu uokviriti svaku poruku nakon završetka blagdana, a još lakše ako im date okvir za fotografije IKEA isječak zajedno s karticom. Ove kartice mogu biti g