Mündəricat:
- Addım 1: Tikintinin planlaşdırılması:
- Addım 2: Əl istehsalı kölgə
- Addım 3: Əl istehsalı kölgə
- Addım 4: Elektrik dövrəsi:
- Addım 5: Kod:
- Addım 6: PonyProg tərəfindən yandırılmış Bootloader ilə Bağımsız alın
- Addım 7: Deməli bu mənim Arduino Moodlamp'ımdır
Video: Əl işi Arduino ilə işləyən RGB Moodlamp: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:49
Bu təlimat 5 hissəyə bölünür:- Tikintinin planlaşdırılması (Addım 1)- Əl istehsalı kölgə (Addım 2+3)- ATmega8 nəzarətçi ilə 3W LED-lərin idarə edilməsi üçün elektron sxem (Addım 4)- Kod (Addım 5)- Necə əldə etmək olar tək başına (PonyProg ilə Arduino yükləyicisini yandırın və eskizi yandırın) (Addım 6) tezliklə Vid: Bəzi Təəssüratlar
de.youtube.com/watch?v=apZ9NpaUG84 Şəkil 1: The Moodlamp Pic2: Güclü 3W LED
Addım 1: Tikintinin planlaşdırılması:
Yalnız bir vərəqdə bir konsepsiya etməyi sevirəm. İlk səhifədə bəzi erkən fikirlər görürsən. Sağ alt dizaynı seçdim. İkinci səhifədə inşaat üçün bəzi detallar göstərilir. Ölçmələr hər dəfə olduğu kimi eksperimentaldır, amma mənim üçün yaxşıdır;-) Təchizat düşüncələrim belə idi:- Materialları idarə edə bilərəmmi?- İşıq parlayacaqmı? kölgədə? - Hansı nisbətə sahib olmalıdır? - Sadə bir interfeys üçün neçə düymə və qazana ehtiyacım olacaq? Proqram düşüncələrim: Lampanın neçə fərqli funksiyası olmalıdır? - Dəyişən sürətlə avtomatik RGB solması - Manuel rəng tənzimlənməsi - Parlaqlığı tənzimlənən ağ rəng
Addım 2: Əl istehsalı kölgə
Materialları toplamaq: Kölgə: Mağazada 30 dəyirman plastikdən 3 ayaq x 3 ayaq ölçülü bir təbəqə tapdım (Şəkil 1-3). Kəsmək üçün iti bıçaq istifadə edin. Zımpara ilə plastikdən donmuşam (Şəkil 4-6). hamar silindr əldə edin, doğru delikləri qazandan sonra hamısını vidaladım (Şəkil 7-8). Gözəl görünür və idarə etmək çox asandır. 1/8 dişli çubuğa uyğun olaraq deliklər qazdım və vurdum (Şəkil 9-10). Eyni zamanda 3W LED-ləri soyutmaq və möhkəm bir bazaya sahib olmaq üçün bir soyuducu hazırladım. Şaftdan çox kölgə əldə etməmək üçün, üstündə M8 qozu olan qaynaq çubuğundan kiçik bir qəfəs qururam (Şəkil12). Bütün işi bir yerə yığdım. Kiçik vintlər və qoz -fındıq bir az çətin idi, amma 30 dəqiqə sonra bunu bacardım.
Addım 3: Əl istehsalı kölgə
Baza: Disklər hamar və yuvarlaq olması üçün dəzgahda sıxılmışdı. Daha sonra şamın gözəl görünməsi üçün maun ağac ləkəsi ilə ləkələdim. Sonra nə olacaq?!? kölgə kimi donmuş plastik və bir RGB microLED ilə arxa işıq (Şəkil 5). Düymələr: Mən düyməni bir ağac ağacından və düymələri qoz ağacından kəsdim.
Addım 4: Elektrik dövrəsi:
İlk şəkildəki sxemimi görürsünüz və burada başqa bir video var: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1
Addım 5: Kod:
Şəkillərdə Arduino ilə prosesimi görürsünüz. Əvvəlcə özüm hazırladığım ProtoShield, bir batareya paketi və bir neçə növ LED ilə sınaqdan keçirdim. Bir neçə ay əvvəl TodEKurt "Spooky Projects" və "BionicArduino" ilə başladım. "RGBMoodlight", "RGBPotMixer" və bəzi uzantılar. Üç analoq və bir rəqəmsal giriş rejimi olaraq Ju (kəsmə rejiminə görə təşəkkür edirik:). LEDlər bağlıdır PulseWithModulation -ı dəstəkləyən D9, D10 və D11 -ə. İstəsəniz, eskizi dərc edə bilərəm, amma bu iki böyük kodun həqiqətən çılpaq birləşməsidir. İşdə orijinal lampa kodum. Bir az qarışıq görünür, çünki mənim idi Proqramlaşdırmanın çox erkən mərhələsi… Ancaq kopyalasanız, əla işləməlidir. "PotColorMixer", "RGBfadingFunction" və rejimi dəyişdirmək üçün kəsmə-rutin kimi gözəl barışıqlar var./* nejo June2008
Clay Shirky tərəfindən "dimmingLEDs" ə əsaslanan "Moodlamp" kodum
*sentyabr 2008
- Kəsmə rejimi-keçid, RGB-solma və RGB rəng dəyişikliyi üçün analog sürətli yığım ilə moodlamp üçün son kod.
- Karartma funksiyası yalnız ağ rəng üçün işləyir
*nejo oktyabr 2008
- Ruh halını tənzimləmək üçün səs uzadılması:
- Kiçik bir LM368 Amp, bir resifier və aşağı keçid filtrli kondensator mikrofonu
- başqa analogInput ilə mikrofon siqnalı alaraq rəngi dəyişdirmək üçün RGBPotMixer funksiyasından istifadə edirəm.
* * * PWM istifadə edərək qırmızı, yaşıl və mavi və ya bir üç rəngli LED-lərin kəsişən 3 LED-i üçün kod
- Proqram yavaş-yavaş qırmızıdan yaşıl, yaşıldan maviyə və mavidən qırmızıya keçər
- Hata ayıklama kodu, yeni Serial.begin () tipli funksiyalardan istifadə etdiyi üçün Arduino 0004-ü qəbul edir.
- əslində Clay Shirky tərəfindən "dimmingLEDs"
*
- AnalogRead, Pin A0 -da RGB sönmə sürətini dəyişmək üçün aktivdir
- HueRGB rəngini dəyişdirmək üçün Pin A2 -də AnalogRead aktivdir
* * */#daxildir // Çıxış ledPin = 13; // hata ayıklama üçün controlPin redPin = 9; // Qırmızı LED, rəqəmsal pin 9int greenPin = 10 -a bağlıdır; // Yaşıl LED, rəqəmsal pin 10int bluePin = 11 -ə bağlıdır; // Mavi LED, rəqəmsal pin 11int dimredPin = 3 -ə bağlıdır; // Analoq karartma dəyəri üçün pinlər, tranzistor sürücüsünə bağlıdır dimgreenPin = 5; int dimbluePin = 6; // Giriş girişiPin = 2; // keçid D2int pininə bağlıdır val = 0; // pin statusint düyməsini oxumaq üçün dəyişənState; // düyməni saxlamaq üçün dəyişən stateint buttonPresses = 0; // getmək üçün 3 dəfə basın! İnt potPin0 = 0; // Moodlamp -da solma arasındakı gecikməni tənzimləmək üçün qazan; int potPin2 = 2; // hueRGB colorint potVal = 0 dəyişdirmək üçün potansiyometr çıxışı; // maxVal = 0 potansiyometrindən daxil olan məlumatları saxlamaq üçün dəyişən; // dimPin = 4 -də heç bir Pot bağlı deyilsə, karartma faktorunu saxlamaq üçün dəyər 255 -dir; // Parlaqlığı azaltmaq üçün A4 -ə bağlı qazan // Proqram dəyişənləri redVal = 255; // pinsint greenVal = 1 -ə göndəriləcək dəyərləri saxlamaq üçün dəyişənlər; // İlkin dəyərlər Qırmızı dolu, Yaşıl və Mavi offint blueVal = 1; int i = 0; // Loop counter int wait; // = 15; // 50 ms (.05 saniyə) gecikmə; daha sürətli fadesint üçün qısaldır k = 0; // yanıb sönmə funksiyasındakı controlLED üçün dəyər DEBUG = 0; // DEBUG sayğacı; 1 olaraq təyin edildikdə, serialint LCD = 0 vasitəsilə dəyərləri geri yazacaq; // LCD sayğac; 1 olaraq təyin olunarsa, serialvoid setup () {pinMode (ledPin, OUTPUT) vasitəsilə dəyərləri geri yazacaq; pinMode (redPin, ÇIXIŞ); // pinləri çıxış pinMode (greenPin, ÇIXIŞ) olaraq təyin edir; pinMode (bluePin, ÇIXIŞ); pinMode (dimredPin, Çıxış); pinMode (dimgreenPin, ÇIXIŞ); // pinləri çıxış pinMode (dimbluePin, OUTPUT) olaraq təyin edir; pinMode (potPin2, GİRİŞ); // pinMode (potPin0, GİRİŞ); // pinMode (dimPin, GİRİŞ); // pinMode (switchPin, INPUT); // Keçid pimini giriş attachInterrupt olaraq təyin edin (0, isr0, RISING); if (DEBUG) {// Hata ayıklama üçün pin dəyərlərini görmək istəsək… Serial.begin (9600); // … 0004 stilində seriyalı çıxışı qurun}} // Əsas proqramvoid döngəsi () {if (buttonPresses == 0) {Moodlamp (); // Moodlight funksiyasını çağırır} if (buttonPresses == 1) {RGBPotMixer (); // manuel mix funksiyasını çağırır} if (buttonPresses == 2) {White (); // Burada hamısı ağdır} if (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); // Ağ (); Ekran(); dim ();} void Monitor () {// If State to monitor to if if (DEBUG) {// Çıxışını oxumaq istəsək DEBUG += 1; // DEBUG sayacını artırın, əgər (DEBUG> 10) {// Hər 10 döngəni çap edin DEBUG = 1; // Sayıcı sıfırlayın Serial.print (i); // 0004 üslubunda Serial.print Serial.print ("\ t"); // Nişan yazdır Serial.print ("R:"); // Çıxışın qırmızı dəyər olduğunu göstərin Serial.print (redVal); // Qırmızı dəyəri çap edin Serial.print ("\ t"); // Nişan yazdır Serial.print ("G:"); // Yaşıl və mavi üçün təkrarlayın … Serial.print (greenVal); Serial.print ("\ t"); Serial.print ("B:"); Serial. çap (blueVal); // println, bir vaqonla geri qayıtmaq üçün Serial.print ("\ t"); Serial.print ("dimValue:"); Serial. çap (maxVal); // println, bir vaqonla geri qayıtmaq üçün Serial.print ("\ t"); Serial.print ("gözləyin:"); Serial.print (gözləyin); // potPin0 dəyərini Serial.print ("\ t") monitoruna yazır; Serial.print ("hueRGBvalue"); Serial. çap (potVal); // potPin0 dəyərini Serial.print ("\ t") monitoruna yazır; Serial.print ("buttonState:"); Serial.print (buttonState); // potPin0 dəyərini Serial.print ("\ t") monitoruna yazır; Serial.print ("buttonPresses:"); Serial.println (buttonPresses); // düymənin dəyərini yazır Monitora}}} void dim () // Ağın qaralması funksiyası // bəlkə də bütün Modlar üçün daha sonra {maxVal = analogRead (dimPin); maxVal /= 4; // 0..255 dəyərli analogWrite (dimredPin, maxVal) karartmaq üçün 0..1024 -dən çox olan analog diapazonu; analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} void Moodlamp () {wait = analogRead (potPin0); // potPin0 -dan dəyər axtarın; // heç bir Pot bağlı deyilsə: gözləyin 255 i += 1; // Artım sayğacı // i = i - maxVal; if (i <255) // Solmanın ilk mərhələsi {redVal -= 1; // Qırmızı aşağı greenVal += 1; // Green up blueVal = 1; // Mavi aşağı} else if if (i <509) // Solğunluğun ikinci mərhələsi {redVal = 1; // Qırmızı aşağı greenVal -= 1; // Yaşıl aşağı maviVal += 1; // Mavi yuxarı} else if if (i <763) // Üçüncü mərhələ solur {redVal += 1; // Red up greenVal = 1; // Yaşıl lo2 blueVal -= 1; // Mavi aşağı} başqa // Sayacı yenidən qurun və yenidən solmağa başlayın {i = 1; } // yalnız "redVal" yerinə "255 -redVal" edirik, çünki // LEDlər Gnd analogWrite əvəzinə +5V -ə (redPin, 255 - redVal) bağlıdır; // LED pinləri analogWrite -ə cari dəyərləri yazın (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); /* dimredVal = min (redVal - maxVal, 255); // karartma 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); // LED pinlərinə analogWrite -ə cari dəyərləri yazın (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / gözlə / = 4; gecikmə (gözləmək); // Döngəyə davam etməzdən əvvəl 'gözləmə' millisaniyələri üçün fasilə verin} void RGBPotMixer () {potVal = analogRead (potPin2); // potVio = potVal / 4 giriş pinindəki potansiometr dəyərini oxuyun; // 0-1023-dən 0-255-ə çevir hue_to_rgb (potVal); // potVal-ı hue kimi qəbul edin və rgb vals-ə çevirin // "255-" bunun səbəbi, ümumi katodlu analogWrite (redPin, 255-redVal) deyil, ümumi anodlu LED-lərimizin olmasıdır; // LED pinlərinə analogWrite (greenPin, 255-greenVal) dəyərlər yazın; analogWrite (bluePin, 255-blueVal); } boş White () {analogWrite (redPin, maxVal); // LED pinlərinə analogWrite (greenPin, maxVal) dəyərlər yazın; analogWrite (bluePin, maxVal); }/*
- Dəyişən bir hue 'h' verildikdə, 0-252 arasında dəyişir,
- RGB rəng dəyərini uyğun olaraq təyin edin.
- Maksimum Maksimum Doyma və Maksimum Dəyəri (parlaqlıq) qəbul edir
- Sırf tam ədəd riyaziyyatı yerinə yetirir, üzən nöqtə yoxdur.
*/void hue_to_rgb (bayt hue) {if (hue> 252) hue = 252; // geri dönmə 252 !! nejo byte hd = hue / 42; // 36 == 252/7, 252 == H_MAX bayt hi = hd % 6; // 0-5 bayt verir f = hue % 42; bayt fs = f * 6; keçid (salam) {hal 0: redVal = 252; greenVal = fs; blueVal = 0; fasilə; hal 1: redVal = 252-fs; greenVal = 252; blueVal = 0; fasilə; hal 2: redVal = 0; greenVal = 252; blueVal = fs; fasilə; hal 3: redVal = 0; greenVal = 252-fs; blueVal = 252; fasilə; hal 4: redVal = fs; greenVal = 0; blueVal = 252; fasilə; hal 5: redVal = 252; greenVal = 0; blueVal = 252-fs; fasilə; }} etibarsız isr0 () {Serial.println ("\ n / n kəsilmiş / n"); buttonState = digitalRead (switchPin); // ilkin vəziyyət gecikməsini oxuyunMikrosaniyələr (100000); // if (val! = buttonState) {// düymə vəziyyəti dəyişdi! // if (buttonState == HIGH) {// düymənin indi basıldığını yoxlayın buttonPresses ++; //} // val = buttonState; // (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Növbəti mərhələ tranzistor sürücülər idi. 3Ampere maksimum cərəyanı olan 3 PNP tranzistorundan istifadə etdim. İrəli cərəyan və gərginlik tənzimləndikdən sonra, LEDemitter tam intensivliklə əla işləyirdi.
Addım 6: PonyProg tərəfindən yandırılmış Bootloader ilə Bağımsız alın
Arduino bootloader -ı ATmega168 və ya ATmega8 -də yandırmaq üçün paralel portunuzdan necə istifadə etmək olar? Tezliklə arduino mühiti ilə ucuz bir boş çip istifadə etmək üçün ….. bəlkə də ayrı bir təlimat verilə bilər Burada ayrıca çipdən istifadə etmək yaxşı bir təlimatdır: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
Addım 7: Deməli bu mənim Arduino Moodlamp'ımdır
Bəyənmisinizsə, mənə qiymət verin.
Tövsiyə:
Arduino ilə işləyən işıqforları necə etmək olar: 4 addım
Arduino ilə işləyən trafik işıqlarını necə etmək olar: Bu yazıda bir Arduino layihəsi, yəni Arduino Trafik Piyadalar İşıq Sistemləri haqqında danışacağıq. Bu layihəni sınamaq həqiqətən maraqlıdır və bəzi sənət və sənətkarlıqların köməyi ilə svetoforların və pedlərin tam bir səhnəsini yarada bilərsiniz
Arduino istifadə edərək RoboCar ilə işləyən Smartfonda Maneə Algılama: 5 addım
Arduino ilə RoboCar İdarə Edilən Smartfonun Maneə Alınması: Bu layihədə iki ultrasəs sensoru, bir bluetooth modulunun Arduino ilə əlaqələndirildiyi bir Robocar hazırladıq
Günəş enerjisi ilə işləyən Arduino Survival Kit: 8 addım
Günəş Enerjili Arduino Survival Kit: Bu təlimat çox məqsədli, yüksək texnologiyalı Arduino sağ qalma dəstinin yaradılmasını ətraflı izah edəcək. Bu dərslikdə diqqətimizi çəkəcəyimiz əsas modullar təkrar doldurulan batareya paketi, günəş paneli seriyalı qurğusu, elektron siqnalı və GPS+Blueto
Arduino ilə işləyən mətn: 3 addım (şəkillərlə)
Arduino ilə işləyən mətn: Alət və material: 1 ədəd LCD 16x2 1 ədəd rezistor 220 ohm1 ədəd potensio metr 1k ohm1 ədəd protoboard1 maddə arduino
Batareya ilə işləyən hər hansı bir cihazı AC Gücü ilə işləyin: 4 addım
Batareya ilə işləyən hər hansı bir cihazı AC Gücü ilə işləyin. Heç bir obyekt üçün kifayət qədər batareyanız olmayıbmı? Yoxsa heç bir obyektin adapterini itirdiniz və yenidən istifadə etmək istədiniz? Yoxsa otağınızda sərin qığılcımlar yaratmaq istəyirsiniz?