Tartalomjegyzék:

Kézzel készített Arduino-meghajtású RGB hangulatlámpa: 7 lépés
Kézzel készített Arduino-meghajtású RGB hangulatlámpa: 7 lépés

Videó: Kézzel készített Arduino-meghajtású RGB hangulatlámpa: 7 lépés

Videó: Kézzel készített Arduino-meghajtású RGB hangulatlámpa: 7 lépés
Videó: 5 kreatív ajándékötlet 🎁 | Manó kuckó 2024, Július
Anonim
Kézzel készített Arduino-meghajtású RGB hangulatlámpa
Kézzel készített Arduino-meghajtású RGB hangulatlámpa
Kézzel készített Arduino-meghajtású RGB hangulatlámpa
Kézzel készített Arduino-meghajtású RGB hangulatlámpa

Ez az útmutató 5 részre oszlik:- Az építés megtervezése (1. lépés)- A kézzel készített árnyék (2. és 3. lépés)- Az elektronikus áramkör a 3 W-os LED-ek meghajtásához az ATmega8 vezérlővel (4. lépés)- A kód (5. lépés)- Hogyan lehet megszerezni önálló (az Arduino rendszerbetöltőt PonyProg segítségével kell felvillanni, és el kell írni a vázlatot) (6. lépés) hamarosan Vid: Néhány benyomás

de.youtube.com/watch?v=apZ9NpaUG84 Pic1: A Moodlamp Pic2: Egy hatalmas 3 W -os LED

Lépés: Az építkezés megtervezése:

Az építkezés tervezése
Az építkezés tervezése
Az építkezés tervezése
Az építkezés tervezése

Szeretek koncepciót készíteni egyetlen papírlapon. Az első lapon néhány korai ötletet lát. A jobb alsó részt választottam. A második oldalon néhány részlet látható az építéshez. A mérések kísérleti jellegűek, mint minden alkalommal, de nekem rendben vannak;-) A hardveres gondolataim a következők voltak:- Tudom kezelni az anyagokat?- Ragyogni fog a fény az árnyékon keresztül? - Milyen arányban kell lennie? - Hány gomb és edény szükséges egy egyszerű felülethez? Szoftveres gondolataim a következők voltak: Hány különböző funkciót kell ellátnia a lámpának? - Automatikus RGB -fakulás változtatható sebességgel - Kézi színbeállítás - Fehér, állítható fényerővel

2. lépés: A kézzel készített árnyék

A kézzel készített árnyék
A kézzel készített árnyék
A kézzel készített árnyék
A kézzel készített árnyék
A kézzel készített árnyék
A kézzel készített árnyék

Az anyagok összegyűjtése: Az árnyék: találtam egy 3 láb x 3 láb méretű 30 milliméteres műanyag lapot a boltban (Pic1-3). Vágja le egy éles késsel. A műanyagot csiszolópapírral (Pic4-6) fagyosítottam. kap egy sima hengert. Mindent összecsavartam, miután kifúrtam a megfelelő lyukakat (Pic7-8). Szerelje fel a műanyag árnyalatokat a menetes sárgaréz tartókra. Szépen néz ki, és meglehetősen könnyű beszerezni és kezelni. Fúrtam és megcsaptam a lyukakat, hogy megfeleljenek az 1/8 menetes rúdnak (Pic9-10). Közben készítettem egy hűtőbordát, hogy lehűtsem a 3 W-os LED-eket és szilárd alapot kapjak. Ha nem túl sok árnyalatot kapunk a tengelytől, építek egy kis ketrecet a hegesztőpálcából, tetején egy M8 -as anyával (Pic12). Befejezésként összeszereltem. A kis csavarok és anyák kicsit trükkösek voltak, de 30 perc múlva elkészültem.

3. lépés: A kézzel készített árnyék

A kézzel készített árnyék
A kézzel készített árnyék
A kézzel készített árnyék
A kézzel készített árnyék
A kézzel készített árnyék
A kézzel készített árnyék

Az alap: A tárcsákat az esztergagépbe fogták, hogy sima és kerek legyen. Ezt követően mahagóni fafestéssel megfestettem, hogy a fenyő jól nézzen ki. Mi a következő lépés?!? Úgy döntöttem, hogy ugyanazt az alapot készítem matt árnyalatú műanyagot, és RGB microLED -el (Pic5) háttérvilágítással. A gombok: A gombot egy mahagóni darabból készítettem, a gombokat pedig diófa kivágásából.

4. lépés: Az elektromos áramkör:

Az elektromos áramkör
Az elektromos áramkör
Az elektromos áramkör
Az elektromos áramkör
Az elektromos áramkör
Az elektromos áramkör

Az első képen a sémám látható. És itt egy másik videó: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1

5. lépés: A kód:

A kód
A kód
A kód
A kód
A kód
A kód

A képeken az Arduino -val folytatott folyamatomat látod. Először a saját készítésű ProtoShield -tel, egy akkumulátorral és néhány LED -del próbálkoztam. Néhány hónappal ezelőtt TodEKurt "Spooky Projects" és "BionicArduino" -val kezdtem. Http://todbot.com/blog/spookyarduino/ csak a projektkódjának trükkös kombinációja. "RGBMoodlight", "RGBPotMixer" és néhány kiterjesztés. Három analóg bemenet és egy digitális bemenet üzemmódváltóként (köszönet Ju-nak a megszakítási rutinért:). A LED-ek csatlakoztatva vannak. a D9, D10 és D11 -hez, amelyek támogatják a PulseWithModulation -t. Ha úgy tetszik, közzétehetem a vázlatot, de ez a két nagy kód valóban csupasz kombinációja. Íme a lámpa eredeti kódja. Kicsit zavarosnak tűnik, mert az én nagyon korai szakaszában a programozásnak … De ha másolja, akkor nagyszerűen kell működnie. Vannak finom békék, mint például a "PotColorMixer", az "RGBfadingFunction" és az Interrupt-Rutin a módváltáshoz.

A "Moodlamp" kódom, Clay Shirky "dimmingLED" alapján

*nejo 2008. szeptember

  • Végső kód a hangulatlámpához megszakítási mód-kapcsolóval, analóg gyorstárcsázás az RGB-halványításhoz és az RGB-színváltáshoz.
  • A fényerőszabályzó funkció csak a fehér színnél működik

*nejo2008 október

  • Hangbővítés a hangulatlámpához:
  • Kondenzátor mikrofon egy apró LM368 erősítővel, egy recifigerrel és egy RC aluláteresztő szűrővel
  • másik analóg bemenettel Az RGBPotMixer funkciót használom a szín megváltoztatására a mikrofon jelének beszerzésével.

* * * A három LED, piros, zöld és kék, vagy egy háromszínű LED kereszthalványításának kódja PWM használatával

  • A program lassan elhalványul vörösről zöldre, zöldről kékre és kékről pirosra
  • A hibakeresési kód az Arduino 0004-et feltételezi, mivel az új Serial.begin () stílusú függvényeket használja
  • eredetileg "dimmingLEDs" Clay Shirky

*

  • Az AnalogRead engedélyezve van az A0 -as érintkezőn, hogy módosítsa az RGB halványítási sebességét
  • Az AnalogRead engedélyezve van az A2 -es érintkezőn a hueRGB színének megváltoztatásához

* * */#include // Outputint ledPin = 13; // controlPin a hibakereséshezint redPin = 9; // Piros LED, digitális tűhöz csatlakoztatva 9int greenPin = 10; // Zöld LED, digitális tűhöz csatlakoztatva 10int bluePin = 11; // Kék LED, digitális tűhöz csatlakoztatva 11int dimredPin = 3; // Tüskék az analóg tompítási értékhez, a tranzisztor meghajtójához csatlakoztatva dimgreenPin = 5; int dimbluePin = 6; // Bemeneti kapcsolóPin = 2; // kapcsoló a D2 érintkezőhöz van csatlakoztatvaint = 0; // változó a pin statusint buttonState; // változó a gomb lenyomására stateint buttonPresses = 0; // 3 megnyomja a gombot! Int potPin0 = 0; // Pot a halványodás közötti késleltetés beállítására a Moodlamp -ban; int potPin2 = 2; // Potenciométer kimenet a színárnyalat megváltoztatásáhozRGB colorint potVal = 0; // Változó a potenciométer bemenetének tárolásához maxVal = 0; // a tompítási tényező mentésének alapértelmezett értéke 255, ha nincs pot csatlakoztatva dimPin = 4; // Fazék az A4 -hez csatlakoztatva a fényerő tompítására // Programváltozókint redVal = 255; // Változók a pinstintre küldendő értékek tárolására greenVal = 1; // A kezdeti értékek: piros teljes, zöld és kék offint blueVal = 1; int i = 0; // Loop számláló int wait; // = 15; // 50 ms (.05 másodperc) késleltetés; rövidítse le a gyorsabb fadesint k = 0; // a controlLED értéke a villogó funkcióban DEBUG = 0; // DEBUG számláló; ha 1 -re van állítva, visszaírja az értékeket a serialint LCD = 0 -n keresztül; // LCD számláló; ha 1 -re van állítva, visszaírja az értékeket a serialvoid setup () {pinMode (ledPin, OUTPUT) segítségével; pinMode (redPin, OUTPUT); // beállítja a csapokat kimeneti pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // a csapokat kimeneti pinMode -nak állítja be (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // A kapcsolócsap beállítása bemeneti mellékletkéntInterrupt (0, isr0, RISING); if (DEBUG) {// Ha látni szeretnénk a hibakeresés pin értékeit… Serial.begin (9600); //… állítsa be a soros kimenetet 0004 stíluson}}} // Fő programvoid ciklus () {if (buttonPresses == 0) {Moodlamp (); // meghívja a Moodlight függvényt} if (buttonPresses == 1) {RGBPotMixer (); // meghívja a manuel mix függvényt} if (buttonPresses == 2) {White (); // Itt minden fehér} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); //Fehér(); Monitor(); dim ();} void Monitor () {// Állapot küldése a monitornak, ha (DEBUG) {// Ha ki akarjuk olvasni a kimenetet DEBUG += 1; // Növelje a DEBUG számlálót, ha (DEBUG> 10) {// Nyomtatás 10 ciklusonként DEBUG = 1; // A számláló visszaállítása Serial.print (i); // Soros parancsok 0004 stílusban Serial.print ("\ t"); // Lap nyomtatása Serial.print ("R:"); // Annak jelzése, hogy a kimenet vörös érték Serial.print (redVal); // Piros érték nyomtatása Serial.print ("\ t"); // Lap nyomtatása Serial.print ("G:"); // Ismételje meg a zöld és a kék… Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, kocsi visszaadásával Serial.print ("\ t"); Serial.print ("dimValue:"); Soros.nyomtatás (maxVal); // println, kocsi visszaadásával Serial.print ("\ t"); Serial.print ("várj:"); Serial.print (várjon); // írja a potPin0 értékét a monitorra Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serial.print (potVal); // írja a potPin0 értékét a monitorra Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (buttonState); // írja a potPin0 értékét a monitorra Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (buttonPresses); // írja a gomb értékétPress a monitorra}}} void dim () // Funkció a tompításhoz Fehér // talán később minden módban {maxVal = analogRead (dimPin); maxVal /= 4; // Analóg tartomány 0..1024 -től túl sok a 0..255 értékű tompításhoz analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // keresse meg az értéket a potPin0 -ból; // ha nincs pot csatlakoztatva: várjon 255 i += 1; // Növekményszámláló // i = i - maxVal; if (i <255) // Elhalványulások első fázisa {redVal -= 1; // Piros le zöldVal += 1; // Zöld fel kékVal = 1; // Kék alacsony} else if (i <509) // Az elhalványulások második fázisa {redVal = 1; // Piros alacsony zöldVal -= 1; // Zöld le kékVal += 1; // Kék fel} else if (i <763) // Az elhalványulások harmadik fázisa {redVal += 1; // Piros fel zöldVal = 1; // Zöld lo2 blueVal -= 1; // Kék lefelé} else // Állítsa be újra a számlálót, és indítsa újra az elhalványulást {i = 1; } // "255 -redVal" -t csinálunk a "redVal" helyett, mert a // LED -ek +5V -ra vannak kapcsolva a Gnd analogWrite helyett (redPin, 255 - redVal); // Írja be az aktuális értékeket a LED -es tüskékbe analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // dimming dimredVal = max (redVal - maxVal, 0); dimgreenVal = min (zöldVal - maxVal, 255); dimgreenVal = max (zöldVal - maxVal, 0); dimblueVal = min (blueVal - maxVal, 255); dimblueVal = max (blueVal - maxVal, 0); analogWrite (redPin, 255 - dimredVal); // Írja be az aktuális értékeket a LED tüskékbe analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / várj / = 4; késleltetés (várakozás); // Szünet a "várakozás" ezredmásodpercig, mielőtt folytatná a ciklust} void RGBPotMixer () {potVal = analogRead (potPin2); // olvassa be a potenciométer értékét a bemeneti tűn potVal = potVal / 4; // konvertálás 0-1023-ról 0-255-re hue_to_rgb (potVal); // kezelje a potVal-t színárnyalatként és konvertálja rgb-értékekre // "255-" azért van, mert közös anódos LED-eink vannak, nem közös katódos analógWrite (redPin, 255-redVal); // Írjon értékeket a LED tüskékre analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } void White () {analogWrite (redPin, maxVal); // Írjon értékeket a LED tüskékre analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*

  • Ha egy „h” változó árnyalatot kap, amely 0-252 között van,
  • állítsa be megfelelően az RGB színértékét.
  • MaxValimum telítettséget és maximális értéket (fényerő) feltételez
  • Tisztán egész számítást végez, lebegőpontos nincs.

*/void hue_to_rgb (byte színárnyalat) {if (színárnyalat> 252) színárnyalat = 252; // vissza a 252 -hez !! nejo bájt hd = színárnyalat / 42; // 36 == 252/7, 252 == H_MAX bájt hi = hd % 6; // 0-5 bájtot ad f = színárnyalat % 42; bájt fs = f * 6; kapcsoló (szia) {eset 0: redVal = 252; zöldVal = fs; blueVal = 0; szünet; 1. eset: redVal = 252-fs; zöldVal = 252; blueVal = 0; szünet; 2. eset: redVal = 0; zöldVal = 252; blueVal = fs; szünet; 3. eset: redVal = 0; zöldVal = 252-fs; blueVal = 252; szünet; 4. eset: redVal = fs; zöldVal = 0; blueVal = 252; szünet; 5. eset: redVal = 252; zöldVal = 0; blueVal = 252-fs; szünet; }} void isr0 () {Serial.println ("\ n / n megszakítás / n"); buttonState = digitalRead (switchPin); // a kezdeti állapot késleltetésének olvasásaMikroszekundum (100000); // if (val! = buttonState) {// a gomb állapota megváltozott! // if (buttonState == HIGH) {// ellenőrizze, hogy a gomb le van -e nyomva buttonPresses ++; //} // val = buttonState; // az új állapot mentése a változónkba if (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} A következő lépés a tranzisztor-meghajtók voltak. 3 PNP tranzisztorokat használtam, amelyek maximális áramerőssége 3Ampere volt. Az előremenő áram és a feszültség szabályozása után a LED-sugárzó teljes erővel nagyszerűen működött.

6. lépés: Szerezze meg önállóan a PonyProg által égetett Bootloaderrel

Szerezd meg önállóan a PonyProg által égetett Bootloaderrel
Szerezd meg önállóan a PonyProg által égetett Bootloaderrel

Hogyan használhatod a párhuzamos portodat az arduino rendszerbetöltő égetésére ATmega168 vagy ATmega8 gépeken, hogy olcsó üres chipet használj az arduino környezettel. Hamarosan… … talán külön utasítással. /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

7. lépés: Tehát ez az én Arduino Moodlamp

Tehát ez az én Arduino hangulatjelzőm
Tehát ez az én Arduino hangulatjelzőm

Ha tetszett, kérjük értékelje.

Ajánlott: