Obsah:

Ručne vyrábaná RGB náladová lampa napájaná Arduino: 7 krokov
Ručne vyrábaná RGB náladová lampa napájaná Arduino: 7 krokov

Video: Ručne vyrábaná RGB náladová lampa napájaná Arduino: 7 krokov

Video: Ručne vyrábaná RGB náladová lampa napájaná Arduino: 7 krokov
Video: Ručne vyrábané kresadlo #priroda #outdoors #bushcraft 2024, December
Anonim
Ručne vyrábaná RGB náladová lampa napájaná Arduinom
Ručne vyrábaná RGB náladová lampa napájaná Arduinom
Ručne vyrábaná RGB náladová lampa napájaná Arduinom
Ručne vyrábaná RGB náladová lampa napájaná Arduinom

Tento návod je rozdelený na 5 častí:- Plánovanie stavby (krok 1)- Ručne vyrobený tienidlo (krok 2+3)- Elektronický obvod na napájanie 3W diód LED pomocou ovládača ATmega8 (krok 4)- Kód (krok 5)- ako ho získať samostatné (spustite zavádzač Arduino pomocou PonyProg a napíšte náčrt) (krok 6) už čoskoro Vid: Some Impressions

de.youtube.com/watch?v=apZ9NpaUG84 Obr. 1: The Moodlamp Obr. 2: Silná 3 W LED dióda

Krok 1: Plánovanie stavby:

Plánovanie stavby
Plánovanie stavby
Plánovanie stavby
Plánovanie stavby

Rád robím koncept iba na jednom hárku papiera. Na prvom hárku vidíte niekoľko raných nápadov. „Vybral som si dizajn vpravo dole. Druhá stránka ukazuje niektoré detaily stavby. Merania sú experimentálne ako vždy, ale pre mňa v poriadku;-) Moje hardvérové myšlienky boli:- Môžem zvládnuť materiály?- Bude svetlo svietiť cez tieň? - Aký podiel by to malo mať? - Koľko gombíkov a hrncov budem potrebovať na jednoduché rozhranie? Moje softvérové myšlienky boli: Koľko rôznych funkcií by mala lampa mať? - Automatické blednutie RGB s meniteľnou rýchlosťou - Ručné nastavenie farieb - Biela s nastaviteľným jasom

Krok 2: Ručne vyrobený odtieň

Ručne vyrobený tienidlo
Ručne vyrobený tienidlo
Ručne vyrobený tienidlo
Ručne vyrobený tienidlo
Ručne vyrobený tienidlo
Ručne vyrobený tienidlo

Zhromažďovanie materiálov: Tienidlo: V obchode som našiel plech s rozmermi 3 stopy x 3 stopy z 30-milimetrového plastu (obr. 1-3). Orezajte ho ostrým nožom. Plast som zmrazil brúsnym papierom (obr. 4–6). získajte hladký valec, všetko som zaskrutkoval po vyvŕtaní správnych otvorov (obr. 7-8). Namontujte plastové tienidlá na závitové mosadzné podpery. Vyzerá to pekne a manipulácia s ním je pomerne jednoduchá. Vyvŕtal som otvory a poklepal na ne, aby zodpovedali 1/8 závitovej lište (Obr. 9-10). Medzitým som vyrobil chladič, ktorý ochladí 3W LED diódy a má pevný základ.. Aby som z hriadeľa nedostal príliš veľa odtieňov, postavím malú klietku zo zváracej tyče s maticou M8 na vrchu (obr. 12). Keď som skončil, zostavil som všetko dohromady. Malé skrutky a matice boli trochu zložité, ale o 30 minút neskôr som to urobil.

Krok 3: Ručne vyrobený odtieň

Ručne vyrobený tienidlo
Ručne vyrobený tienidlo
Ručne vyrobený tienidlo
Ručne vyrobený tienidlo
Ručne vyrobený tienidlo
Ručne vyrobený tienidlo

Základňa: Kotúče boli v sústruhu zasunuté, aby boli hladké a okrúhle. Potom som ho zafarbil lazúrou na mahagónové drevo, aby borovica vyzerala dobre. Čo ďalej?!? Rozhodol som sa vytvoriť základňu pomocou rovnakého matný plast ako tienidlo a podsvietenie RGB microLED (obr. 5). Gombíky: gombík som vyrobil z kusu mahagónu a gombíky z odrezku orecha.

Krok 4: Elektrický obvod:

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

Na prvom obrázku vidíte moju schému. A tu je ďalšie 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ázkoch vidíte môj postup s Arduinom. Najprv som vyskúšal svoj vlastnoručne vyrobený ProtoShield, batériu a niekoľko druhov diód LED. Začal som s „Spooky Projects“a „BionicArduino“od TodEKurt pred niekoľkými mesiacmi. Http://todbot.com/blog/spookyarduino/Môj kód je len ošemetná kombinácia jeho kódu projektu. „RGBMoodlight“, „RGBPotMixer“a niektoré rozšírenia. Tri prepínače režimu analogový a jeden digitálny vstup (Vďaka Ju. za rutinu prerušenia:). LED diódy sú prepojené na D9, D10 a D11, ktoré podporujú PulseWithModulation. Ak chcete, môžem náčrt zverejniť, ale je to skutočne holá kombinácia týchto dvoch skvelých kódov. Tu je môj pôvodný kód žiarovky. Vyzerá to trochu chaoticky, pretože to bol môj veľmi raná fáza programovania … Ale ak to skopírujete, malo by to fungovať skvele. Existujú jemné mieri, ako napríklad „PotColorMixer“, „RGBfadingFunction“a prerušenie-rutina pre prepínač režimov./* nejo June 2008

Kód pre moju „Moodlamp“založený na „dimmingLEDs“od Claya Shirkyho

*nejo Sep2008

  • Konečný kód pre lampu s prepínačom režimov prerušenia, analógovou rýchlou voľbou pre blednutie RGB a zmenu farby RGB.
  • Funkcia stmievania funguje iba pre bielu farbu

*nejo október2008

  • Zvukové rozšírenie pre lampu s náladou:
  • Kondenzátorový mikrofón s malým zosilňovačom LM368, zosilňovačom a nízkopriepustným filtrom RC
  • s iným analógovým vstupom Na zmenu farby pomocou mikrofónového signálu používam funkciu RGBPotMixer.

* * * Kód pre krížové vyblednutie 3 LED diód, červenej, zelenej a modrej alebo jednej trojfarebnej LED diódy pomocou PWM

  • Program pomaly prechádza z červenej na zelenú, zelenú na modrú a modrú na červenú
  • Ladiaci kód predpokladá Arduino 0004, pretože používa nové funkcie štýlu Serial.begin ()
  • pôvodne „dimmingLEDs“od Claya Shirkyho

*

  • Na kolíku A0 je povolená funkcia AnalogRead, ktorá mení rýchlosť blednutia RGB
  • Na kolíku A2 je aktivovaná funkcia AnalogRead na zmenu farby hueRGB

* * */#include // Outputint ledPin = 13; // controlPin pre ladenieint redPin = 9; // Červená LED dióda, pripojená k digitálnemu pinu 9int greenPin = 10; // Zelená LED dióda, pripojená k digitálnemu pinu 10int bluePin = 11; // Modrá LED dióda, pripojená k digitálnemu pinu 11int dimredPin = 3; // Piny pre hodnotu analógového stmievania, pripojené k ovládaču tranzistora dimgreenPin = 5; int dimbluePin = 6; // Inputint switchPin = 2; // prepínač je pripojený na pin D2int val = 0; // premenná na čítanie pin statusint buttonState; // premenná, ktorá drží stav tlačidla tlačidloStlačí = 0; // 3 stlačenia idú! Int potPin0 = 0; // Pot pre úpravu oneskorenia medzi vyblednutím v Moodlamp; int potPin2 = 2; // Výstup potenciometra na zmenu hueRGB colorint potVal = 0; // Premenná na uloženie vstupu z potenciometraint maxVal = 0; // hodnota na uloženie predvoleného faktora stmievania je 255, ak nie je pripojený žiadny pot alebo dimPin = 4; // Hrniec pripojený k formátu A4 na zníženie jasu // Programové premennéint redVal = 255; // Premenné na uloženie hodnôt, ktoré sa majú odoslať na pinsint greenVal = 1; // Počiatočné hodnoty sú červená plná, zelená a modrá off blueVal = 1; int i = 0; // Počítadlo slučiek int wait; // = 15; // oneskorenie 50 ms (0,05 sekundy); skrátiť pre rýchlejší blednutie k = 0; // hodnota pre controlLED v blikajúcej funkciiint DEBUG = 0; // počítadlo DEBUG; ak je nastavený na 1, zapíše hodnoty späť cez serialint LCD = 0; // LCD počítadlo; ak je nastavený na 1, zapíše hodnoty späť cez serialvoid setup () {pinMode (ledPin, OUTPUT); pinMode (redPin, OUTPUT); // nastaví piny ako výstupný pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // nastaví piny ako výstupný pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Nastavte prepínací pin ako vstup attachInterrupt (0, isr0, RISING); if (DEBUG) {// Ak chceme vidieť hodnoty pinov pre ladenie … Serial.begin (9600); //… nastaviť sériový výstup na štýl 0004}} // Hlavná slučka vyhnúť sa programu () {if (buttonPresses == 0) {Moodlamp (); // volá funkciu Moodlight} if (buttonPresses == 1) {RGBPotMixer (); // volá funkciu mixu manuel} if (buttonPresses == 2) {White (); // Tu je všetko biele} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); //Biely(); Monitor (); dim ();} void Monitor () {// Odoslanie stavu na monitor, ak (DEBUG) {// Ak chceme čítať výstup DEBUG += 1; // Zvýšte počítadlo DEBUG, ak (DEBUG> 10) {// Tlač každých 10 slučiek DEBUG = 1; // Reset počítadla Serial.print (i); // Sériové príkazy v štýle 0004 Serial.print ("\ t"); // Vytlačenie karty Serial.print ("R:"); // Uveďte, že výstupom je červená hodnota Serial.print (redVal); // Vytlačiť červenú hodnotu Serial.print ("\ t"); // Vytlačenie karty Serial.print ("G:"); // Opakujte pre zelenú a modrú … Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, na koniec návratom vozíka Serial.print ("\ t"); Serial.print ("dimValue:"); Serial.print (maxVal); // println, na koniec návratom vozíka Serial.print ("\ t"); Serial.print ("čakať:"); Serial.print (čakať); // 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 ("StateStav:"); Serial.print (buttonState); // zapíše hodnotu potPin0 na monitor Serial.print ("\ t"); Serial.print ("PressPresses: "); Serial.println (stlačenia tlačidiel); // zapíše hodnotu buttonPresses na monitor}}} void dim () // Funkcia na stmievanie White // možno neskôr pre všetky režimy {maxVal = analogRead (dimPin); maxVal /= 4; // Analógový rozsah od 0..1024 príliš veľa na stlmenie hodnoty 0..255 analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // vyhľadajte hodnotu z potPin0; // ak nie je pripojený žiadny hrniec: počkajte 255 i += 1; // Počítadlo prírastkov // i = i - maxVal; if (i <255) // Prvá fáza vyblednutia {redVal -= 1; // Červená dole zelenáVal += 1; // Zelená až modráVal = 1; // Modrá nízka} else if (i <509) // Druhá fáza mizne {redVal = 1; // Červená nízka zelenáVal -= 1; // Zelená dole modráVal += 1; // Modré pozadie} else if (i <763) // Tretia fáza vyblednutia {redVal += 1; // Červená až zelenáVal = 1; // Zelená lo2 blueVal -= 1; // Modré dole} else // Znovu nastavte počítadlo a začnite znova miznúť {i = 1; } // namiesto „redVal“robíme „255 -redVal“, pretože // LED diódy sú zapojené až do +5V namiesto Gnd analogWrite (redPin, 255 - redVal); // Zapisovanie aktuálnych hodnôt na LED kolíky analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // stmievanie 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); // Zapisovanie aktuálnych hodnôt na LED piny analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / čakať / = 4; oneskorenie (čakanie); // Pauza na „počkanie“milisekúnd pred obnovením cyklu} neplatné RGBPotMixer () {potVal = analogRead (potPin2); // odčítanie hodnoty potenciometra na vstupnom pine potVal = potVal / 4; // prevod z 0-1023 na 0-255 hue_to_rgb (potVal); // zaobchádzajte s potVal ako s odtieňom a prevádzajte ho na hodnoty RGB // „255-“je preto, že máme LED diódy so spoločnou anódou, nie analógovéWaterode analogWrite (redPin, 255-redVal); // Zapisovanie hodnôt na piny LED analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } void White () {analogWrite (redPin, maxVal); // Zapisovanie hodnôt na LED piny analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*

  • Vzhľadom na premenlivý odtieň „h“, ktorý sa pohybuje od 0 do 252,
  • vhodne nastavte hodnotu farby RGB.
  • Predpokladá max. Saturáciu a maximálnu hodnotu (jas)
  • Vykonáva čisto celočíselnú matematiku, bez pohyblivej rádovej čiarky.

*/void hue_to_rgb (byte hue) {if (hue> 252) hue = 252; // zastavenie na 252 !! nejo byte hd = hue / 42; // 36 == 252/7, 252 == H_MAX byte hi = hd % 6; // dáva 0-5 bajtov f = odtieň % 42; bajt fs = f * 6; prepínač (hi) {prípad 0: redVal = 252; greenVal = fs; blueVal = 0; prestávka; prípad 1: redVal = 252-fs; greenVal = 252; blueVal = 0; prestávka; prípad 2: redVal = 0; greenVal = 252; blueVal = fs; prestávka; prípad 3: redVal = 0; greenVal = 252-fs; blueVal = 252; prestávka; prípad 4: redVal = fs; greenVal = 0; blueVal = 252; prestávka; prípad 5: redVal = 252; greenVal = 0; blueVal = 252-fs; prestávka; }} void isr0 () {Serial.println ("\ n / n prerušenie / n"); buttonState = digitalRead (switchPin); // prečítanie počiatočného stavu delayMicroseconds (100000); // if (val! = buttonState) {// stav tlačidla sa zmenil! // if (buttonState == HIGH) {// skontroluje, či je tlačidlo teraz stlačené buttonPresses ++; //} // val = buttonState; // uloženie nového stavu do našej premennej if (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Ďalšou fázou boli budiče tranzistorov. Použil som 3 PNP tranzistory s maximálnym prúdom na 3A. Potom, čo bol regulovaný prúd a napätie vpred, LEDemitter fungoval skvele s plnou intenzitou.

Krok 6: Zaistite to samostatne pomocou bootloadera vypáleného PonyProg

Získajte to samostatne s bootloaderom vypáleným PonyProg
Získajte to samostatne s bootloaderom vypáleným PonyProg

Ako použiť paralelný port na napaľovanie arduino bootloadera na ATmega168 alebo ATmega8 na použitie lacného prázdneho čipu v prostredí arduino.com už čoskoro ….. možno na samostatnom pokyne Tu je tiež dobrý návod na použitie samostatného čipu: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

Krok 7: To je moja náladová lampa Arduino

To je moja náladová lampa Arduino
To je moja náladová lampa Arduino

Ak sa vám páčilo, ohodnoťte ma.

Odporúča: