Obsah:

Ručně vyráběná RGB náladová lampa napájená Arduinem: 7 kroků
Ručně vyráběná RGB náladová lampa napájená Arduinem: 7 kroků

Video: Ručně vyráběná RGB náladová lampa napájená Arduinem: 7 kroků

Video: Ručně vyráběná RGB náladová lampa napájená Arduinem: 7 kroků
Video: Jak vznikají ručně vyráběné tenisky v ČR 2024, Listopad
Anonim
Ručně vyráběná RGB Moodlamp napájená Arduinem
Ručně vyráběná RGB Moodlamp napájená Arduinem
Ručně vyráběná RGB Moodlamp napájená Arduinem
Ručně vyráběná RGB Moodlamp napájená Arduinem

Tento návod je rozdělen na 5 částí:- Plánování stavby (Krok 1)- Ručně vyráběné stínítko (Krok 2+3)- Elektronický obvod pro ovládání 3W LED diod pomocí ovladače ATmega8 (Krok 4)- Kód (Krok 5)- Jak jej získat samostatný (flashujte zavaděč Arduino pomocí PonyProg a vypalte skicu) (krok 6) již brzy Vid: Some Impressions

de.youtube.com/watch?v=apZ9NpaUG84 Pic1: The Moodlamp Pic2: Mighty 3W LED

Krok 1: Plánování stavby:

Plánování stavby
Plánování stavby
Plánování stavby
Plánování stavby

Rád dělám koncept na jediném listu papíru. Na prvním listu vidíte několik raných nápadů. „Vybral jsem si design v pravém dolním rohu. Druhá stránka ukazuje některé detaily stavby. Měření jsou experimentální jako pokaždé, ale pro mě v pořádku;-) Moje hardwarové myšlenky byly:- Mohu zvládnout materiály?- Bude světlo svítit skrz stín? - Jaký poměr by to mělo mít - Kolik knoflíků a hrnců budu potřebovat pro jednoduché rozhraní? Softwarové myšlenky byly: Kolik různých funkcí by měla lampa mít? - Automatické vyblednutí RGB s proměnlivou rychlostí - Ruční nastavení barev - Bílá s nastavitelným jasem

Krok 2: Ručně vyrobený odstín

Ručně vyráběný odstín
Ručně vyráběný odstín
Ručně vyráběný odstín
Ručně vyráběný odstín
Ručně vyrobený odstín
Ručně vyrobený odstín

Shromažďování materiálů: Stín: V obchodě jsem našel plech o rozměrech 3 stopy x 3 stopy z 30milionového plastu (obr. 1-3). Ořízněte jej ostrým nožem. Plast jsem namrazil brusným papírem (obr. 4–6). získejte hladký válec Po provrtání správných otvorů jsem to všechno sešrouboval (obr. 7-8). Namontujte plastové stínítka na závitové mosazné podpěry. Vypadá to pěkně a je docela snadné se s tím manipulovat. Vyvrtal jsem a poklepal otvory tak, aby odpovídaly 1/8. Závitové liště (obr.. Aby se z hřídele nedostalo příliš mnoho odstínů, postavím malou klec ze svařovací tyče s maticí M8 nahoře (obr. Malé šrouby a matice byly trochu složité, ale o 30 minut později jsem to udělal.

Krok 3: Ručně vyrobený odstín

Ručně vyráběný odstín
Ručně vyráběný odstín
Ručně vyráběný odstín
Ručně vyráběný odstín
Ručně vyrobený odstín
Ručně vyrobený odstín

Základna: Kotouče byly upnuty v soustruhu, aby byly hladké a kulaté. Poté jsem jej obarvil mořidlem na mahagonové dřevo, aby borovice vypadala dobře. Co dál?!? Rozhodl jsem se vytvořit základnu pomocí stejného matný plast jako stínidlo a podsvícení RGB microLED (obr.

Krok 4: Elektrický obvod:

Elektrický obvod
Elektrický obvod
Elektrický obvod
Elektrický obvod
Elektrický obvod
Elektrický obvod

Na prvním obrázku vidíte moje schéma. A tady je další video: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1

Krok 5: Kód:

Kód
Kód
Kód
Kód
Kód
Kód

Na obrázcích vidíte můj postup s Arduinem. Nejprve jsem vyzkoušel svůj vlastní protokol ProtoShield, baterii a několik druhů LED. Začal jsem s „Spooky Projects“a „BionicArduino“od TodEKurt před několika měsíci. Http://todbot.com/blog/spookyarduino/Můj kód je jen ošemetná kombinace jeho kódu projektu. „RGBMoodlight“, „RGBPotMixer“a některá rozšíření. Tři analogové vstupy a jeden digitální vstup jako přepínač režimu (Díky Ju. za rutinu přerušení:). LED diody jsou připojeny na D9, D10 a D11, které podporují PulseWithModulation. Pokud chcete, mohu skicu zveřejnit, ale je to opravdu holá kombinace těchto dvou skvělých kódů. Zde je můj původní kód lampy. Vypadá to trochu chaoticky, protože to byl můj velmi raná fáze programování … Ale pokud to zkopírujete, mělo by to fungovat skvěle. Existují jemné mírumilovnosti, jako „PotColorMixer“, „RGBfadingFunction“a Interrupt-Routine pro přepínač režimů./* nejo June2008

Kód pro moji „Moodlamp“, založený na „dimmingLED“od Clay Shirky

*nejo září 2008

  • Konečný kód pro lampu s přepínačem režimů přerušení, analogovou rychlou volbou pro vyblednutí RGB a změnu barvy RGB.
  • Funkce stmívání funguje pouze pro bílou barvu

*nejo říjen 2008

  • Zvukové rozšíření pro moodlamp:
  • Kondenzátorový mikrofon s malým zesilovačem LM368, přijímačem a nízkoprůchodovým filtrem RC
  • s dalším analogovým vstupem používám funkci RGBPotMixer ke změně barvy získáním mikrofonního signálu.

* * * Kód pro křížové vyblednutí 3 LED diod, červené, zelené a modré nebo jedné tříbarevné LED pomocí PWM

  • Program pomalu přechází z červené na zelenou, zelenou na modrou a modrou na červenou
  • Ladicí kód předpokládá Arduino 0004, protože používá nové funkce stylu Serial.begin ()
  • původně „dimmingLEDs“od Clay Shirky

*

  • AnalogRead je na Pin A0 povolen pro změnu rychlosti blednutí RGB
  • AnalogRead je povolen na Pin A2 pro změnu barvy hueRGB

* * */#include // Outputint ledPin = 13; // controlPin pro laděníint redPin = 9; // Červená LED, připojeno k digitálnímu pinu 9int greenPin = 10; // Zelená LED, připojená k digitálnímu pinu 10int bluePin = 11; // Modrá LED, připojená k digitálnímu pinu 11int dimredPin = 3; // Piny pro analogovou hodnotu stmívání, připojené k ovladači tranzistoru dimgreenPin = 5; int dimbluePin = 6; // Inputint switchPin = 2; // přepínač je připojen na pin D2int val = 0; // proměnná pro čtení pin statusint buttonState; // proměnná pro podržení stavu tlačítka buttonPresses = 0; // 3 stisknutí pro spuštění! Int potPin0 = 0; // Pot pro úpravu zpoždění mezi vyblednutím v Moodlampu; int potPin2 = 2; // Výstup potenciometru pro změnu hueRGB colorint potVal = 0; // Proměnná pro uložení vstupu z potenciometruint maxVal = 0; // hodnota pro uložení faktoru stmívání je výchozí 255, pokud není připojen žádný pot nebo dimPin = 4; // Pot připojen k A4 ke snížení jasu // Program proměnnéint redVal = 255; // Proměnné pro uložení hodnot k odeslání do pinsint greenVal = 1; // Počáteční hodnoty jsou plná červená, zelená a modrá off blueVal = 1; int i = 0; // Počítadlo smyček int počkejte; // = 15; // 50ms (.05 sekund) zpoždění; zkrátit pro rychlejší fadesint k = 0; // hodnota pro controlLED v blink-functionint DEBUG = 0; // počitadlo DEBUG; pokud je nastaven na 1, zapíše hodnoty zpět přes serialint LCD = 0; // LCD čítač; pokud je nastaven na 1, zapíše hodnoty zpět přes serialvoid setup () {pinMode (ledPin, OUTPUT); pinMode (redPin, OUTPUT); // nastaví piny jako výstupní pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // nastaví piny jako výstupní pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Nastavte přepínač jako vstup attachInterrupt (0, isr0, RISING); if (DEBUG) {// Pokud chceme vidět hodnoty pinů pro ladění … Serial.begin (9600); //… nastavit sériový výstup ve stylu 0004}} // Hlavní programvoid loop () {if (buttonPresses == 0) {Moodlamp (); // volá funkci Moodlight} if (buttonPresses == 1) {RGBPotMixer (); // volá funkci mixu manuel} if (buttonPresses == 2) {White (); // Tady je všechno bílé} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); //Bílý(); Monitor(); dim ();} void Monitor () {// Odeslat stav na monitor, pokud (DEBUG) {// Pokud chceme přečíst výstup DEBUG += 1; // Zvýšení počitadla DEBUG if (DEBUG> 10) {// Tisk každých 10 smyček DEBUG = 1; // Reset počítadla Serial.print (i); // Sériové příkazy ve stylu 0004 Serial.print ("\ t"); // Tisk záložky Serial.print ("R:"); // Uveďte, že výstupem je červená hodnota Serial.print (redVal); // Tisk červené hodnoty Serial.print ("\ t"); // Tisk záložky Serial.print ("G:"); // Opakujte pro zelenou a modrou … Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, na konec s návratem na konec Serial.print ("\ t"); Serial.print ("dimValue:"); Serial.print (maxVal); // println, na konec s návratem na konec Serial.print ("\ t"); Serial.print ("čekejte:"); Serial.print (čekání); // zapíše hodnotu potPin0 na monitor Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serial.print (potVal); // zapíše hodnotu potPin0 na monitor Serial.print ("\ t"); Serial.print ("stav tlačítka:"); Serial.print (buttonState); // zapíše hodnotu potPin0 na monitor Serial.print ("\ t"); Serial.print ("ButtonPresses:"); Serial.println (stisknutí tlačítka); // zapíše hodnotu buttonPresses na monitor}}} void dim () // Funkce pro stmívání White // možná později pro všechny režimy {maxVal = analogRead (dimPin); maxVal /= 4; // Analogový rozsah od 0..1024 příliš mnoho pro stmívání hodnoty 0..255 analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // hledejte hodnotu z potPin0; // pokud není připojen žádný Pot: počkejte 255 i += 1; // Počítadlo přírůstků // i = i - maxVal; if (i <255) // První fáze mizí {redVal -= 1; // Červená dolů zelenáVal += 1; // Zelená do modraVal = 1; // Modrá nízká} else if (i <509) // Druhá fáze mizí {redVal = 1; // Červená nízká zelenáVal -= 1; // Zelená dolů modráVal += 1; // Blue up} else if (i <763) // Third phase fades {redVal += 1; // Red up greenVal = 1; // Zelená lo2 blueVal -= 1; // Modré dolů} else // Znovu nastavte počitadlo a začněte znovu mizet {i = 1; } // místo „redVal“děláme „255 -redVal“, protože // LED diody jsou místo Gnd analogWrite připojeny až na +5V (redPin, 255 - redVal); // Zapisujte aktuální hodnoty na LED piny analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // stmívání 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); // Zapisujte aktuální hodnoty na LED piny analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / počkat / = 4; zpoždění (čekání); // Pauza na „čekání“milisekund před obnovením smyčky} neplatné RGBPotMixer () {potVal = analogRead (potPin2); // načtení hodnoty potenciometru na vstupním pinu potVal = potVal / 4; // převod z 0-1023 na 0-255 hue_to_rgb (potVal); // zacházejte s potVal jako s odstínem a převádějte na hodnoty RGB // "255-" je proto, že máme LED diody se společnou anodou, nikoli analogovouWrite (redPin, 255-redVal); // Zapisování hodnot na LED piny analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } void White () {analogWrite (redPin, maxVal); // Zapisování hodnot na LED piny analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*

  • Vzhledem k proměnlivému odstínu 'h', který se pohybuje od 0-252,
  • vhodně nastavit hodnotu barvy RGB.
  • Předpokládá max. Saturaci a maximální hodnotu (jas)
  • Provádí čistě celočíselnou matematiku, bez plovoucí desetinné čárky.

*/void hue_to_rgb (byte hue) {if (hue> 252) hue = 252; // zpět na 252 !! nejo byte hd = hue / 42; // 36 == 252/7, 252 == H_MAX byte hi = hd % 6; // dává 0-5 bajtů f = odstín % 42; byte fs = f * 6; switch (hi) {case 0: redVal = 252; greenVal = fs; blueVal = 0; přestávka; případ 1: redVal = 252-fs; greenVal = 252; blueVal = 0; přestávka; případ 2: redVal = 0; greenVal = 252; blueVal = fs; přestávka; případ 3: redVal = 0; greenVal = 252-fs; blueVal = 252; přestávka; případ 4: redVal = fs; greenVal = 0; blueVal = 252; přestávka; případ 5: redVal = 252; greenVal = 0; blueVal = 252-fs; přestávka; }} void isr0 () {Serial.println ("\ n / n přerušení / n"); buttonState = digitalRead (switchPin); // přečtení počátečního stavu delayMicroseconds (100000); // if (val! = buttonState) {// stav tlačítka se změnil! // if (buttonState == HIGH) {// zkontrolujte, zda je tlačítko nyní stisknuto buttonPresses ++; //} // val = buttonState; // uložíme nový stav do naší proměnné if (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Další fází byly budiče tranzistorů. Použil jsem 3 PNP tranzistory s maximálním proudem na 3A. Poté, co byl regulován dopředný proud a napětí, LEDemitter fungoval skvěle s plnou intenzitou.

Krok 6: Získejte to samostatně pomocí bootloaderu vypáleného PonyProg

Získejte to samostatně s bootloaderem vypáleným PonyProg
Získejte to samostatně s bootloaderem vypáleným PonyProg

Jak použít paralelní port k vypálení zavaděče arduino na ATmega168 nebo ATmega8 a použít levný prázdný čip s prostředím arduino.com brzy ….. možná na samostatném pokynu Zde je také dobrý návod k použití samostatného čipu: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

Krok 7: Tak to je moje náladová lampa Arduino

To je moje náladová lampa Arduino
To je moje náladová lampa Arduino

Pokud se vám to líbilo, ohodnoťte mě.

Doporučuje: