Sisällysluettelo:

Käsintehty Arduino-käyttöinen RGB-tunnelmavalaisin: 7 vaihetta
Käsintehty Arduino-käyttöinen RGB-tunnelmavalaisin: 7 vaihetta

Video: Käsintehty Arduino-käyttöinen RGB-tunnelmavalaisin: 7 vaihetta

Video: Käsintehty Arduino-käyttöinen RGB-tunnelmavalaisin: 7 vaihetta
Video: Mistä tilata veistos? Mistä ostaa räätälöityjä veistoksia? käsintehty 2024, Heinäkuu
Anonim
Käsintehty Arduino-käyttöinen RGB-tunnelmavalaisin
Käsintehty Arduino-käyttöinen RGB-tunnelmavalaisin
Käsintehty Arduino-käyttöinen RGB-tunnelmavalaisin
Käsintehty Arduino-käyttöinen RGB-tunnelmavalaisin

Tämä opas on jaettu 5 osaan:- Rakennuksen suunnittelu (vaihe 1)- käsintehty varjostin (vaihe 2+3)- elektroninen piiri 3 W: n LED-valojen ohjaamiseen ATmega8-ohjaimella (vaihe 4)- koodi (vaihe 5)- miten se saadaan itsenäinen (käynnistä Arduino-käynnistyslatain PonyProgilla ja polta luonnos) (vaihe 6) tulossa pian Vid: Jotkut näyttökerrat

de.youtube.com/watch?v=apZ9NpaUG84 Kuva 1: Moodlamp Pic2: mahtava 3 W: n LED

Vaihe 1: Rakentamisen suunnittelu:

Rakentamisen suunnittelu
Rakentamisen suunnittelu
Rakentamisen suunnittelu
Rakentamisen suunnittelu

Rakastan tehdä konseptin vain yhdelle paperiarkille, ja ensimmäisellä arkilla näet joitain varhaisia ideoita. Valitsin oikean alakulman. Toisella sivulla on joitain yksityiskohtia rakentamisesta. Mittaukset ovat kokeellisia, kuten joka kerta, mutta minulle ok;-) Laitteistoon liittyvät ajatukseni olivat:- Voinko käsitellä materiaaleja?- Voiko valo loistaa varjon läpi? - Mikä osuus sen pitäisi olla? - Kuinka monta nuppia ja kattilaa tarvitsen yksinkertaiseen käyttöliittymään? Ohjelmistoni ajatuksia olivat: Kuinka monta eri toimintoa lampulla pitäisi olla? - Automaattinen RGB -häipyminen muuttuvalla nopeudella - Manuaalinen värisäätö - Valkoinen, säädettävä kirkkaus

Vaihe 2: Käsintehty varjostin

Käsintehty varjostin
Käsintehty varjostin
Käsintehty varjostin
Käsintehty varjostin
Käsintehty varjostin
Käsintehty varjostin

Materiaalien kerääminen: Sävy: Löysin kaupasta 3 metrin x 3 jalan 30 millin muovilevyn (kuva 1-3) Leikkaa se terävällä veitsellä. Hanki sileä sylinteri. Ruuvasin sen kaikki yhteen oikeiden reikien poraamisen jälkeen (kuva 7-8). Se näyttää kauniilta ja on melko helppo saada ja käsitellä. Porasin ja napautin reikiä vastaamaan 1/8 kierteitettyä palkkia (kuva 9-10). Saadakseni liian monta sävyä akselilta, rakennan pienen häkin hitsaustangosta, jonka päällä on M8 -mutteri (kuva 12). Pienet ruuvit ja mutterit olivat hieman hankalia, mutta 30 minuutin kuluttua sain sen valmiiksi.

Vaihe 3: Käsintehty varjostin

Käsintehty varjostin
Käsintehty varjostin
Käsintehty varjostin
Käsintehty varjostin
Käsintehty varjostin
Käsintehty varjostin

Pohja: Levyt istutettiin sorviin, jotta se olisi sileä ja pyöreä. Jälkeenpäin värjäsin sen mahonkipuulla, jotta mänty näyttää hyvältä. Mitä seuraavaksi?!? Päätin tehdä pohjan käyttämällä samaa himmeä muovi varjossa ja taustavalo RGB microLED (Pic5) -näppäimellä.

Vaihe 4: Sähköpiiri:

Sähköpiiri
Sähköpiiri
Sähköpiiri
Sähköpiiri
Sähköpiiri
Sähköpiiri

Ensimmäisessä kuvassa näet kaavioni ja tässä on toinen video: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1

Vaihe 5: Koodi:

Koodi
Koodi
Koodi
Koodi
Koodi
Koodi

Kuvissa näet prosessini Arduinon kanssa. Ensinnäkin kokeilin itse tekemääni ProtoShieldiä, akkua ja jonkinlaisia LED -valoja. Aloitin TodEKurtin "Spooky Projects" ja "BionicArduino" muutama kuukausi sitten.https://todbot.com/blog/spookyarduino/Koodini on vain hankala yhdistelmä projektikoodistaan. "RGBMoodlight", "RGBPotMixer" ja jotkin laajennukset. Kolme analogista tuloa ja yksi digitaalitulo tilakytkimenä (kiitos Ju. keskeytysrutiinista:). LEDit on kytketty D9, D10 ja D11, jotka tukevat PulseWithModulation -ohjelmaa. Jos haluat, voin julkaista luonnoksen, mutta se on todella paljas yhdistelmä näistä kahdesta suuresta koodista. Tässä on lampun alkuperäinen koodi. hyvin varhaisessa vaiheessa ohjelmointia… Mutta jos kopioit sen, sen pitäisi toimia loistavasti. On hienoja rauhoja, kuten "PotColorMixer", "RGBfadingFunction" ja Interrupt-Routine mode-kytkimelle./* nejo June2008

Moodlamp -koodini, joka perustuu Clay Shirkyn "dimmingLED -valoihin"

*nejo syyskuu 2008

  • Moodlampun lopullinen koodi keskeytystilan kytkimellä, analoginen pikavalinta RGB-häivytykselle ja RGB-värinvaihdolle.
  • Himmennystoiminto toimii vain valkoisessa värissä

*nejo lokakuu 2008

  • Moodlampun äänen laajennus:
  • Kondensaattorimikrofoni, jossa on pieni LM368-vahvistin, recifier ja RC-alipäästösuodatin
  • toisen analogisen tulon kanssa Käytän RGBPotMixer-toimintoa värin muuttamiseen hankkimalla mikrofonisignaali.

* * * Koodi, joka hämärtää kolme LEDiä, punaista, vihreää ja sinistä, tai yhden kolmivärisen LED-valon, käyttäen PWM-tekniikkaa

  • Ohjelma haalistuu hitaasti punaisesta vihreäksi, vihreästä siniseksi ja sinisestä punaiseksi
  • Virheenkorjauskoodi olettaa Arduino 0004: n, koska se käyttää uusia Serial.begin () -tyylisiä toimintoja
  • alunperin "himmennysLEDit", kirjoittanut Clay Shirky

*

  • AnalogRead on käytössä nastassa A0 RGB -häipymisnopeuden vaihtamiseksi
  • AnalogRead on käytössä nastassa A2 hueRGB -värin vaihtamiseksi

* * */#include // Outputint ledPin = 13; // controlPin debuggingint redPin = 9; // Punainen LED, kytketty digitaaliseen nastaan 9int vihreäPin = 10; // Vihreä LED, kytketty digitaaliseen nastaan 10int bluePin = 11; // Sininen LED, kytketty digitaaliseen nastaan 11int dimredPin = 3; // Analogisen himmennysarvon nastat, kytketty transistorin ohjaimeen dimgreenPin = 5; int dimbluePin = 6; // Inputint switchPin = 2; // kytkin on kytketty nastaan D2int val = 0; // muuttuja pin statusint -painikkeen lukemiseenState; // muuttuja painikkeen painamiseksi stateint buttonPresses = 0; // 3 painaa! Int potPin0 = 0; // Potti häivytyksen välisen viiveen säätämiseksi Moodlampissa; int potPin2 = 2; // Potentiometrin lähtö hueRGB colorint potVal = 0; // Muuttuja, joka tallentaa potentiometrin tulon maxVal = 0; // himmennystekijän oletusarvo on 255, jos potti ei ole kytketty dimPin = 4; // Potti liitetty A4: ään kirkkauden himmentämiseksi // Ohjelmamuuttujatint redVal = 255; // Muuttujat pinsintille lähetettävien arvojen tallentamiseen greenVal = 1; // Alkuarvot ovat punainen täynnä, vihreä ja sininen offint blueVal = 1; int i = 0; // Silmukkalaskuri odottamisessa; // = 15; // 50 ms (.05 sekunnin) viive; lyhennä nopeampaa häipymistä k = 0; // controlLED-arvo vilkkutoiminnossaint DEBUG = 0; // DEBUG -laskuri; jos asetettu arvoon 1, kirjoittaa arvot takaisin sarjamuotoisen LCD -näytön kautta = 0; // LCD -laskuri; jos arvo on 1, kirjoittaa arvot takaisin serialvoid setup () {pinMode (ledPin, OUTPUT) kautta; pinMode (redPin, OUTPUT); // asettaa nastat lähtö pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (himmennetty Pin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // asettaa nastat lähtö pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Aseta kytkintappi tuloliitäntäänInterrupt (0, isr0, RISING); if (DEBUG) {// Jos haluamme nähdä nolla -arvot virheenkorjausta varten … Serial.begin (9600); //… aseta sarjalähtö 0004 -tyyliin}} // Pääohjelmointisilmukka () {if (buttonPresses == 0) {Moodlamp (); // kutsuu Moodlight -toimintoa}, jos (buttonPresses == 1) {RGBPotMixer (); // kutsuu manuel mix -toimintoa} if (buttonPresses == 2) {White (); // Täällä on kaikki valkoista} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); //Valkoinen(); Monitori(); dim ();} void Monitor () {// Lähetä tila monitorille, jos (DEBUG) {// Jos haluamme lukea tuloksen DEBUG += 1; // Lisää DEBUG -laskuria, jos (DEBUG> 10) {// Tulosta 10 silmukan välein DEBUG = 1; // Nollaa laskuri Serial.print (i); // Sarjakomennot 0004 -tyyliin Serial.print ("\ t"); // Tulosta välilehti Serial.print ("R:"); // Ilmoita, että lähtö on punainen arvo Serial.print (redVal); // Tulosta punainen arvo Serial.print ("\ t"); // Tulosta välilehti Serial.print ("G:"); // Toista vihreälle ja siniselle… Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial.print (blueVal); // println, päättyy vaununpalautukseen Serial.print ("\ t"); Serial.print ("dimValue:"); Serial.print (maxVal); // println, päättyy vaununpalautukseen Serial.print ("\ t"); Serial.print ("odota:"); Serial.print (odota); // kirjoittaa potPin0 -arvon monitorille Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serial.print (potVal); // kirjoittaa potPin0 -arvon monitorille Serial.print ("\ t"); Serial.print ("buttonState:"); Serial.print (buttonState); // kirjoittaa potPin0 -arvon monitorille Serial.print ("\ t"); Serial.print ("buttonPresses:"); Serial.println (buttonPress); // kirjoittaa painikkeen arvonPaina näyttöön}}} void dim () // Valon himmennystoiminto // ehkä myöhemmin kaikissa tiloissa {maxVal = analogRead (dimPin); maxVal /= 4; // Analoginen alue välillä 0..1024 liikaa 0..255 arvon analogWrite himmentämiseen (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // etsi arvo potPin0: sta; // jos pottia ei ole kytketty: odota 255 i += 1; // Lisäyslaskuri // i = i - maxVal; if (i <255) // Haalistumisen ensimmäinen vaihe {redVal -= 1; // Punainen alas vihreäVal += 1; // Vihreä ylös sininenVal = 1; // Sininen matala} else if (i <509) // Haalistumisen toinen vaihe {redVal = 1; // Punainen matala vihreäVal -= 1; // Vihreä alas sininenVal += 1; // Sininen ylös} else if (i <763) // Haalistumisten kolmas vaihe {redVal += 1; // Punainen ylös vihreäVal = 1; // Vihreä lo2 blueVal -= 1; // Sininen alas} else // Aseta laskuri uudelleen ja aloita häivytykset uudelleen {i = 1; } // teemme "255 -redVal" pelkän "redVal" sijasta, koska // LEDit on kytketty +5 V: iin Gnd analogWrite (redPin, 255 - redVal) sijaan; // Kirjoita nykyiset arvot LED -nastoihin analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // himmennys dimredVal = max (redVal - maxVal, 0); dimgreenVal = min (vihreäVal - maxVal, 255); dimgreenVal = max (vihreäVal - maxVal, 0); dimblueVal = min (sininenVal - maxVal, 255); dimblueVal = max (sininenVal - maxVal, 0); analogWrite (redPin, 255 - dimredVal); // Kirjoita nykyiset arvot LED -nastoihin analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / odota / = 4; viive (odota); // Tauko odottamaan millisekuntia ennen silmukan jatkamista} void RGBPotMixer () {potVal = analogRead (potPin2); // lukee potentiometrin arvon tulonapista potVal = potVal / 4; // muuntaa arvosta 0-1023 arvoon 0-255 hue_to_rgb (potVal); // kohtele potValia värisävyksi ja muunna rgb-arvoiksi // "255-" johtuu siitä, että meillä on yhteisen anodin LEDit, ei yhteisen katodin analogWrite (redPin, 255-redVal); // Kirjoita arvot LED-nastoihin analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } tyhjä Valkoinen () {analogWrite (redPin, maxVal); // Kirjoita arvot LED -nastoihin analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); }/*

  • Koska muuttuva sävy 'h' on 0-252,
  • aseta RGB -väriarvo oikein.
  • Olettaa maxValimum Saturation & Maximum Value (kirkkauden)
  • Laskee puhtaasti kokonaislukumäärän, ei liukulukua.

*/void hue_to_rgb (tavun sävy) {if (värisävy> 252) sävy = 252; // palautus 252 !! nejo tavu hd = sävy / 42; // 36 == 252/7, 252 == H_MAX -tavu hi = hd % 6; // antaa 0-5 tavua f = sävy % 42; tavu fs = f * 6; kytkin (hi) {tapaus 0: redVal = 252; vihreäVal = fs; blueVal = 0; tauko; tapaus 1: redVal = 252-fs; vihreäVal = 252; blueVal = 0; tauko; tapaus 2: redVal = 0; vihreäVal = 252; blueVal = fs; tauko; tapaus 3: redVal = 0; vihreäVal = 252-fs; blueVal = 252; tauko; tapaus 4: redVal = fs; vihreäVal = 0; blueVal = 252; tauko; tapaus 5: redVal = 252; vihreäVal = 0; blueVal = 252-fs; tauko; }} void isr0 () {Serial.println ("\ n / n keskeytymätön / n"); buttonState = digitalRead (switchPin); // lukea alkutilan viiveMikrosekuntia (100000); // jos (val! = buttonState) {// painikkeen tila on muuttunut! // if (buttonState == HIGH) {// tarkista, onko painiketta nyt painettu buttonPresses ++; //} // val = buttonState; // tallenna uusi tila muuttujaamme if (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Seuraava vaihe oli transistoriohjaimet. Käytin 3 PNP -transistoria, joiden maksimivirta oli 3 ampeeria. Kun eteenpäin suuntautuvaa virtaa ja jännitettä oli säädetty, LED-säteilijä toimi hyvin täydellä teholla.

Vaihe 6: Hanki se itsenäiseksi PonyProg-poltetun käynnistyslataimen avulla

Hanki se itsenäiseksi PonyProg-poltetun käynnistyslataimen avulla
Hanki se itsenäiseksi PonyProg-poltetun käynnistyslataimen avulla

Kuinka käyttää rinnakkaisporttiasi polttaaksesi arduino -käynnistyslataimen ATmega168: lla tai ATmega8: lla halvan tyhjän sirun käyttämiseksi arduino -ympäristön kanssa. Tulossa pian….. ehkä erillisellä ohjeella Tässä on myös hyvä ohje sirun käyttämiseen itsenäisesti: /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

Vaihe 7: Joten se on minun Arduino Moodlamp

Tämä on minun Arduino Moodlamp
Tämä on minun Arduino Moodlamp

Jos pidit siitä, arvostele minua.

Suositeltava: