Orodha ya maudhui:

Robo Moodlamp inayotengenezwa kwa mikono ya Arduino: Hatua 7
Robo Moodlamp inayotengenezwa kwa mikono ya Arduino: Hatua 7

Video: Robo Moodlamp inayotengenezwa kwa mikono ya Arduino: Hatua 7

Video: Robo Moodlamp inayotengenezwa kwa mikono ya Arduino: Hatua 7
Video: MELI kubwa Duniani Hii hapa, Ni Mji Unaoelea, Inatembea milele bila kusimama,Utashangaa ubunifu wake 2024, Julai
Anonim
Rod Moodlamp inayotengenezwa kwa mikono ya Arduino
Rod Moodlamp inayotengenezwa kwa mikono ya Arduino
Rod Moodlamp inayotengenezwa kwa mikono ya Arduino
Rod Moodlamp inayotengenezwa kwa mikono ya Arduino

Mafundisho haya yamegawanywa katika sehemu 5: - Kupanga ujenzi (Step1) - Kivuli kilichotengenezwa kwa mikono (Step2 + 3) - Mzunguko wa elektroniki wa kuendesha LED za 3W na mtawala wa ATmega8 (Step4) - Msimbo (Step5) - Jinsi ya kuipata simama peke yake (toa bootloader ya Arduino na PonyProg na choma mchoro) (Step6) inakuja hivi karibuni Vid: Baadhi ya Maonyesho

de.youtube.com/watch?v=apZ9NpaUG84 Pic1: Moodlamp Pic2: Nguvu kubwa ya 3W

Hatua ya 1: Kupanga Ujenzi:

Kupanga Ujenzi
Kupanga Ujenzi
Kupanga Ujenzi
Kupanga Ujenzi

Ninapenda kufanya dhana kwenye karatasi moja tu. Katika karatasi ya kwanza unaona maoni ya mapema. Nilichagua muundo wa kulia-chini. Ukurasa wa pili unaonyesha maelezo kadhaa ya vipimo vya ujenzi ni vya majaribio kama kila wakati, lakini sawa kwangu;-) Mawazo yangu ya vifaa yalikuwa: - Je! Ninaweza kushughulikia vifaa? - Je! Taa itaangaza kupitia kivuli? - Inapaswa kuwa na uwiano gani? - Je! nitahitaji vifungo na sufuria ngapi kwa kiolesura rahisi? Mawazo yangu ya programu yalikuwa: Je! taa nyingi zinapaswa kuwa na kazi ngapi? - RGB moja kwa moja inafifia na kasi inayobadilika - Marekebisho ya rangi ya Mwongozo - Nyeupe na mwangaza unaoweza kubadilishwa

Hatua ya 2: Kivuli kilichotengenezwa kwa mikono

Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono

Kukusanya vifaa: Kivuli: Nilipata karatasi ya futi 3 x 3 ya mguu 30 ya plastiki kwenye duka (Pic1-3). Tumia kisu kikali kuikata. Nilitia baridi plastiki kwa kutumia sandpaper (Pic4-6). Kwa pata silinda laini nilikusanya yote pamoja baada ya kuchimba mashimo ya kulia (Pic7-8). Panda vivuli vya plastiki kwenye vifaa vya shaba vilivyofungwa. Inaonekana vizuri na ni rahisi kupata na kushughulikia. Nilichimba na kugonga mashimo ili kufanana na bar ya nyuzi 1/8 (Pic9-10). Wakati huo huo, nilitengeneza heatsink kupoza taa za 3W na kuwa na msingi thabiti. Kwa kupata vivuli vingi sana kutoka kwenye shimoni, ninajenga ngome kidogo kutoka kwenye fimbo ya kulehemu na nati ya M8 juu (Pic12). Bisibisi kidogo na karanga zilikuwa ngumu kidogo, lakini dakika 30 baadaye nilimaliza.

Hatua ya 3: Kivuli kilichotengenezwa kwa mikono

Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono
Kivuli kilichotengenezwa kwa mikono

Msingi: Diski zilichekwa kwenye lathe ili kuifanya iwe laini na pande zote. Baadaye, niliitia rangi na rangi ya kuni ya mahogany ili kuifanya pine ionekane nzuri. Je! Ni nini baadaye?!? Niliamua kutengeneza msingi kwa kutumia hiyo hiyo. plastiki iliyokaushwa kama kivuli, na kuiweka nyuma na RGB microLED (Pic5). Vifungo: Nilitengeneza kitufe kutoka kwa kipande cha mahogany na vifungo kutoka kwa mkato wa nutwood.

Hatua ya 4: Mzunguko wa Umeme:

Mzunguko wa Umeme
Mzunguko wa Umeme
Mzunguko wa Umeme
Mzunguko wa Umeme
Mzunguko wa Umeme
Mzunguko wa Umeme

Kwenye picha ya kwanza unaona mpango wangu. Na hii hapa video nyingine: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1

Hatua ya 5: Kanuni:

Kanuni
Kanuni
Kanuni
Kanuni
Kanuni
Kanuni

Kwenye picha unaona mchakato wangu na Arduino. Kwanza nilijaribu kuzunguka na ProtoShield yangu ya kibinafsi, kifurushi cha betri na aina kadhaa za LEDs. Nilianza na "Miradi ya Spooky" na "BionicArduino" na TodEKurt miezi kadhaa iliyopita. mchanganyiko wa ujanja tu wa nambari ya mradi wake. "RGBMoodlight", "RGBPotMixer" na viongezeo vingine. Analog tatu na moja ya dijiti-kama kubadili mode (Shukrani kwa Ju. kwa usumbufu-wa kawaida:). kwa D9, D10 na D11 ambayo inasaidia PulseWithModulation. Ikiwa unapenda, ninaweza kuchapisha mchoro, lakini ni mchanganyiko wazi wa nambari mbili hizi nzuri. Hapa kuna nambari yangu ya asili ya taa. Inaonekana fujo kidogo, kwa sababu ilikuwa yangu hatua ya mapema sana katika programu… Lakini ikiwa utaiiga, inapaswa kufanya kazi vizuri. Kuna nafasi nzuri, kama "PotColorMixer", "RGBfadingFunction" na Interrupt-Routine ya switch- mode./* nejo June2008

Nambari ya "Moodlamp" yangu, kulingana na "kupunguka kwa mwangaza" na Clay Shirky

* nejo Sep2008

  • Nambari ya mwisho ya taa ya hali ya hewa na switch-mode-switch, piga kasi ya analog kwa RGB-kufifia na mabadiliko ya rangi ya RGB.
  • Kazi ya kufifia inafanya kazi tu kwa rangi nyeupe

* nejo Oktoba2008

  • Ugani wa sauti kwa taa ya hali ya hewa:
  • Kipaza sauti ya condensor na dogo LM368 Amp, kisimbuzi na kichujio cha chini cha kupitisha RC
  • na Ingizo lingine la Analogi mimi hutumia kazi ya RGBPotMixer kubadilisha rangi kwa kupata ishara ya mic.

Nambari ya mwangaza wa mwangaza wa mwangaza wa 3 LEDs, nyekundu, kijani na bluu, au LED ya rangi tatu, ukitumia PWM

  • Mpango huo unapita polepole kutoka nyekundu hadi kijani, kijani hadi bluu, na bluu hadi nyekundu
  • Nambari ya utatuzi inachukua Arduino 0004, kwani inatumia Serial.begin mpya () - kazi za mtindo
  • awali "hupunguza mwangaza" na Clay Shirky

*

  • AnalogRead imewezeshwa kwenye Pin A0 kutofautisha kasi ya kufifia ya RGB
  • AnalogRead imewezeshwa kwenye Pin A2 kutofautisha rangi ya hueRGB

* * * / # ni pamoja na // Outputint ledPin = 13; // controlPin kwa utatuzi wa rangi nyekunduPin = 9; // LED Nyekundu, iliyounganishwa na pini ya dijiti 9int greenPin = 10; // LED ya Kijani, iliyounganishwa na pini ya dijiti 10int bluePin = 11; // LED ya Bluu, iliyounganishwa na pini ya dijiti 11int dimredPin = 3; // Pini za thamani ya kupunguka kwa analog, iliyounganishwa na dereva wa transistorint dimgreenPin = 5; int dimbluePin = 6; // Inputint switchPin = 2; // swichi imeunganishwa na pin D2int val = 0; // kutofautisha kwa kusoma kitufe cha hali ya siri Jimbo; // variable kushikilia kitufe stateint buttonPresses = 0; / Mashinikizo 3 kwenda! Int potPin0 = 0; // Sufuria ya kurekebisha ucheleweshaji kati ya kufifia katika Moodlamp; int potPin2 = 2; // Pato la uwezo wa kubadilisha rangi ya hueRGB rangiVal = 0; // Kubadilika kuhifadhi pembejeo kutoka kwa potentiometerint maxVal = 0; // Thamani ya kuokoa chaguo-msingi la kufifia ni 255, ikiwa hakuna sufuria imeunganishwaint dimPin = 4; // Sufuria iliyounganishwa na A4 ili kupunguza mwangaza // Viwango vya programuint redVal = 255; // Vigezo vya kuhifadhi maadili ya kutuma kwa pini ya kijaniVal = 1; // Thamani za awali zimejaa Nyekundu, Kijani na Bluu rangi ya samawatiVal = 1; int i = 0; // Kukabiliana na kitanzi int kusubiri; // = 15; // 50ms (.05 sekunde) kuchelewa; fupisha kwa kasi kufifia k = 0; // thamani ya kudhibitiwa katika blink-functionint DEBUG = 0; // kaunta ya DEBUG; ikiwa imewekwa 1, itaandika maadili kupitia serialint LCD = 0; // kaunta ya LCD; ikiwa imewekwa 1, itaandika maadili kupitia usanidi wa serial () {pinMode (ledPin, OUTPUT); pinMode (nyekunduPin, OUTPUT); // huweka pini kama pinMode ya pato (greenPin, OUTPUT); pinMode (bluuPini, OUTPUT); pinMode (kipembePini, OUTPUT); pinMode (dimgreenPin, OUTPUT); // huweka pini kama pinMode ya pato (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Weka pini ya kubadili kama kiambatisho cha kuingizaInterrupt (0, isr0, RISING); ikiwa (DEBUG) {// Ikiwa tunataka kuona maadili ya siri kwa utatuzi … Serial.begin (9600); //… sanidi ouput mfululizo kwa mtindo wa 0004}} // Kitanzi kuu cha programu () {if (buttonPresses == 0) {Moodlamp (); // inaita kazi ya Moodlight} ikiwa (buttonPresses == 1) {RGBPotMixer (); // inaita kazi ya mchanganyiko wa manuel} ikiwa (buttonPresses == 2) {White (); // Ni nyeupe hapa} ikiwa (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); // Nyeupe (); Kufuatilia (); dim ();} batili Monitor () {// Tuma Jimbo kwa mfuatiliaji ikiwa (DEBUG) {// Ikiwa tunataka kusoma pato DEBUG + = 1; // Kuongeza kaunta ya DEBUG ikiwa (DEBUG> 10) {// Chapisha kila vitanzi 10 DEBUG = 1; // Rudisha counter counter.print (i); // amri za serial katika mtindo wa 0004 Serial.print ("\ t"); // Chapisha tabo Serial.print ("R:"); // Onyesha kwamba pato ni thamani nyekundu Serial.print (redVal); // Thamani ya rangi nyekundu Serial.print ("\ t"); // Chapisha tabo Serial.print ("G:"); // Rudia kijani na bluu… Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Rangi ya serial (BlueVal); // println, kumaliza na kurudi kwa shehena Serial.print ("\ t"); Serial.print ("dimValue:"); Printa ya serial (maxVal); // println, kumaliza na kurudi kwa shehena Serial.print ("\ t"); Serial.print ("subiri:"); Serial.print (subiri); // anaandika thamani ya potPin0 kwa mfuatiliaji Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Printa ya serial (PotVal); // anaandika thamani ya potPin0 kwa mfuatiliaji Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (kifungo cha Jimbo); // anaandika thamani ya potPin0 kwa mfuatiliaji Serial.print ("\ t"); Serial.print ("Kitufe cha waandishi wa habari:"); Serial.println (kifungo cha waandishi wa habari); // huandika thamani ya vitufeBonyeza kwa mfuatiliaji}}} utupu kuzima () // Kazi ya kufifia Nyeupe // labda baadaye kwa Njia zote {maxVal = analogRead (dimPin); maxVal / = 4; // Analog anuwai kutoka 0..1024 sana kwa kuzimisha 0..255 thamani ya AnalogWrite (dimredPin, maxVal); Andika Analog (dimgreenPin, maxVal); AnalogWrite (dimbluePin, maxVal);} batili Moodlamp () {wait = analogRead (potPin0); // tafuta thamani kutoka kwa sufuriaPin0; // ikiwa hakuna sufuria imeunganishwa: subiri 255 i + = 1; // Kaunta ya nyongeza // i = i - maxVal; ikiwa (i <255) // Awamu ya kwanza ya kufifia {redVal - = 1; // Nyekundu chini ya kijaniVal + = 1; // Kijani kijani bluuVal = 1; // Bluu chini} mwingine ikiwa (i <509) // Awamu ya pili ya kufifia {redVal = 1; // Nyekundu chini ya kijaniVal - = 1; // Kijani chini ya bluuVal + = 1; // Bluu juu} mwingine ikiwa (i <763) // Awamu ya tatu ya kufifia {redVal + = 1; // Nyekundu kijaniVal = 1; // Kijani lo2 bluuVal - = 1; // Bluu chini} mwingine // Weka tena kaunta, na uanze kufifia tena {i = 1; } // tunafanya "255-redVal" badala ya "redVal" tu kwa sababu // LEDs zimeunganishwa hadi + 5V badala ya Gnd analogWrite (redPin, 255 - redVal); // Andika maadili ya sasa kwa pini za LED analogWrite (greenPin, 255 - greenVal); AnalogWrite (bluePin, 255 - blueVal); / * dimredVal = dakika (RedVal - maxVal, 255); // kupunguka dimredVal = max (redVal - maxVal, 0); dimgreenVal = dakika (greenVal - maxVal, 255); dimgreenVal = max (kijaniVal - maxVal, 0); dimblueVal = dakika (blueVal - maxVal, 255); dimblueVal = max (bluuVal - maxVal, 0); AnalogWrite (RedPin, 255 - dimredVal); // Andika maadili ya sasa kwa pini za LED analogWrite (greenPin, 255 - dimgreenVal); Analog Andika (bluuPini, 255 - dimblueVal); * / subiri / = 4; kuchelewesha (subiri); // Pumzika kwa 'subiri' kwa milisekunde kabla ya kuanza tena kitanzi} batili RGBPotMixer () {potVal = analogRead (potPin2); // soma thamani ya potentiometer kwenye pini ya kuingiza sufuriaVal = potVal / 4; // kubadilisha kutoka 0-1023 hadi 0-255 hue_to_rgb (potVal); // chukua sufuriaVal kama hue na ubadilishe vals rgb // "255-" ni kwa sababu tuna LED za kawaida za anode, sio analog ya kawaida ya cathodeWrite (redPin, 255-redVal); // Andika maadili kwa pini za LED AnalogWrite (greenPin, 255-greenVal); Andika Analog (bluePin, 255-blueVal); } utupu Nyeupe () {analogWrite (redPin, maxVal); // Andika maadili kwa pini za LED analogWrite (greenPin, maxVal); AnalogWrite (bluePin, maxVal); } / *

  • Kwa kupewa hue inayobadilika 'h', ambayo ni kati ya 0-252,
  • weka thamani ya rangi ya RGB ipasavyo.
  • Inachukua Kueneza kwa kiwango cha juu na Thamani ya juu (mwangaza)
  • Inafanya hesabu kamili kabisa, hakuna mahali pa kuelea.

* / void hue_to_rgb (byte hue) {ikiwa (hue> 252) hue = 252; // kurudi nyuma hadi 252 !! nejo byte hd = hue / 42; // 36 == 252/7, 252 == H_MAX byte hi = hd% 6; // inatoa 0-5 byte f = hue% 42; fiti fs = f * 6; kubadili (hi) {kesi 0: redVal = 252; kijaniVal = fs; bluuVal = 0; kuvunja; kesi 1: redVal = 252-fs; kijaniVal = 252; bluuVal = 0; kuvunja; kesi 2: redVal = 0; kijaniVal = 252; bluuVal = fs; kuvunja; kesi 3: redVal = 0; kijaniVal = 252-fs; bluuVal = 252; kuvunja; kesi ya 4: redVal = fs; kijaniVal = 0; bluuVal = 252; kuvunja; kesi 5: redVal = 252; kijaniVal = 0; bluuVal = 252-fs; kuvunja; }} batili isr0 () {Serial.println ("\ n / n inerrupt / n"); kifungoState = digitalRead (switchPin); // soma ucheleweshaji wa hali ya awaliMicroseconds (100000); // if (val! = buttonState) {// hali ya kifungo imebadilika! // if (buttonState == HIGH) {// angalia ikiwa kitufe sasa kimeshinikiza kifungo Bonyeza ++; //} // val = kifungo Jimbo; // kuokoa hali mpya katika mabadiliko yetu ikiwa (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Hatua inayofuata walikuwa waendeshaji-transistor. Nilitumia transistors 3 za PNP na kiwango cha juu cha sasa kwenye 3Ampere. Baada ya mbele-sasa na voltage kudhibitiwa, mtangazaji wa LED alifanya kazi vizuri kwa ukali kamili.

Hatua ya 6: Itengeneze iwe sawa na PonyProg-burn Bootloader

Ipate kusimama na Bootloader iliyochomwa na PonyProg
Ipate kusimama na Bootloader iliyochomwa na PonyProg

Jinsi ya kutumia bandari yako ya paralell kuchoma bootloader ya arduino kwenye ATmega168 au ATmega8 kutumia chipu tupu na mazingira ya arduino hivi karibuni…. labda kwa tofauti inayoweza kufundishwa Hapa pia kuna mafunzo mazuri ya kutumia chip chipsi: https: / /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

Hatua ya 7: Kwa hivyo hiyo ni Moodlamp yangu ya Arduino

Kwa hiyo hiyo ni Moodlamp yangu ya Arduino
Kwa hiyo hiyo ni Moodlamp yangu ya Arduino

Ikiwa uliipenda, tafadhali nipime.

Ilipendekeza: