Talaan ng mga Nilalaman:
- Hakbang 1: Pagpaplano ng Konstruksyon:
- Hakbang 2: Ang Handmade Shade
- Hakbang 3: Ang Handmade Shade
- Hakbang 4: Ang Electric Circuit:
- Hakbang 5: Ang Code:
- Hakbang 6: Kunin Ito Mag-iisa Sa PonyProg-burn Bootloader
- Hakbang 7: Kaya Iyon ang Aking Arduino Moodlamp
Video: Ginawang kamay ng Rdu na Moodlamp na pinapatakbo ng Arduino: 7 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:15
Ang itinuturo na ito ay nahahati sa 5 bahagi: - Pagpaplano ng konstruksyon (Step1) - Ang handmade shade (Step2 + 3) - Ang electronic circuit para sa pagmamaneho ng 3W LEDs na may ATmega8 controller (Step4) - Ang Code (Step5) - Paano ito makukuha mag-isa (i-flash ang Arduino bootloader gamit ang PonyProg at sunugin ang sketch) (Hakbang6) na paparating Vid: Some Impressions
de.youtube.com/watch?v=apZ9NpaUG84 Pic1: The Moodlamp Pic2: Isang makapangyarihang 3W LED
Hakbang 1: Pagpaplano ng Konstruksyon:
Gustung-gusto kong gumawa ng isang konsepto sa isang sheet lamang ng papel. Sa unang sheet makikita mo ang ilang mga maagang ideya. Pinili ko ang kanang ibaba na disenyo. Ipinapakita ng pangalawang pahina ang ilang mga detalye para sa konstruksyon. Ang mga pagsukat ay pang-eksperimentong tulad ng bawat oras, ngunit ok para sa akin;-) Ang aking saloobin sa hardware ay: - Maaari ko bang hawakan ang mga materyales? - Magaan ba ang ilaw sa pamamagitan ng lilim? - Anong proporsyon ang dapat magkaroon nito? - Ilan sa mga knob at kaldero ang kakailanganin ko para sa isang simpleng interface? Ang aking saloobin ng software ay: Gaano karaming iba't ibang mga pag-andar ang dapat magkaroon ng ilawan? - Puti na may naaayos na ningning
Hakbang 2: Ang Handmade Shade
Pagtitipon ng mga materyales: Ang lilim: Nakakita ako ng isang 3 talampakan x 3 talampakang paa ng 30 mill na plastik sa tindahan (Pic1-3). Gumamit ng isang matalim na kutsilyo upang i-cut ito. Nag-frost ako ng plastik gamit ang liha (Pic4-6). Upang kumuha ng isang makinis na silindro pinagsama ko ang lahat pagkatapos ng pagbabarena ng mga tamang butas (Pic7-8). Itaas ang mga plastik na shade sa sinulid na mga suporta sa tanso. Maganda ang hitsura at madali itong makuha at hawakan. Nag-drill ako at tinapik ang mga butas upang tumugma sa 1 / 8th threaded bar (Pic9-10). Samantala, gumawa ako ng isang heatsink upang palamig ang 3W LEDs at magkaroon ng isang matatag na base. Para sa pagkuha ng hindi masyadong maraming kakulay mula sa baras, bumubuo ako ng isang maliit na hawla mula sa welding rod na may isang M8 nut sa itaas (Pic12). Bilang pagtatapos ay tipunin ko lahat. Ang maliit na mga turnilyo at mani ay medyo nakakalito, ngunit pagkalipas ng 30 minuto ay natapos ko na.
Hakbang 3: Ang Handmade Shade
Ang base: Ang mga disc ay chucked sa lathe upang makuha itong makinis at bilugan. Pagkatapos, nilagyan ko ito ng mantsa ng kahoy na mahogany upang gawin itong maganda ang pine. Ano ang susunod?!? Nagpasiya akong gumawa ng isang base gamit ang pareho nagyelo na plastik bilang lilim, at i-backlight ito ng isang RGB microLED (Pic5). Ang mga knobs: Ginawa ko ang pindutan mula sa isang piraso ng mahogany at mga knobs mula sa isang offcut ng nutwood.
Hakbang 4: Ang Electric Circuit:
Sa unang larawan nakikita mo ang aking iskematiko. At narito ang isa pang video: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1
Hakbang 5: Ang Code:
Sa mga larawan nakikita mo ang aking proseso kasama si Arduino. Una sinubukan ko ang paligid gamit ang aking selfmade ProtoShield, isang baterya pack at ilang uri ng LEDs. Nagsimula ako sa "Spooky Projects" at "BionicArduino" ni TodEKurt ilang buwan na ang nakakaraan. Https://todbot.com/blog/spookyarduino/ Ang aking code ay isang mahirap na pagsasama-sama lamang ng kanyang code ng proyekto. "RGBMoodlight", "RGBPotMixer" at ilang mga extension. Tatlo na analog-in at sa D9, D10 at D11 na sumusuporta sa PulseWithModulation. Kung nais mo, mailalathala ko ang sketch, ngunit ito ay isang hubad na kumbinasyon ng dalawang mahusay na mga code. Narito ang aking orihinal na code ng lampara. Mukha itong medyo magulo, dahil ito ang aking napaka maagang yugto sa pagprograma … Ngunit kung kopyahin mo ito, dapat itong gumana nang mahusay. Mayroong mga magagandang kapayapaan, tulad ng "PotColorMixer", ang "RGBfadingFunction" at ang Interrupt-Routine para sa mode-switch./* nejo June2008
Code para sa aking "Moodlamp", batay sa "dimmingLEDs" ni Clay Shirky
* nejo Sep2008
- Pangwakas na code para sa moodlamp na may interrupt-mode-switch, analog speed-dial para sa RGB-fading at RGB na pagbabago ng kulay.
- Gumagana ang dimming-function para lamang sa puting kulay
* nejo Oktubre2008
- Sound-extension para sa moodlamp:
- Isang mikropono ng condensor na may isang maliit na LM368 Amp, isang recifier at isang RC-low-pass-filter
- gamit ang isa pang analogInput Ginagamit ko ang RGBPotMixer-function upang mabago ang kulay sa pamamagitan ng pagkuha ng mic-signal.
* * * Code para sa cross-fading 3 LEDs, pula, berde at asul, o isang tri-color LED, gamit ang PWM
- Ang program ay tumatawid nang dahan-dahan mula sa pula hanggang berde, berde hanggang asul, at asul hanggang pula
- Ipinapalagay ng code ng pag-debug ang Arduino 0004, dahil gumagamit ito ng bagong Serial.begin () na mga istilong pag-andar
- orihinal na "dimmingLEDs" ni Clay Shirky
*
- Pinapagana ang AnalogRead sa Pin A0 upang maiiba ang bilis ng pagkupas ng RGB
- Ang AnalogRead ay pinagana sa Pin A2 upang maiiba ang kulay ng hueRGB
* * * / # isama // Outputint ledPin = 13; // controlPin para sa pag-debug ng redPin = 9; // Red LED, konektado sa digital pin 9int greenPin = 10; // Green LED, konektado sa digital pin 10int bluePin = 11; // Blue LED, konektado sa digital pin 11int dimredPin = 3; // Pins para sa halaga ng analog dimming, na konektado sa transistor driverint dimgreenPin = 5; int dimbluePin = 6; // Inputint switchPin = 2; // switch ay konektado sa pin D2int val = 0; // variable para sa pagbabasa ng pin statusint buttonState; // variable upang hawakan ang pindutan ng stateint buttonPresses = 0; // 3 presses to go! Int potPin0 = 0; // Pot para sa pag-aayos ng pagkaantala sa pagitan ng pagkupas sa Moodlamp; int potPin2 = 2; // Potentiometer output para sa pagbabago ng hueRGB colorint potVal = 0; // Variable upang maiimbak ang input mula sa potentiometerint maxVal = 0; // halaga upang mai-save ang dimming factor default ay 255, kung walang Pot na konektadoint dimPin = 4; // Pot na konektado sa A4 upang madilim ang ningning // Program variablesint redVal = 255; // Variable upang maiimbak ang mga halagang maipapadala sa pinint greenVal = 1; // Paunang halaga ay Pula na puno, berde at Blue offint blueVal = 1; int i = 0; // Loop counter int wait; // = 15; // 50ms (.05 segundo) pagkaantala; paikliin para sa mas mabilis na fadesint k = 0; // halaga para sa controlLED sa blink-functionint DEBUG = 0; // DEBUG counter; kung nakatakda sa 1, susulat ang mga halaga pabalik sa pamamagitan ng serialint LCD = 0; // LCD counter; kung nakatakda sa 1, isusulat ang mga halaga pabalik sa pamamagitan ng pag-setup ng serialvoid () {pinMode (ledPin, OUTPUT); pinMode (redPin, OUTPUT); // nagtatakda ng mga pin bilang output pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // nagtatakda ng mga pin bilang output pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Itakda ang switch pin bilang input attachInterrupt (0, isr0, RISING); kung (DEBUG) {// Kung nais naming makita ang mga halagang pin para sa pag-debug … Serial.begin (9600); //… i-set up ang serial ouput sa 0004 style}} // Pangunahing programvoid loop () {kung (buttonPresses == 0) {Moodlamp (); // tawag sa pagpapaandar ng Moodlight} kung (buttonPresses == 1) {RGBPotMixer (); // tawag sa pagpapaandar ng manuel mix} kung (buttonPresses == 2) {White (); // Puti ang lahat dito} kung (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); // Puti (); Subaybayan (); malabo ();} walang bisa Monitor () {// Ipadala ang Estado sa monitor kung (DEBUG) {// Kung nais naming basahin ang output DEBUG + = 1; // Palakihin ang DEBUG counter kung (DEBUG> 10) {// I-print ang bawat 10 mga loop DEBUG = 1; // Reset the counter Serial.print (i); // Serial utos sa 0004 style Serial.print ("\ t"); // Print a tab Serial.print ("R:"); // Ipahiwatig na ang output ay pulang halaga Serial.print (redVal); // Print red value Serial.print ("\ t"); // Print a tab Serial.print ("G:"); // Repeat for green and blue… Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, upang wakasan sa isang pagbalik ng karwahe Serial.print ("\ t"); Serial.print ("dimValue:"); Serial.print (maxVal); // println, upang wakasan sa isang pagbalik ng karwahe Serial.print ("\ t"); Serial.print ("wait:"); Serial.print (maghintay); // nagsusulat ng halaga ng potPin0 sa monitor Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serial.print (potVal); // nagsusulat ng halaga ng potPin0 sa monitor Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (buttonState); // nagsusulat ng halaga ng potPin0 sa monitor Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (buttonPresses); // nagsusulat ng halaga ng mga pindutan ng Press sa monitor}}} void dim () // Function for dimming White // baka mamaya para sa lahat ng Mga Mode {maxVal = analogRead (dimPin); maxVal / = 4; // Saklaw ng analog mula sa 0..1024 ng sobra para sa pagpapadilim sa 0..255 na halaga na analogWrite (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // hanapin ang halaga mula sa potPin0; // kung walang Koneksyon na konektado: maghintay 255 i + = 1; // Increment counter // i = i - maxVal; kung (i <255) // First phase of fades {redVal - = 1; // Red down greenVal + = 1; // Green up blueVal = 1; // Blue low} pa kung (i <509) // Pangalawang phase ng fades {redVal = 1; // Red low greenVal - = 1; // Green down blueVal + = 1; // Blue up} pa kung (i <763) // Third phase of fades {redVal + = 1; // Red up greenVal = 1; // Green lo2 blueVal - = 1; // Blue down} else // Itakda muli ang counter, at simulang muli ang mga fades {i = 1; } // ginagawa namin ang "255-redVal" sa halip na "redVal" lamang dahil ang // LEDs ay naka-hook hanggang sa + 5V sa halip na Gnd analogWrite (redPin, 255 - redVal); // Isulat ang kasalukuyang mga halaga sa LED pin analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); / * dimredVal = min (redVal - maxVal, 255); // dimming 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); // Isulat ang kasalukuyang mga halaga sa LED pin analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / wait / = 4; antala (maghintay); // I-pause ang 'wait' milliseconds bago ipagpatuloy ang loop} void RGBPotMixer () {potVal = analogRead (potPin2); // basahin ang halagang potentiometer sa input pin potVal = potVal / 4; // convert from 0-1023 to 0-255 hue_to_rgb (potVal); // treat potVal as hue and convert to rgb vals // "255-" is because we have common-anode LEDs, not common-cathode analogWrite (redPin, 255-redVal); // Sumulat ng mga halaga sa LED pin analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } void White () {analogWrite (redPin, maxVal); // Sumulat ng mga halaga sa LED pin analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); } / *
- Dahil sa isang variable na kulay na 'h', mula sa 0-252,
- itakda nang wasto ang halagang kulay ng RGB.
- Ipinapalagay ang maxValimum na saturation at maximum na Halaga (ningning)
- Gumaganap ng pulos integer matematika, walang lumulutang point.
* / void hue_to_rgb (byte hue) {kung (hue> 252) hue = 252; // stetback sa 252 !! nejo byte hd = hue / 42; // 36 == 252/7, 252 == H_MAX byte hi = hd% 6; // nagbibigay ng 0-5 byte f = hue% 42; byte fs = f * 6; switch (hi) {case 0: redVal = 252; greenVal = fs; blueVal = 0; pahinga; kaso 1: redVal = 252-fs; greenVal = 252; blueVal = 0; pahinga; kaso 2: redVal = 0; greenVal = 252; blueVal = fs; pahinga; kaso 3: redVal = 0; greenVal = 252-fs; blueVal = 252; pahinga; kaso 4: redVal = fs; greenVal = 0; blueVal = 252; pahinga; kaso 5: redVal = 252; greenVal = 0; blueVal = 252-fs; pahinga; }} void isr0 () {Serial.println ("\ n / n inerrupt / n"); buttonState = digitalRead (switchPin); // basahin ang paunang state delayMicroseconds (100000); // if (val! = buttonState) {// nagbago ang estado ng pindutan! // if (buttonState == MATAAS) {// suriin kung ang pindutan ay pinindot na pindutan ng Presses ++; //} // val = buttonState; // save the new state in our variable if (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Susunod na yugto ay ang mga transistor-driver. Gumamit ako ng 3 PNP transistors na may maximum na kasalukuyang sa 3Ampere. Matapos makontrol ang forward-current at boltahe, ang LEDemitter ay gumana nang buong lakas.
Hakbang 6: Kunin Ito Mag-iisa Sa PonyProg-burn Bootloader
Paano gamitin ang iyong paralell port upang sunugin ang arduino bootloader sa isang ATmega168 o ATmega8 upang magamit ang isang murang blangko na chip na may arduino environment.coming malapit na ….. marahil sa isang hiwalay na itinuturo Narito din ang isang mahusay na nagtuturo na gamitin ang solong chip: https: / /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
Hakbang 7: Kaya Iyon ang Aking Arduino Moodlamp
Kung nagustuhan mo ito, mangyaring i-rate ako.
Inirerekumendang:
20 Pangalawang Kamay sa Paghugas ng Kamay para sa COVID-19: 6 Mga Hakbang (na may Mga Larawan)
20 Second Hand washing Timer para sa COVID-19: Habang kumakalat ang pandaigdigang COVID-19, dapat nating protektahan ang ating sarili hindi lamang sa pamamagitan ng pagtipon ng mas kaunti at pagsusuot ng face mask, kundi pati na rin sa paghuhugas ng kamay nang mas madalas. Hindi ito epektibo laban sa mga virus kung hindi ka t hugasan nang maayos ang iyong mga kamay. Paano hugasan nang wasto ang ating mga kamay? W
Tote na Ginawang Kamay ng Circuit Playground Express (CPE): 5 Mga Hakbang
Tote na Ginawang Handmade ng Circuit Playground Express (CPE): Sa Hindi mai-install na ito makakakuha ka ng mga hakbang upang mai-code ang iyong Circuit Playground Express (CPE) microcontroller sa MakeCode at gumawa ng isang tote mula sa isang flannel shirt at iba pang tela. Maraming silid para sa interpretasyon at pagbabago! Ano ang prog mo
Gesture Hawk: Kamay na Kinokontrol ng Robot na Kamay Gamit ang Pagproseso ng Imahe Batay sa Interface: 13 Mga Hakbang (na may Mga Larawan)
Gesture Hawk: Kamay na Kinokontrol ng Robot na Kamay Gamit ang Pagproseso ng Imahe Batay sa Interface: Ang Gesture Hawk ay ipinakita sa TechEvince 4.0 bilang isang simpleng pagproseso ng imahe batay sa interface ng human-machine. Ang utility nito ay nakasalalay sa katotohanan na walang karagdagang mga sensor o naisusuot maliban sa isang guwantes ang kinakailangan upang makontrol ang robotic car na tumatakbo sa iba't ibang
Remote ng Ginawang IR na Ginawa ng Kamay: 5 Mga Hakbang (na may Mga Larawan)
Remote ng Hand Made IR: Sa aking naunang proyekto ginamit ko ang aparatong ito bilang isang IR Transmitter at nangakong i-upload ang paglalarawan ng proyekto na ito sa mga susunod na instruksyon. Kaya't ipinakita ko sa iyo ang IR Transmitter gamit ang 555 Timer. Huling proyekto kung saan nais ng remote na ito na magdisenyo ng isang astable mult
Lead sa Kamay sa Kamay: 17 Mga Hakbang (na may Mga Larawan)
Left-Handed Camera Adapter: Isang modular camera adapter na idinisenyo upang payagan ang isang gumagamit na madaling manipulahin at buhayin ang isang camera gamit ang kaliwang kamay lamang. Ang sistemang ito ay katugma sa anumang point-and-shoot na kamera, at orihinal na idinisenyo para sa isang gumagamit na may paralisis sa kanang bahagi na