Sommario:
- Fase 1: Pianificazione della costruzione:
- Passaggio 2: l'ombra fatta a mano
- Passaggio 3: l'ombra fatta a mano
- Fase 4: Il circuito elettrico:
- Passaggio 5: il codice:
- Passaggio 6: scaricalo da solo con il bootloader masterizzato con PonyProg
- Passaggio 7: questa è la mia lampada d'atmosfera Arduino
Video: Lampada d'atmosfera RGB realizzata a mano con Arduino: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:05
Questa istruzione è suddivisa in 5 parti:- Pianificazione della costruzione (Step1)- Il paralume fatto a mano (Step2+3)- Il circuito elettronico per pilotare LED da 3W con il controller ATmega8 (Step4)- Il codice (Step5)- Come ottenerlo stand-alone (flash del bootloader Arduino con PonyProg e masterizzare lo sketch) (Step6) in arrivo Vid: Some Impressions
de.youtube.com/watch?v=apZ9NpaUG84 Pic1: La lampada d'atmosfera Pic2: Un potente LED da 3W
Fase 1: Pianificazione della costruzione:
Amo fare un concetto su un solo foglio di carta. Sul primo foglio vedi alcune prime idee. Ho scelto il design in basso a destra. La seconda pagina mostra alcuni dettagli per la costruzione. Le misure sono sperimentali come ogni volta, ma per me va bene;-) I miei pensieri sull'hardware erano:- Posso gestire i materiali?- La luce brillerà attraverso il paralume?- Che proporzione dovrebbe avere?- Di quante manopole e pentole avrò bisogno per un'interfaccia semplice?I miei pensieri sul software erano: Quante diverse funzioni dovrebbe avere la lampada? - Dissolvenza RGB automatica con velocità variabile - Regolazione manuale del colore - Bianco con luminosità regolabile
Passaggio 2: l'ombra fatta a mano
Raccolta dei materiali: L'ombra: ho trovato un foglio di 3 piedi x 3 piedi di plastica da 30 millimetri al negozio (foto 1-3). Usa un coltello affilato per tagliarlo. Ho smerigliato la plastica usando carta vetrata (foto 4-6). ottenere un cilindro liscio ho avvitato il tutto dopo aver praticato i fori giusti (Pic7-8). Montare le sfumature di plastica sui supporti filettati in ottone. Ha un bell'aspetto ed è piuttosto facile da ottenere e maneggiare. Ho praticato e filettato i fori per far combaciare la barra filettata 1/8 (Pic9-10). Nel frattempo, ho realizzato un dissipatore di calore per raffreddare i LED da 3 W e per avere una base solida. Per non ottenere troppe sfumature dall'albero, ho costruito una piccola gabbia in tondino di saldatura con un dado M8 sulla parte superiore (Pic12). Come finitura ho assemblato il tutto. Le piccole viti e i dadi erano un po' complicati, ma 30 minuti dopo ce l'ho fatta.
Passaggio 3: l'ombra fatta a mano
La base: I dischi sono stati inseriti nel tornio per renderlo liscio e rotondo. Successivamente, l'ho colorato con una tinta per legno di mogano in modo da rendere il pino un bell'aspetto. E poi?!? Ho deciso di fare una base usando lo stesso plastica smerigliata come paralume e retroilluminarlo con un microLED RGB (Pic5). Le manopole: ho realizzato il pulsante da un pezzo di mogano e le manopole da un ritaglio di legno di noce.
Fase 4: Il circuito elettrico:
Nella prima foto vedi il mio schema. Ed ecco un altro video:
Passaggio 5: il codice:
Nelle foto vedete il mio processo con Arduino. Per prima cosa ho provato con il mio ProtoShield fatto da me, un pacco batteria e alcuni tipi di LED. Ho iniziato con "Spooky Projects" e "BionicArduino" di TodEKurt alcuni mesi fa.https://todbot.com/blog/spookyarduino/Il mio codice è solo una combinazione complicata del suo codice di progetto."RGBMoodlight", "RGBPotMixer"e alcune estensioni. Tre ingressi analogici e uno digitale come interruttore di modalità (grazie a Ju. per la routine di interrupt:). I LED sono collegati a D9, D10 e D11 che supportano PulseWithModulation. Se vuoi, posso pubblicare lo schizzo, ma è una combinazione davvero spoglia di questi due fantastici codici. Ecco il mio codice originale della lampada. Sembra un po' disordinato, perché era il mio molto presto nella programmazione…Ma se lo copi, dovrebbe funzionare alla grande. Ci sono ottimi pezzi, come "PotColorMixer", "RGBfadingFunction" e Interrupt-Routine per il cambio di modalità./* nejo June2008
Codice per la mia "Moodlamp", basata su "dimmingLEDs" di Clay Shirky
*nejo settembre2008
- Codice finale per la lampada mood con interruttore di modalità di interruzione, selezione rapida analogica per dissolvenza RGB e cambio colore RGB.
- La funzione di attenuazione funziona solo per il colore bianco
*nejo ottobre2008
- Estensione sonora per la moodlamp:
- Un microfono a condensatore con un minuscolo amplificatore LM368, un raddrizzatore e un filtro passa-basso RC
- con un altro ingresso analogico uso la funzione RGBPotMixer per cambiare il colore ottenendo il segnale del microfono.
* * *Codice per la dissolvenza incrociata di 3 LED, rosso, verde e blu, o un LED a tre colori, utilizzando PWM
- Il programma passa lentamente dal rosso al verde, dal verde al blu e dal blu al rosso
- Il codice di debug assume Arduino 0004, poiché utilizza le nuove funzioni in stile Serial.begin()
- originariamente "dimmingLEDs" di Clay Shirky
*
- AnalogRead è abilitato sul Pin A0 per variare la velocità di dissolvenza RGB
- AnalogRead è abilitato sul Pin A2 per variare il colore hueRGB
* * */#include // Outputint ledPin = 13; // controlPin per debuggingint redPin = 9; // LED rosso, connesso al pin digitale 9int greenPin = 10; // LED verde, connesso al pin digitale 10int bluePin = 11; // LED blu, connesso al pin digitale 11int dimredPin = 3; // Pin per il valore di dimmeraggio analogico, collegati al driver del transistorint dimgreenPin = 5;int dimbluePin = 6;// Inputint switchPin = 2; // l'interruttore è collegato al pin D2int val = 0; // variabile per la lettura del pin statusint buttonState; // variabile per tenere premuto il pulsante stateint buttonPresses = 0; // 3 pressioni per andare!int potPin0 = 0; // Pot per regolare il ritardo tra la dissolvenza in Moodlamp; int potPin2 = 2; // Uscita potenziometro per cambiare il colorante hueRGB potVal = 0; // Variabile per memorizzare l'input dal potenziometroint maxVal = 0; // il valore per salvare il fattore di regolazione predefinito è 255, se non è collegato alcun Potint dimPin = 4; //Pot collegato ad A4 per attenuare la luminosità// Variabili di programmaint redVal = 255; // Variabili per memorizzare i valori da inviare al pinsint greenVal = 1; // I valori iniziali sono Rosso pieno, Verde e Blu offint blueVal = 1;int i = 0; // Contatore di loop int wait;// = 15; // Ritardo di 50 ms (0,05 secondi); accorciare per dissolvenze più veloci k = 0; // valore per il controlLED nella funzione blinkint DEBUG = 0; // contatore di DEBUG; se impostato a 1, riscriverà i valori tramite serialint LCD = 0; // Contatore LCD; se impostato a 1, riscriverà i valori tramite serialvoid setup(){ pinMode(ledPin, OUTPUT); pinMode(redPin, OUTPUT); // imposta i pin come output pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); pinMode(dimredPin, OUTPUT); pinMode(dimgreenPin, OUTPUT); // imposta i pin come output pinMode(dimbluePin, OUTPUT); pinMode(potPin2, INPUT); // pinMode(potPin0, INPUT); // pinMode(dimPin, INPUT); // pinMode(switchPin, INPUT); // Imposta il pin dello switch come input attachInterrupt(0, isr0, RISING); if (DEBUG) { // Se vogliamo vedere i valori dei pin per il debug… Serial.begin(9600); // …imposta l'uscita seriale sullo stile 0004 }}// Main programvoid loop(){ if (buttonPresses == 0) { Moodlamp(); // chiama la funzione Moodlight } if (buttonPresses == 1) { RGBPotMixer(); // chiama la funzione manuel mix } if (buttonPresses == 2) { White(); // Qui è tutto bianco } if (buttonPresses == 3) { } //Moodlamp(); //RGBPotMixer(); //Bianco(); Tenere sotto controllo(); dim();}void Monitor(){ // Invia lo stato al monitor if (DEBUG) { // Se vogliamo leggere l'output DEBUG += 1; // Incrementa il contatore DEBUG if (DEBUG > 10) { // Stampa ogni 10 cicli DEBUG = 1; // Reimposta il contatore Serial.print(i); // Comandi seriali in stile 0004 Serial.print("\t"); // Stampa una scheda Serial.print("R:"); // Indica che l'output è il valore rosso Serial.print(redVal); // Stampa il valore in rosso Serial.print("\t"); // Stampa una scheda Serial.print("G:"); // Ripeti per verde e blu… Serial.print(greenVal); Serial.print("\t"); Serial.print("B:"); Serial.print(blueVal); // println, per terminare con un ritorno a capo Serial.print("\t"); Serial.print("dimValue:"); Serial.print(maxVal); // println, per terminare con un ritorno a capo Serial.print("\t"); Serial.print("aspetta:"); Serial.print(attesa); // scrive il valore del potPin0 sul monitor Serial.print("\t"); Serial.print("hueRGBvalue"); Serial.print(potVal); // scrive il valore del potPin0 sul monitor Serial.print("\t"); Serial.print("Statopulsante:"); Serial.print(buttonState); // scrive il valore del potPin0 sul monitor Serial.print("\t"); Serial.print("pulsantePreme:"); Serial.println(buttonPresses); // scrive il valore del buttonPresses sul monitor } }} void dim() // Funzione per attenuare il bianco // forse più tardi per tutti i Modes{ maxVal = analogRead(dimPin); maxVal /= 4; // L'intervallo analogico da 0..1024 è eccessivo per la regolazione del valore 0..255 analogWrite(dimredPin, maxVal); analogWrite(dimgreenPin, maxVal); analogWrite(dimbluePin, maxVal);}void Moodlamp(){ wait = analogRead(potPin0); // cerca il valore dal potPin0; // se nessun Pot è connesso: wait 255 i += 1; // Incrementa il contatore // i = i - maxVal; if (i < 255) // Prima fase delle dissolvenze { redVal -= 1; // Rosso giù greenVal += 1; // Verde su blueVal = 1; // Blu basso } else if (i < 509) // Seconda fase di dissolvenze { redVal = 1; // Rosso basso greenVal -= 1; // Verde giù blueVal += 1; // Blue up } else if (i < 763) // Terza fase di dissolvenze { redVal += 1; // Red up greenVal = 1; // Verde lo2 blueVal -= 1; // Blu giù } else // Reimposta il contatore e riavvia le dissolvenze { i = 1; } // facciamo "255-redVal" invece di solo "redVal" perché i // LED sono collegati a +5V invece di Gnd analogWrite(redPin, 255 - redVal); // Scrive i valori correnti sui pin LED analogWrite(greenPin, 255 - greenVal); analogWrite(bluePin, 255 - blueVal); /* dimredVal =min(redVal - maxVal, 255); //diminuendo 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); // Scrive i valori correnti sui pin LED analogWrite(greenPin, 255 - dimgreenVal); analogWrite(bluePin, 255 - dimblueVal); */ aspetta /=4; ritardo (attesa); // Pausa per 'aspetta' millisecondi prima di riprendere il ciclo}void RGBPotMixer(){ potVal = analogRead(potPin2); // legge il valore del potenziometro al pin di ingresso potVal = potVal / 4; // converte da 0-1023 a 0-255 hue_to_rgb(potVal); // tratta potVal come tonalità e converti in rgb vals // "255-" è perché abbiamo LED ad anodo comune, non a catodo comune analogWrite(redPin, 255-redVal); // Scrive valori sui pin LED analogWrite(greenPin, 255-greenVal); analogWrite(bluePin, 255-blueVal); }void White(){ analogWrite(redPin, maxVal); // Scrive valori sui pin LED analogWrite(greenPin, maxVal); analogWrite(bluePin, maxVal); }/*
- Data una tonalità variabile 'h', che varia da 0-252,
- impostare il valore del colore RGB in modo appropriato.
- Presuppone la saturazione del valore massimo e il valore massimo (luminosità)
- Esegue matematica puramente intera, senza virgola mobile.
*/void hue_to_rgb(byte hue) { if(hue > 252) hue = 252; // ritorno al 252!! nejo byte hd = tonalità / 42; // 36 == 252/7, 252 == H_MAX byte hi = hd % 6; // restituisce 0-5 byte f = tonalità % 42; byte fs = f * 6; switch(hi) { case 0: redVal = 252; greenVal = fs; bluVal = 0; rottura; caso 1: redVal = 252-fs; greenVal = 252; bluVal = 0; rottura; caso 2: redVal = 0; greenVal = 252; blueVal = fs; rottura; caso 3: redVal = 0; greenVal = 252-fs; bluVal = 252; rottura; caso 4: redVal = fs; greenVal = 0; bluVal = 252; rottura; caso 5: redVal = 252; greenVal = 0; blueVal = 252-fs; rottura; } } void isr0(){ Serial.println("\n \n interrompe \n"); buttonState = digitalRead(switchPin); // legge lo stato iniziale delayMicroseconds(100000); //if (val != buttonState) { // lo stato del pulsante è cambiato! // if (buttonState == HIGH) { // controlla se il pulsante è ora premuto buttonPresses++; // } // val = statopulsante; // salva il nuovo stato nella nostra variabile if (buttonPresses == 3) { // zur cksetzen buttonPresses = 0; } } // }La fase successiva sono stati i driver a transistor. Ho usato 3 transistor PNP con una corrente massima su 3Ampere. Dopo aver regolato la corrente diretta e la tensione, l'emettitore LED ha funzionato alla grande con la massima intensità.
Passaggio 6: scaricalo da solo con il bootloader masterizzato con PonyProg
Come utilizzare la porta parallela per masterizzare il bootloader arduino su un ATmega168 o ATmega8 per utilizzare un chip vuoto economico con l'ambiente arduino. Presto disponibile … forse su un istruibile separato Ecco anche un buon istruttore per usare il chip autonomo: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
Passaggio 7: questa è la mia lampada d'atmosfera Arduino
Se ti è piaciuto, per favore votami.
Consigliato:
Una lampada d'atmosfera a LED da $ 1 con ATtiny13 e WS2812: 7 passaggi
Una lampada d'atmosfera a LED da $ 1 con ATtiny13 e WS2812: questa è una lampada d'atmosfera a basso costo con quattro modalità.1. Scintilla arcobaleno. Una scintilla di luce si muove di volta in volta verso l'alto e cambia gradualmente colore.2. Bagliore arcobaleno. Un bagliore stabile che cambia gradualmente colore.3. Simulazione del fuoco della candela.4. Off. Puoi
Lampada d'atmosfera a LED stampata in 3D: 15 passaggi (con immagini)
Lampada d'atmosfera a LED stampata in 3D: ho sempre avuto questo fascino per le lampade, quindi avere la capacità di combinare la stampa 3D e Arduino con i LED era qualcosa che dovevo perseguire. Il concetto è molto semplice e il risultato è uno dei visual più soddisfacenti esperienze che puoi mettere
Lampada d'atmosfera con led RGB: 4 passaggi
Mood Lamp With RGB Led: Estetista il progetto se trató de hacer una lampara de *sentimientos* utilizzando un Arduino Uno. Se necessario, vari materiali come ponticelli, led RGB o Neopixel, dipende dal modo in cui si desidera avere un adattatore. In questo caso utilizaremos led RGB con ánodo común
Moderna lampada d'atmosfera RGB: 7 passaggi (con immagini)
Moderna lampada d'atmosfera RGB: vuoi aggiungere un po' di stile alla tua scrivania? Ti abbiamo coperto con una lampada d'atmosfera fai-da-te realizzata con parti che puoi facilmente trovare in giro nel tuo garage o capannone. La nostra lampada d'atmosfera presenta un design estetico e moderno mentre ti dà il controllo completo del colore
Lampada d'atmosfera Icosaedro RGB: 9 passaggi (con immagini)
Lampada Mood Icosaedro RGB: Le forme geometriche hanno sempre catturato la nostra attenzione. Recentemente, una forma così affascinante ha stuzzicato la nostra curiosità: l'icosaedro. L'icosaedro è un poliedro con 20 facce. Ci possono essere infinite forme non simili di icosaedri, ma le migliori