INHOUDSOPGAWE:
- Stap 1: Beplanning van die konstruksie:
- Stap 2: Die handgemaakte skaduwee
- Stap 3: Die handgemaakte skaduwee
- Stap 4: Die elektriese stroombaan:
- Stap 5: Die kode:
- Stap 6: Kry dit selfstandig met PonyProg-verbrande selflaaiprogram
- Stap 7: So is my Arduino gemoedlamp
Video: Handgemaakte Arduino-aangedrewe RGB Moodlamp: 7 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:28
Hierdie instruksies word in 5 dele onderverdeel:- Beplanning van die konstruksie (Stap1)- Die handgemaakte skaduwee (Stap2+3)- Die elektroniese stroombaan vir die bestuur van 3W LED's met die ATmega8-beheerder (Stap4)- Die kode (Stap5)- Hoe om dit te kry alleen (flits die Arduino-laaiprogram met PonyProg en brand die skets) (Stap6) kom binnekort Vid: 'n paar indrukke
de.youtube.com/watch?v=apZ9NpaUG84 Pic1: The Moodlamp Pic2: 'n kragtige 3W LED
Stap 1: Beplanning van die konstruksie:
Ek hou daarvan om 'n konsep op slegs een vel papier te doen. Op die eerste vel sien jy 'n paar vroeë idees. 'Ek het die ontwerp regs onder gekies. deur die skaduwee? - Watter verhouding moet dit hê? - Hoeveel knoppe en potte benodig ek vir 'n eenvoudige koppelvlak? My sagteware -gedagtes was: Hoeveel verskillende funksies moet die lamp hê? - Outomatiese RGB -vervaag met veranderlike snelheid - Handmatige kleuraanpassing - Wit met verstelbare helderheid
Stap 2: Die handgemaakte skaduwee
Materiale bymekaarmaak: Die skaduwee: ek het 'n vel van 30 m3 plastiek in die winkel gevind (Pic1-3). Gebruik 'n skerp mes om dit af te sny. kry 'n gladde silinder. Ek het alles vasgedraai nadat ek die regte gate geboor het (Pic7-8). Monteer die plastiekskerms op die skroefdraad van koper. Dit lyk mooi en is redelik maklik om te hanteer en te hanteer. Ek het die gate geboor en getik om by die 1/8 draaddraad te pas (Pic9-10). Intussen het ek 'n heatsink gemaak om die 3W LED's af te koel en 'n soliede basis te hê. As ek nie te veel skakerings van die as kry nie, bou ek 'n hok van 'n sweisstaaf met 'n M8 -moer bo -op (Pic12). Die klein skroewe en moere was 'n bietjie lastig, maar 30 minute later het ek dit reggekry.
Stap 3: Die handgemaakte skaduwee
Die basis: Die skywe is in die draaibank gegooi om dit glad en rond te maak. Daarna het ek dit met 'n mahoniehoutvlek bevlek, sodat die denne goed sou lyk. Wat dan?!? Ek het besluit om 'n basis te maak met dieselfde ryp plastiek as die skaduwee, en verlig dit met 'n RGB microLED (Pic5). Die knoppe: ek het die knoppie gemaak van 'n stuk mahonie en die knoppe van 'n neutehout.
Stap 4: Die elektriese stroombaan:
Op die eerste prentjie sien jy my skematika. En hier is nog 'n video: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1
Stap 5: Die kode:
Op die foto's sien u my proses met Arduino. Eerstens het ek probeer met my selfgemaakte ProtoShield, 'n battery pack en 'n paar LED's. Ek het 'n paar maande gelede begin met "Spooky Projects" en "BionicArduino" deur TodEKurt. Https://todbot.com/blog/spookyarduino/My kode is net 'n moeilike kombinasie van sy projekkode. "RGBMoodlight", "RGBPotMixer" en 'n paar uitbreidings. Drie analoog-in en. een digitaal-in as modus-skakelaar (Dankie aan Ju. vir die onderbrekingsroetine:). Die LED's is verbind na D9, D10 en D11 wat PulseWithModulation ondersteun. As u wil, kan ek die skets publiseer, maar dit is 'n baie kombinasie van hierdie twee wonderlike kodes. Hier is my oorspronklike kode van die lamp. Dit lyk 'n bietjie morsig, want dit was my baie vroeg in die programmering … Maar as u dit kopieer, behoort dit puik te werk. Daar is goeie vredes, soos die "PotColorMixer", die "RGBfadingFunction" en die Interrupt-Routine vir die mode- switch./* nejo June2008
Kode vir my "Moodlamp", gebaseer op "dimmingLEDs" deur Clay Shirky
*nejo Sep2008
- Finale kode vir die buurlamp met onderbrekingsmodus-skakelaar, analoog snelknop vir RGB-vervaag en RGB-kleurverandering.
- Die dimfunksie werk net vir die wit kleur
*nejo Oktober 2008
- Klankuitbreiding vir die bui:
- 'N Kondensormikrofoon met 'n klein LM368 Amp, 'n ontvanger en 'n RC-laagdeurlaatfilter
- met 'n ander analoog invoer gebruik ek die RGBPotMixer-funksie om die kleur te verander deur die mikrofoonsein te kry.
* * * Kode vir kruisverbleking van 3 LED's, rooi, groen en blou, of een driekleurige LED, met behulp van PWM
- Die program vervaag stadig van rooi na groen, groen na blou en blou na rooi
- Die ontfoutingskode veronderstel Arduino 0004, aangesien dit die nuwe funksies in die styl Serial.begin () gebruik
- oorspronklik "dimmingLEDs" deur Clay Shirky
*
- AnalogRead is op Pin A0 aangeskakel om die RGB -vervaagsnelheid te verander
- AnalogRead is op Pin A2 aangeskakel om die kleur van hueRGB te verander
* * */#sluit in // Outputint ledPin = 13; // controlPin vir debuggingint redPin = 9; // Rooi LED, gekoppel aan digitale pen 9int greenPin = 10; // Groen LED, gekoppel aan digitale pen 10int bluePin = 11; // Blou LED, gekoppel aan digitale pen 11int dimredPin = 3; // Spelde vir die analoog dimwaarde, gekoppel aan die transistor driverint dimgreenPin = 5; int dimbluePin = 6; // Inputint switchPin = 2; // skakelaar is gekoppel aan pen D2int val = 0; // veranderlike vir die lees van die pin statusint buttonState; // veranderlike om die knoppie te hou stateint buttonPresses = 0; // 3 druk om te gaan! Int potPin0 = 0; // Pot om die vertraging tussen vervaag in Moodlamp aan te pas; int potPin2 = 2; // Potensiometer uitset vir die verandering van die hueRGB colorint potVal = 0; // Veranderlik om die insette van die potensiometerint maxVal = 0 op te slaan; // waarde om die dimfaktor te red, is standaard 255, as geen pot gekoppel is nie dimPin = 4; // Pot gekoppel aan A4 om die helderheid te verlaag // Program veranderlikesint redVal = 255; // Veranderlikes om die waardes op te slaan om na die pinsint greenVal = 1 te stuur; // Aanvanklike waardes is Rooi vol, Groen en Blou offint blueVal = 1; int i = 0; // Lus teller int wag; // = 15; // 50ms (.05 sekonde) vertraging; verkort vir vinniger fadesint k = 0; // waarde vir die controlLED in die blink-functionint DEBUG = 0; // DEBUG -toonbank; as dit op 1 gestel is, sal die waardes teruggeskryf word via serialint LCD = 0; // LCD toonbank; as dit op 1 gestel is, sal dit die waardes terugskryf via die reeksvoid -opstelling () {pinMode (ledPin, OUTPUT); pinMode (redPin, OUTPUT); // stel die penne in as output pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // stel die penne in as output pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Stel die skakelaarpen in as input attachInterrupt (0, isr0, RISING); if (DEBUG) {// As ons die penwaardes vir ontfouting wil sien … Serial.begin (9600); // … stel die reeksopstelling in op 0004 -styl}} // Hoofprogramvoidlus () {if (buttonPresses == 0) {Moodlamp (); // noem die Moodlight -funksie} if (buttonPresses == 1) {RGBPotMixer (); // noem die funksie manuelmengsel} if (buttonPresses == 2) {White (); // Dit is heeltemal wit hierin} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); // Wit (); Monitor (); dim ();} void Monitor () {// Stuur staat na die monitor as (DEBUG) {// As ons die uitset DEBUG += 1 wil lees; // Verhoog die DEBUG -teller as (DEBUG> 10) {// Druk elke 10 lusse DEBUG = 1; // Stel die toonbank Serial.print (i) terug; // Reeksopdragte in 0004 -styl Serial.print ("\ t"); // Druk 'n oortjie Serial.print ("R:") uit; // Dui aan dat die uitset rooi waarde is Serial.print (redVal); // Druk rooi waarde Serial.print ("\ t") af; // Druk 'n oortjie Serial.print ("G:") uit; // Herhaal vir groen en blou … Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, om af te sluit met 'n koetsopgawe Serial.print ("\ t"); Serial.print ("dimValue:"); Reeks.afdruk (maxVal); // println, om af te sluit met 'n koetsopgawe Serial.print ("\ t"); Serial.print ("wag:"); Serial.print (wag); // skryf die waarde van die potPin0 aan die monitor Serial.print ("\ t"); Serial.print ("hueRGBwaarde"); Serial.print (potVal); // skryf die waarde van die potPin0 aan die monitor Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (buttonState); // skryf die waarde van die potPin0 aan die monitor Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (knoppie druk); // skryf die waarde van die knoppie Druk op die monitor}}} leegte dim () // Funksie vir die verduistering van wit // miskien later vir alle modusse {maxVal = analogRead (dimPin); maxVal /= 4; // Analoog reeks van 0..1024 te veel om die 0..255 -waarde analogWrite (dimredPin, maxVal) te verduister; analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // soek die waarde van die potPin0; // as geen pot gekoppel is nie: wag 255 i += 1; // Toename teller // i = i - maxVal; as (i <255) // Eerste fase van vervaag {redVal -= 1; // Red down greenVal += 1; // Groen op blouval = 1; // Blou laag} anders as (i <509) // Tweede fase van vervaag {redVal = 1; // Rooi lae groenval -= 1; // Groen af blouval += 1; // Blou op} anders as (i <763) // Derde fase van vervaag {redVal += 1; // Rooi op groenVal = 1; // Groen lo2 blouVal -= 1; // Blou af} anders // Stel die toonbank weer in en begin weer met die vervaag {i = 1; } // ons doen "255 -redVal" in plaas van net "redVal" omdat die // LED's gekoppel is aan +5V in plaas van Gnd analogWrite (redPin, 255 - redVal); // Skryf huidige waardes na LED -penne analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // verduistering 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); // Skryf huidige waardes na LED -penne analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / wag / = 4; vertraag (wag); // Wag vir 'wag' millisekondes voordat die lus hervat word} void RGBPotMixer () {potVal = analogRead (potPin2); // lees die potensiometerwaarde by die invoerpen potVal = potVal / 4; // omskakel van 0-1023 na 0-255 hue_to_rgb (potVal); // behandel potVal as 'n kleur en skakel dit om na rgb-vals // "255-" is omdat ons LED's met gewone anode het, nie 'n common-cathode analogWrite nie (redPin, 255-redVal); // Skryf waardes na LED-penne analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } ongeldig White () {analogWrite (redPin, maxVal); // Skryf waardes na LED -penne analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*
- Gegewe die veranderlike kleur 'h', wat wissel van 0-252,
- stel die RGB -kleurwaarde toepaslik in.
- Veronderstel maxValimum Saturation & maximum Value (helderheid)
- Voer suiwer heelgetal wiskunde uit, geen dryfpunt nie.
*/void hue_to_rgb (byte tint) {if (tint> 252) tint = 252; // terugkeer na 252 !! nejo byte hd = hue / 42; // 36 == 252/7, 252 == H_MAX byte hi = hd % 6; // gee 0-5 grepe f = kleur % 42; byte fs = f * 6; skakelaar (hi) {geval 0: redVal = 252; greenVal = fs; blouval = 0; breek; geval 1: redVal = 252-fs; greenVal = 252; blouval = 0; breek; geval 2: redVal = 0; greenVal = 252; blueVal = fs; breek; geval 3: redVal = 0; greenVal = 252-fs; blouval = 252; breek; geval 4: redVal = fs; greenVal = 0; blouval = 252; breek; geval 5: redVal = 252; greenVal = 0; blueVal = 252-fs; breek; }} leegte isr0 () {Serial.println ("\ n / n ononderbroke / n"); buttonState = digitalRead (switchPin); // lees die aanvanklike toestand vertragingMicroseconds (100000); // as (val! = buttonState) {// die knoppie toestand verander het! // as (buttonState == HOOG) {// kyk of die knoppie nou ingedruk word buttonPresses ++; //} // val = buttonState; // stoor die nuwe toestand in ons veranderlike as (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Die volgende fase was die transistor-drywers. Ek het 3 PNP -transistors met 'n maksimum stroom op 3Ampere gebruik. Nadat die voorstroom en die spanning gereguleer is, werk die LED-sender met volle intensiteit goed.
Stap 6: Kry dit selfstandig met PonyProg-verbrande selflaaiprogram
Hoe u u parallelle poort kan gebruik om die arduino -laaiprogram op 'n ATmega168 of ATmega8 te verbrand om binnekort 'n goedkoop leë chip te gebruik met die arduino -omgewing. /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
Stap 7: So is my Arduino gemoedlamp
Beoordeel my as u daarvan hou.
Aanbeveel:
Handgemaakte lae smeltpunt soldeerlegering: 5 stappe
Handgemaakte lae smeltpunt soldeerlegering: maak 'n soldeerlegering met 'n lae smeltpunt vir maklike desoldering.Besoek asseblief my blog
Handgemaakte spelkonsole met behulp van RetroPie: 7 stappe
Handgemaakte spelkonsole met behulp van RetroPie: kyk na die video hierbo om hierdie projek beter te verstaan. Goed. Dit is tyd om aan die gang te kom! Eerstens gaan ons RetroPie gebruik. Dit laat ons met twee opsies. As ons reeds Raspbian op ons SD -kaart geïnstalleer het, kan ons RetroP installeer
Klein binnenshuise handgemaakte vuurwerke: 8 stappe
Klein binnenshuise handgemaakte vuurwerke: om kinders oor elektroniese stroombane te leer, kan hierdie instelling met min toerusting gemaak word, en dit lyk goed. 'N Prettige voorbereiding vir die nuwe jaar
Circuit Playground Express (CPE) Handgemaakte tas: 5 stappe
Circuit Playground Express (CPE) Handgemaakte tas: In hierdie Instuctable kry u die stappe om u Circuit Playground Express (CPE) mikrobeheerder te kodeer met MakeCode en 'n tas te maak van 'n flanelhemp en ander materiaal. Daar is baie ruimte vir interpretasie en innovasie! Wat sal jy doen
Handgemaakte laaier vir motors: 7 stappe
Handgemaakte motorlaaieraansluiting: In ons laaste vakansie in Noorweë het ons 'n bussie gehuur om as kampeerder te gebruik; in hierdie rowwe huisvesting ontbreek een " luukse " was die afwesigheid van 'n USB-laaipunt agter in die bakkie, dit wil sê in die slaapplek, selfs in 'n afsluitbare toestand