Բովանդակություն:

Ձեռագործ Arduino- ով աշխատող RGB Moodlamp ՝ 7 քայլ
Ձեռագործ Arduino- ով աշխատող RGB Moodlamp ՝ 7 քայլ

Video: Ձեռագործ Arduino- ով աշխատող RGB Moodlamp ՝ 7 քայլ

Video: Ձեռագործ Arduino- ով աշխատող RGB Moodlamp ՝ 7 քայլ
Video: Որտեղ գնել փոքր շարժիչներ dc 2024, Հուլիսի
Anonim
Ձեռքի աշխատանք Arduino- ով աշխատող RGB Moodlamp
Ձեռքի աշխատանք Arduino- ով աշխատող RGB Moodlamp
Ձեռքի աշխատանք Arduino- ով աշխատող RGB Moodlamp
Ձեռքի աշխատանք Arduino- ով աշխատող RGB Moodlamp

Այս հրահանգը ստորաբաժանված է 5 մասի. միայնակ (Arduino- ի բեռնիչը PonyProg- ով միացրեք և այրեք էսքիզը) (Քայլ 6) շուտով Տեսանյութ. Որոշ տպավորություններ

de.youtube.com/watch?v=apZ9NpaUG84 Նկար 1: The Moodlamp Pic2: Հզոր 3W հզորությամբ LED

Քայլ 1: Շինարարության պլանավորում

Շինարարության պլանավորում
Շինարարության պլանավորում
Շինարարության պլանավորում
Շինարարության պլանավորում

Ես սիրում եմ հասկացություն անել միայն մեկ թերթիկի վրա: Առաջին թերթիկի վրա տեսնում եք վաղ գաղափարներ: «Ես ընտրեցի ներքևի աջ դիզայնը: Երկրորդ էջը ցույց է տալիս շինարարության որոշ մանրամասներ: Չափումները փորձնական են, ինչպես ամեն անգամ, բայց ինձ համար լավ է;-) Իմ ապարատային մտքերը հետևյալն էին. ստվերի միջով. - Սպիտակ կարգավորելի պայծառությամբ

Քայլ 2: Ձեռագործ երանգ

Ձեռագործ երանգ
Ձեռագործ երանգ
Ձեռագործ երանգ
Ձեռագործ երանգ
Ձեռագործ երանգ
Ձեռագործ երանգ

Նյութերի հավաքում. Ստվերը. Ես խանութում գտա 30 ֆաբրիկա 3 ոտքով 30 գործարան պլաստմասե թերթ (նկ. 1-3): Կտրեք այն սուր դանակով: Ես պլաստիկը ցրտահարեցի հղկաթուղթ օգտագործելով (նկ. 4-6): ձեռք բերեք հարթ գլան: Ես ամեն ինչ միասին պտուտակեցի ճիշտ անցքեր փորելուց հետո (Նկար 7-8): Տեղադրեք պլաստմասե երանգները պտուտակավոր մետաղալարերի հենարանների վրա: Այն գեղեցիկ տեսք ունի և բավականին հեշտ է ձեռք բերել և վարվել: Ես փորել և հարվածել եմ անցքերին, որոնք համապատասխանում են 1/8-րդ պտուտակաձողին (նկ. 9-10): միևնույն ժամանակ, ես պատրաստեցի ջեռուցիչ `3W LED- երը սառեցնելու և ամուր հիմք ունենալու համար:. Լիսեռից ոչ շատ երանգներ ստանալու համար ես մի փոքր վանդակ եմ կառուցում եռակցման գավազանից `M8 ընկույզով (Pic12): Ավարտից հետո ես բոլորը միասին հավաքեցի: Փոքր պտուտակները և ընկույզները մի փոքր բարդ էին, բայց 30 րոպե անց ես դա արեցի:

Քայլ 3: Ձեռագործ երանգ

Ձեռագործ երանգ
Ձեռագործ երանգ
Ձեռագործ երանգ
Ձեռագործ երանգ
Ձեռագործ երանգ
Ձեռագործ երանգ

Հիմքը. Սկավառակները խրված էին խառատահաստոցում ՝ այն հարթ և կլորացնելու համար: Հետո ես այն ներկեցի կարմրափայտի բիծով, որպեսզի սոճին լավ տեսք ունենա: Հետո?!? Ես որոշեցի հիմք պատրաստել ՝ օգտագործելով նույնը ցրտահարված պլաստիկ, որպես ստվեր, և լուսավորեք այն RGB microLED- ով (Նկար 5): Բռնակներ. Ես կոճակը պատրաստել եմ կարմրափայտի կտորից, իսկ բռնակները `ընկուզենու կտրվածքով:

Քայլ 4: Էլեկտրական միացում

Էլեկտրական միացում
Էլեկտրական միացում
Էլեկտրական միացում
Էլեկտրական միացում
Էլեկտրական միացում
Էլեկտրական միացում

Առաջին նկարի վրա տեսնում եք իմ սխեմատիկ պատկերը: Եվ ահա ևս մեկ տեսանյութ ՝ https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1

Քայլ 5: Կոդ

Կոդ
Կոդ
Կոդ
Կոդ
Կոդ
Կոդ

Լուսանկարներում դուք տեսնում եք իմ ընթացքը Արդուինոյի հետ: Սկզբում ես փորձեցի իմ ինքնագործ ProtoShield- ի, մարտկոցի տուփի և մի շարք LED- ների հետ: Սկսեցի ամիսներ առաջ TodEKurt- ի «Spooky Projects» - ով և «BionicArduino» - ով: https://todbot.com/blog/spookyarduino/ Իմ կոդը պարզապես նրա նախագծային կոդի բարդ համադրություն. դեպի D9, D10 և D11, որոնք աջակցում են PulseWithModulation- ին: Եթե ցանկանում եք, ես կարող եմ հրապարակել էսքիզը, բայց դա այս երկու մեծ կոդերի իսկապես մերկ համադրություն է: Ահա լամպի իմ սկզբնական ծածկագիրը: Այն մի փոքր խառնաշփոթ է թվում, որովհետև դա իմն էր ծրագրավորման շատ վաղ փուլ… Բայց եթե այն պատճենեք, այն պետք է հիանալի աշխատի: Կան հիանալի խաղաղություններ, ինչպես օրինակ ՝ «PotColorMixer»-ը, «RGBfadingFunction»-ը և ռեժիմի անջատիչի ընդհատման ռեժիմը:/*** nejo June2008

Կոդ իմ «Moodlamp» - ի համար ՝ հիմնված Քլեյ Շիրկիի «dimmingLEDs» - ի վրա

*nejo 2008 թվականի սեպտեմբեր

  • Տրամադրության լամպի վերջնական կոդը `ընդհատման ռեժիմի անջատիչով, անալոգային արագ հավաքիչ` RGB- մարման և RGB գույնի փոփոխման համար:
  • Թուլացման գործառույթը գործում է միայն սպիտակ գույնի համար

*nejo Հոկտեմբեր 2008 թ

  • Ձայնի երկարացում տրամադրության լուսավորության համար.
  • Կոնդենսորային միկրոֆոն ՝ փոքր LM368 ուժեղացուցիչով, ընդունիչով և ցածր անցողիկ զտիչով RC
  • մեկ այլ անալոգային ներածմամբ ես օգտագործում եմ RGBPotMixer- գործառույթը ՝ գույնը փոխելու համար ՝ ստանալով միկրո ազդանշանը:

* * * 3 LED, կարմիր, կանաչ և կապույտ, կամ մեկ եռագույն LED լուսադիոդ ՝ PWM- ի միջոցով

  • Crossրագիրը դանդաղորեն մարում է կարմիրից կանաչ, կանաչից կապույտ և կապույտից կարմիր
  • Վրիպազերծման կոդը ենթադրում է Arduino 0004, քանի որ այն օգտագործում է նոր Serial.begin ()-ոճի գործառույթները
  • ի սկզբանե «dimmingLEDs» ՝ Քլեյ Շիրկիի կողմից

*

  • AnalogRead- ը միացված է Pin A0- ում ՝ RGB մարման արագությունը փոփոխելու համար
  • AnalogRead- ը միացված է Pin A2- ում ՝ hueRGB գույնը փոխելու համար

* * */#ներառել // Ելքի տող ledPin = 13; // controlPin ՝ կարգաբերման համար redPin = 9; // Կարմիր LED, միացված թվային կապին 9int greenPin = 10; // Կանաչ LED, միացված թվային կապին 10int bluePin = 11; // Կապույտ LED, միացված է թվային կապին 11int dimredPin = 3; // Տրանզիստորային վարորդին միացված անալոգային մթնեցնող արժեքի կապում dimgreenPin = 5; int dimbluePin = 6; // Մուտքի տող անջատիչՓին = 2; // անջատիչը միացված է կապում D2int val = 0; // փոփոխական ՝ կարդալու համար pin statusintint buttonState; // փոփոխական ՝ կոճակը պահելու համար stateint button Presses = 0; // 3 սեղմում ՝ գնալու համար: int potPin0 = 0; // Կաթսա Moodlamp- ում մարման միջև ուշացումը կարգավորելու համար; int potPin2 = 2; // Պոտենցիոմետր ելք hueRGB colorint potVal = 0 փոխելու համար; // Փոփոխական ՝ potentiometerint maxVal = 0 -ից մուտքը պահելու համար; // մթնեցնող գործոնի կանխադրված արժեքը պահպանելու համար 255 է, եթե զամբյուղ միացված չէ dimPin = 4; // A4- ին միացված կաթսա `պայծառությունը նվազեցնելու համար // variableրագրի փոփոխականներ </b> redVal = 255; // Փոփոխականներ ՝ արժեքները պահելու համար, որոնք ուղարկվում են կապույտ greenVal = 1; // Սկզբնական արժեքներն են ՝ Կարմիր լրիվ, Կանաչ և Կապույտ անջատված կապույտ ValVal = 1; int i = 0; // Loop counter int wait; // = 15; // 50ms (.05 վայրկյան) ուշացում; կարճացրեք ավելի արագ fadesint k = 0; // արժեքը controlLED- ի համար blink-functionint DEBUG = 0; // DEBUG հաշվիչ; եթե սահմանված է 1 -ի վրա, արժեքները կգրեն սերիալային LCD = 0 -ի միջոցով; // LCD հաշվիչ; եթե դրված է 1 -ի վրա, արժեքները կգրեն serialvoid setup () {pinMode (ledPin, OUTPUT) միջոցով; pinMode (redPin, OUTPUT); // կապումներն է դնում ելքային pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // կապումներն է դնում ելքային pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Տեղադրեք անջատիչի քորոցը որպես մուտքի կցորդ interIntrupt (0, isr0, RISING); if (DEBUG) {// Եթե ցանկանում ենք տեսնել փինային արժեքները վրիպազերծման համար … Serial.begin (9600); //… կարգավորել սերիական ելքը 0004 ոճի վրա}} // Հիմնական ծրագրային հանգույց () {if (buttonPresses == 0) {Moodlamp (); // կանչում է Moodlight գործառույթը} if (buttonPresses == 1) {RGBPotMixer (); // կանչում է manuel mix գործառույթը} if (buttonPresses == 2) {White (); // Այստեղ ամեն ինչ սպիտակ է} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); // Սպիտակ (); Մոնիտոր (); dim ();} void Monitor () {// Ուղարկել պետություն մոնիտորին, եթե (DEBUG) {// Եթե ցանկանում ենք կարդալ ելքը DEBUG += 1; // Բարձրացրեք DEBUG հաշվիչը, եթե (DEBUG> 10) {// Տպեք յուրաքանչյուր 10 օղակ DEBUG = 1; // Վերականգնել հաշվիչը Serial.print (i); // Սերիական հրամաններ 0004 ոճով Serial.print ("\ t"); // Տպել էջանիշ Serial.print ("R:"); // Նշեք, որ ելքը կարմիր արժեք է Serial.print (redVal); // Տպել կարմիր արժեքը Serial.print ("\ t"); // Տպել էջանիշ Serial.print ("G:"); // Կրկնել կանաչի և կապույտի համար… Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, ավարտելու համար վագոնի վերադարձը Serial.print ("\ t"); Serial.print ("dimValue:"); Serial.print (maxVal); // println, ավարտելու համար վագոնի վերադարձը Serial.print ("\ t"); Serial.print («սպասել»); Serial.print (սպասել); // գրում է potPin0- ի արժեքը մոնիտորին Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serial.print (potVal); // գրում է potPin0- ի արժեքը մոնիտորին Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (buttonState); // գրում է potPin0- ի արժեքը մոնիտորին Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (buttonPresses); // գրում է կոճակի արժեքը Սեղմում է մոնիտորին}}} void dim () // Սպիտակ գույնը մգացնելու գործառույթ // գուցե ավելի ուշ բոլոր ռեժիմների համար {maxVal = analogRead (dimPin); maxVal /= 4; // Անալոգային միջակայքը 0..1024 -ից չափազանց շատ է 0..255 արժեքի analogWrite (dimredPin, maxVal) մթնեցնելու համար; analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // փնտրեք արժեքը potPin0- ից; // եթե զամբյուղ միացված չէ. սպասեք 255 i += 1; // Բարձրացման հաշվիչ // i = i - maxVal; եթե (i <255) // Մարում է առաջին փուլը {redVal -= 1; // Կարմիր ներքև greenVal += 1; // Կանաչապատել blueVal = 1; // Կապույտ ցածր} else if (i <509) // Մարում է երկրորդ փուլը {redVal = 1; // Կարմիր ցածր greenVal -= 1; // Կանաչ ներքև blueVal += 1; // Կապույտ մինչև} ուրիշ եթե (i <763) // Երրորդ փուլը մարում է {redVal += 1; // կարմիր կարմիր greenVal = 1; // Կանաչ lo2 blueVal -= 1; // Կապույտ ներքև} այլ // Կրկին տեղադրեք հաշվիչը և նորից սկսեք մարում {i = 1; } // մենք անում ենք «255 -redVal» ՝ պարզապես «redVal» - ի փոխարեն, քանի որ // LED- ները միացված են մինչև +5V ՝ Gnd analogWrite- ի փոխարեն (redPin, 255 - redVal); // Գրել ընթացիկ արժեքներ LED կապում analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = րոպե (redVal - maxVal, 255); // dimmingVred = max (redVal - maxVal, 0); dimgreenVal = րոպե (greenVal - maxVal, 255); dimgreenVal = max (greenVal - maxVal, 0); dimblueVal = րոպե (blueVal - maxVal, 255); dimblueVal = max (blueVal - maxVal, 0); analogWrite (redPin, 255 - dimredVal); // Գրել ընթացիկ արժեքներ LED կապում analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / սպասել / = 4; ուշացում (սպասել); // Դադարեցնել «սպասել» միլիվայրկյան առաջ ՝ օղակը վերսկսելուց} void RGBPotMixer () {potVal = analogRead (potPin2); // կարդալ պոտենցիոմետրի արժեքը մուտքի քորոցում potVal = potVal / 4; // փոխարկել 0-1023-ից 0-255-ի hue_to_rgb (potVal); // վերաբերվեք potVal- ին որպես երանգ և փոխարկեք rgb vals // «255-»-ն այն պատճառով, որ մենք ունենք ընդհանուր անոդային LED- ներ, այլ ոչ թե ընդհանուր կաթոդային analogWrite (redPin, 255-redVal); // Գրել արժեքներ LED կապում analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } void Սպիտակ () {analogWrite (redPin, maxVal); // Գրել արժեքներ LED կապում analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*

  • Հաշվի առնելով «h» փոփոխական երանգը, որը տատանվում է 0-252-ի սահմաններում,
  • RGB գույնի արժեքը համապատասխանաբար սահմանել:
  • Ենթադրում է maxValimum Saturation & maximum Value (brightness)
  • Կատարում է զուտ ամբողջական մաթեմատիկա ՝ առանց լողացող կետի:

*/void hue_to_rgb (բայթ երանգ) {if (երանգ> 252) երանգ = 252; // հետադարձ դեպի 252 !! nejo byte hd = երանգ / 42; // 36 == 252/7, 252 == H_MAX բայթ hi = hd % 6; // տալիս է 0-5 բայթ f = երանգ % 42; բայթ fs = f * 6; switch (hi) {case 0: redVal = 252; greenVal = fs; blueVal = 0; ընդմիջում; գործ 1: redVal = 252-fs; greenVal = 252; blueVal = 0; ընդմիջում; դեպք 2: redVal = 0; greenVal = 252; blueVal = fs; ընդմիջում; դեպք 3: redVal = 0; greenVal = 252-fs; blueVal = 252; ընդմիջում; դեպք 4: redVal = fs; greenVal = 0; blueVal = 252; ընդմիջում; դեպք 5: redVal = 252; greenVal = 0; blueVal = 252-fs; ընդմիջում; }} void isr0 () {Serial.println ("\ n / n անխափան / n"); buttonState = digitalRead (switchPin); // կարդալ սկզբնական վիճակի հետաձգումՄիկրայրկյաններ (100000); // if (val! = buttonState) {// կոճակի վիճակը փոխվել է: // if (buttonState == HIGH) {// ստուգեք, արդյոք կոճակն այժմ սեղմված է կոճակըՍեղմում է ++; //} // val = buttonState; // պահպանել նոր վիճակը մեր փոփոխականի մեջ, եթե (buttonPresses == 3) {// zur cksetzen button Presses = 0; }} //} Հաջորդ փուլը տրանզիստոր-վարորդներն էին: Ես օգտագործել եմ 3 PNP տրանզիստոր `առավելագույն հոսանքով 3Ampere- ում: Հետո հոսանքի և լարման կարգավորումից հետո LED լուսարձիչը հիանալի աշխատեց ամբողջ ուժգնությամբ:

Քայլ 6: Ստացեք այն ինքնուրույն PonyProg- ով այրված Bootloader- ով

Ստացեք այն ինքնուրույն PonyProg- ով այրված Bootloader- ով
Ստացեք այն ինքնուրույն PonyProg- ով այրված Bootloader- ով

Ինչպես օգտագործել ձեր paralell նավահանգիստը ՝ arduino bootloader- ը ATmega168- ով կամ ATmega8- ով այրելու համար, arduino միջավայրի հետ էժան դատարկ չիպից օգտվելու համար: շուտով….. գուցե առանձին հրահանգների վրա: Ահա նաև լավ հրահանգ ՝ չիպերի ինքնուրույն օգտագործման համար. Https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

Քայլ 7: Այսպիսով, դա իմ Arduino Moodlamp- ն է

Այնպես որ, դա իմ Arduino Moodlamp- ն է
Այնպես որ, դա իմ Arduino Moodlamp- ն է

Եթե ձեզ դուր եկավ, խնդրում եմ գնահատեք ինձ:

Խորհուրդ ենք տալիս: