Satura rādītājs:

Ar rokām darināts ar Arduino darbināms RGB gaismeklis: 7 soļi
Ar rokām darināts ar Arduino darbināms RGB gaismeklis: 7 soļi

Video: Ar rokām darināts ar Arduino darbināms RGB gaismeklis: 7 soļi

Video: Ar rokām darināts ar Arduino darbināms RGB gaismeklis: 7 soļi
Video: Kā top ar rokām darināts gredzens ar briljantu? 2024, Jūlijs
Anonim
Ar rokām darināts ar Arduino darbināms RGB Moodlamp
Ar rokām darināts ar Arduino darbināms RGB Moodlamp
Ar rokām darināts ar Arduino darbināms RGB Moodlamp
Ar rokām darināts ar Arduino darbināms RGB Moodlamp

Šī pamācība ir sadalīta 5 daļās:- konstrukcijas plānošana (1. darbība)- roku darbs (2. un 3. solis)- elektroniskā shēma 3W gaismas diodes vadīšanai ar ATmega8 kontrolieri (4. solis)- kods (5. solis)- kā to iegūt patstāvīgs (zibspuldzējiet Arduino sāknēšanas programmu ar PonyProg un ierakstiet skici) (6. darbība) drīzumā Vid: daži iespaidi

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

1. solis: būvniecības plānošana:

Būvniecības plānošana
Būvniecības plānošana
Būvniecības plānošana
Būvniecības plānošana

Man patīk izveidot koncepciju tikai uz vienas papīra lapas. Pirmajā lapā jūs redzat dažas agrīnas idejas. Es izvēlējos dizainu apakšējā labajā stūrī. Otrajā lapā ir redzama konstrukcijas detaļa. Mērījumi ir eksperimentāli kā katru reizi, bet man ir labi;-) Manas aparatūras domas bija šādas:- Vai es varu rīkoties ar materiāliem?- Vai gaisma spīdēs? caur ēnu? - Kādai proporcijai tai vajadzētu būt? - Cik daudz pogu un podu man vajadzēs vienkāršam interfeisam? Manas programmatūras domas bija šādas: cik daudz dažādu funkciju vajadzētu lampai? - Automātiska RGB izbalēšana ar maināmu ātrumu - Manuāla krāsu pielāgošana - Balta ar regulējamu spilgtumu

2. solis: roku darbs

Roku darbs
Roku darbs
Roku darbs
Roku darbs
Roku darbs
Roku darbs

Materiālu savākšana: ēna: veikalā atradu 3 pēdu x 3 pēdu loksni no 30 miltu plastmasas (1.-3. Attēls). Lai to sagrieztu, izmantojiet asu nazi. Es matēju plastmasu, izmantojot smilšpapīru (4.-6. Attēls). iegūstiet gludu cilindru. Es to visu saskrūvēju pēc pareizo caurumu urbšanas (7.7. attēls). Uzstādiet plastmasas toņus uz vītņotiem misiņa balstiem. Tas izskatās jauki, un to ir diezgan viegli iegūt un apstrādāt. Es urbju un pieskāros caurumiem, lai tie atbilstu 1/8 vītņotajam stienim (Pic9-10). Tikmēr es izveidoju radiatoru, lai atdzesētu 3W gaismas diodes un iegūtu stabilu pamatu. Lai no vārpstas iegūtu ne pārāk daudz toņu, es uzbūvēju nelielu būri no metināšanas stieņa ar M8 uzgriezni uz augšu (Pic12). Pabeidzot, es saliku visu kopā. Mazās skrūves un uzgriežņi bija nedaudz sarežģīti, bet 30 minūtes vēlāk es to izdarīju.

3. solis: roku darbs

Roku darbs
Roku darbs
Roku darbs
Roku darbs
Roku darbs
Roku darbs

Bāze: diski tika ievietoti virpā, lai tas būtu gluds un apaļš. Pēc tam es to iekrāsoju ar sarkankoka koka traipu, lai priede izskatītos labi. Ko tālāk?!? Es nolēmu izveidot pamatni, izmantojot to pašu matēta plastmasa kā toni, un apgaismojiet to ar RGB microLED (5. attēls). Pogas: pogu izveidoju no sarkankoka gabala un pogas no riekstu koka griezuma.

4. solis: elektriskā ķēde:

Elektriskā ķēde
Elektriskā ķēde
Elektriskā ķēde
Elektriskā ķēde
Elektriskā ķēde
Elektriskā ķēde

Pirmajā attēlā redzat manu shēmu. Un šeit ir vēl viens video: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1

5. darbība: kods:

Kods
Kods
Kods
Kods
Kods
Kods

Attēlos jūs redzat manu procesu ar Arduino. Pirmkārt, es izmēģināju ar savu pašu izgatavoto ProtoShield, akumulatoru un dažāda veida gaismas diodes. Pirms dažiem mēnešiem sāku ar TodEKurt "Spooky Projects" un "BionicArduino". Mans kods ir tikai sarežģīta viņa projekta koda kombinācija. "RGBMoodlight", "RGBPotMixer" un daži paplašinājumi. Trīs analogās ieejas un viena digitālā ieeja kā režīma slēdzis (Paldies Ju. par pārtraukuma kārtību:). Gaismas diodes ir savienotas uz D9, D10 un D11, kas atbalsta PulseWithModulation. Ja vēlaties, es varu publicēt skici, taču tā ir patiešām tukša šo divu lielisko kodu kombinācija. Šeit ir mans sākotnējais luktura kods. Tas izskatās nedaudz netīrs, jo tas bija mans ļoti agrīnā programmēšanas stadijā … Bet, ja jūs to kopējat, tam vajadzētu lieliski darboties. Ir smalki mieri, piemēram, "PotColorMixer", "RGBfadingFunction" un režīma pārslēga pārtraukšanas kārtība./* nejo 2008. gada jūnijs

Mana "Moodlamp" kods, kura pamatā ir Clay Shirky "dimmingLEDs"

*nejo 2008. gada septembris

  • Noslēguma kods garastāvokļa lampai ar pārtraukuma režīma slēdzi, analogā ātrās zvanīšanas funkcija RGB izbalēšanai un RGB krāsu maiņai.
  • Aptumšošanas funkcija darbojas tikai baltajai krāsai

*nejo 2008. gada oktobris

  • Noskaņojuma luktura skaņas paplašinājums:
  • Kondensatora mikrofons ar nelielu LM368 pastiprinātāju, recifieri un RC zemas caurlaides filtru
  • ar citu analogo ievadi Es izmantoju RGBPotMixer funkciju, lai mainītu krāsu, iegūstot mikrofona signālu.

* * * Kods, kas izgaismo 3 gaismas diodes, sarkanas, zaļas un zilas, vai vienu trīs krāsu LED, izmantojot PWM

  • Programma lēnām izgaist no sarkanas uz zaļu, no zaļas uz zilu un no zilas uz sarkanu
  • Atkļūdošanas kods pieņem Arduino 0004, jo tas izmanto jaunās Serial.begin () stila funkcijas
  • sākotnēji "dimmingLEDs" no Clay Shirky

*

  • AnalogRead ir iespējots Pin A0, lai mainītu RGB izbalēšanas ātrumu
  • AnalogRead ir iespējots pin A2, lai mainītu hueRGB krāsu

* * */#include // Outputint ledPin = 13; // controlPin atkļūdošanaiint redPin = 9; // Sarkana gaismas diode, savienota ar digitālo tapu 9int greenPin = 10; // Zaļā gaismas diode, savienota ar digitālo tapu 10int bluePin = 11; // Zila gaismas diode, savienota ar digitālo tapu 11int dimredPin = 3; // Analogās aptumšošanas vērtības tapas, savienotas ar tranzistora draiveri dimgreenPin = 5; int dimbluePin = 6; // Ievades slēdzisPin = 2; // slēdzis ir savienots ar tapu D2int val = 0; // mainīgais pin statusint buttonState lasīšanai; // mainīgais, lai turētu pogu stateint buttonPresses = 0; // 3 nospiež, lai dotos! Int potPin0 = 0; // Pot, lai pielāgotu kavēšanos starp izbalēšanu Moodlamp; int potPin2 = 2; // Potenciometra izeja hue maiņaiRGB colorint potVal = 0; // Mainīgais, lai saglabātu potenciometra ievadīto informāciju maxVal = 0; // vērtība, lai saglabātu aptumšošanas koeficienta noklusējuma vērtību, ir 255, ja nav pieslēgts katls dimPin = 4; // Katls savienots ar A4, lai samazinātu spilgtumu // Programmas mainīgie int redVal = 255; // Mainīgie lielumu saglabāšanai, lai tos nosūtītu uz pinsint greenVal = 1; // Sākotnējās vērtības ir sarkana pilna, zaļa un zila offint blueVal = 1; int i = 0; // Loop counter int wait; // = 15; // 50 ms (.05 sekundes) kavēšanās; saīsināt ātrākai izbalēšanai k = 0; // vērtība controlLED mirgojošajā funkcijāint DEBUG = 0; // DEBUG skaitītājs; ja iestatīts uz 1, rakstīs vērtības atpakaļ, izmantojot sērijveida LCD = 0; // LCD skaitītājs; ja iestatīts uz 1, rakstīs vērtības atpakaļ, izmantojot serialvoid setup () {pinMode (ledPin, OUTPUT); pinMode (redPin, OUTPUT); // uzstāda tapas kā izejas pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // uzstāda tapas kā izejas pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Iestatiet slēdža tapu kā ievades pielikumuInterrupt (0, isr0, RISING); if (DEBUG) {// Ja mēs vēlamies redzēt atkļūdošanas PIN vērtības … Serial.begin (9600); //… iestatīt sērijas izvadi 0004 stilā}}} // Galvenā programvoid cilpa () {if (buttonPresses == 0) {Moodlamp (); // izsauc Moodlight funkciju}, ja (buttonPresses == 1) {RGBPotMixer (); // izsauc manuel mix funkciju} if (buttonPresses == 2) {White (); // Šeit viss ir balts} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); // Balts (); Monitors (); dim ();} void Monitor () {// Nosūtīt valsti monitoram, ja (DEBUG) {// Ja mēs vēlamies nolasīt izvadi DEBUG += 1; // Palieliniet DEBUG skaitītāju, ja (DEBUG> 10) {// Drukāt ik pēc 10 cilpām DEBUG = 1; // Atiestatīt skaitītāju Serial.print (i); // Sērijas komandas 0004 stilā Serial.print ("\ t"); // Izdrukāt cilni Serial.print ("R:"); // Norādiet, ka izvade ir sarkanā vērtība Serial.print (redVal); // Drukāt sarkano vērtību Serial.print ("\ t"); // Izdrukāt cilni Serial.print ("G:"); // Atkārtojiet zaļajam un zilajam … Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, lai pabeigtu ar vagonu atgriešanos Serial.print ("\ t"); Serial.print ("dimValue:"); Sērijas nospiedums (maxVal); // println, lai pabeigtu ar vagonu atgriešanos Serial.print ("\ t"); Serial.print ("gaidīt:"); Serial.print (pagaidiet); // uzraksta monitoram potPin0 vērtību Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serial.print (potVal); // uzraksta monitoram potPin0 vērtību Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (buttonState); // uzraksta monitoram potPin0 vērtību Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (buttonPresses); // raksta pogas vērtībuPreses monitorā}}} void dim () // Funkcija aptumšošanai Balta // varbūt vēlāk visiem režīmiem {maxVal = analogRead (dimPin); maxVal /= 4; // Analog diapazons no 0..1024 pārāk daudz, lai aptumšotu 0..255 vērtību analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {gaidīt = analogRead (potPin0); // meklēt vērtību no potPin0; // ja nav pievienots Pot: pagaidiet 255 i += 1; // Palielinājuma skaitītājs // i = i - maxVal; if (i <255) // Izbalēšanas pirmā fāze {redVal -= 1; // Sarkans uz leju zaļšVal += 1; // Zaļš uz augšu zilsVal = 1; // Zils zems} else if (i <509) // Otrā fāžu fāze {redVal = 1; // Sarkans zems zaļšVal -= 1; // Zaļš uz leju zilsVal += 1; // Zils uz augšu} else if (i <763) // Izbalēšanas trešā fāze {redVal += 1; // Sarkans līdz zaļšVal = 1; // Zaļais lo2 blueVal -= 1; // Zils uz leju} cits // Atkārtoti iestatiet skaitītāju un atkal sāciet izbalēšanu {i = 1; } // mēs darām "255 -redVal", nevis tikai "redVal", jo // gaismas diodes ir pievienotas līdz +5 V, nevis Gnd analogWrite (redPin, 255 - redVal); // Ierakstiet pašreizējās vērtības LED tapās analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // aptumšošana dimredVal = max (redVal - maxVal, 0); dimgreenVal = min (zaļšVal - maxVal, 255); dimgreenVal = max (zaļšVal - maxVal, 0); dimblueVal = min (blueVal - maxVal, 255); dimblueVal = max (blueVal - maxVal, 0); analogWrite (redPin, 255 - dimredVal); // Ierakstiet pašreizējās vērtības LED tapās analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / gaidīt / = 4; aizkavēties (gaidīt); // Pauze gaidīšanai milisekundēs pirms cilpas atjaunošanas} void RGBPotMixer () {potVal = analogRead (potPin2); // nolasīt potenciometra vērtību pie ievades tapas potVal = potVal / 4; // pārvērst no 0-1023 uz 0-255 hue_to_rgb (potVal); // traktēt potVal kā nokrāsu un pārvērst par rgb vērtībām // "255-" ir tāpēc, ka mums ir kopēja anoda gaismas diodes, nevis parastais katoda analogWrite (redPin, 255-redVal); // Ierakstiet vērtības LED tapās analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } void White () {analogWrite (redPin, maxVal); // Ierakstiet vērtības LED tapās analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*

  • Ņemot vērā mainīgo nokrāsu “h”, kas svārstās no 0 līdz 252,
  • atbilstoši iestatiet RGB krāsu vērtību.
  • Tiek pieņemts maksimālais maksimālais piesātinājums un maksimālā vērtība (spilgtums)
  • Veic tīri veselu skaitļu matemātiku, bez peldošā komata.

*/void hue_to_rgb (baita nokrāsa) {if (nokrāsa> 252) nokrāsa = 252; // atgriezties pie 252 !! nejo baits hd = nokrāsa / 42; // 36 == 252/7, 252 == H_MAX baits hi = hd % 6; // dod 0-5 baitus f = nokrāsa % 42; baits fs = f * 6; slēdzis (hi) {gadījums 0: redVal = 252; greenVal = fs; blueVal = 0; pārtraukums; 1. gadījums: redVal = 252-fs; greenVal = 252; blueVal = 0; pārtraukums; 2. gadījums: redVal = 0; greenVal = 252; blueVal = fs; pārtraukums; 3. gadījums: redVal = 0; zaļšVal = 252-fs; blueVal = 252; pārtraukums; 4. gadījums: redVal = fs; greenVal = 0; blueVal = 252; pārtraukums; 5. gadījums: redVal = 252; greenVal = 0; blueVal = 252-fs; pārtraukums; }} void isr0 () {Serial.println ("\ n / n nepārtraukts / n"); buttonState = digitalRead (switchPin); // nolasīt sākotnējā stāvokļa aizkaviMikrosekundes (100000); // ja (val! = buttonState) {// pogas stāvoklis ir mainījies! // if (buttonState == HIGH) {// pārbaudiet, vai poga tagad ir nospiesta buttonPress ++; //} // val = buttonState; // saglabājiet jauno stāvokli mūsu mainīgajā if (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Nākamais posms bija tranzistoru draiveri. Es izmantoju 3 PNP tranzistorus ar maksimālo strāvu 3 ampēros. Pēc tam, kad tika regulēta strāva un spriegums, LED emitētājs strādāja lieliski ar pilnu intensitāti.

6. darbība: iegūstiet to atsevišķi, izmantojot PonyProg ierakstītu sāknēšanas ielādētāju

Iegūstiet to atsevišķi, izmantojot PonyProg ierakstītu sāknēšanas programmu
Iegūstiet to atsevišķi, izmantojot PonyProg ierakstītu sāknēšanas programmu

Kā izmantot savu paralēlo portu, lai sadedzinātu arduino sāknēšanas ielādētāju ATmega168 vai ATmega8, lai izmantotu lētu tukšu mikroshēmu ar arduino vidi. Drīzumā….. varbūt atsevišķā instrukcijā. Šeit ir arī labs pamācība izmantot mikroshēmu atsevišķi: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

7. solis: Tātad tas ir mans Arduino Moodlamp

Tātad tas ir mans Arduino garastāvoklis
Tātad tas ir mans Arduino garastāvoklis

Ja jums patika, lūdzu, novērtējiet mani.

Ieteicams: