İçindekiler:
- Adım 1: İnşaatın Planlanması:
- Adım 2: El Yapımı Gölge
- Adım 3: El Yapımı Gölge
- Adım 4: Elektrik Devresi:
- Adım 5: Kod:
- Adım 6: PonyProg-burned Bootloader ile Bağımsız Olun
- Adım 7: İşte Bu Benim Arduino Moodlamp'ım
Video: El işi Arduino ile güçlendirilmiş RGB Moodlamp: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
Bu talimat 5 bölüme ayrılmıştır: - Yapının planlanması (Adım 1) - El yapımı gölge (Adım 2+3) - ATmega8 denetleyicisi ile 3W LED'leri sürmek için elektronik devre (Adım 4) - Kod (Adım 5) - Nasıl elde edilir bağımsız (Arduino önyükleyicisini PonyProg ile flaşlayın ve çizimi yakın) (Adım6) çok yakında Vid: Bazı İzlenimler
de.youtube.com/watch?v=apZ9NpaUG84 Pic1: Moodlamp Pic2: Güçlü bir 3W LED
Adım 1: İnşaatın Planlanması:
Sadece bir yaprak kağıda bir konsept yapmayı seviyorum. İlk sayfada bazı erken fikirler görüyorsunuz. Sağ alt tasarımı seçtim. İkinci sayfada inşaat için bazı detaylar gösteriliyor. Ölçümler her seferinde olduğu gibi deneysel ama benim için sorun değil;-)Donanım düşüncelerim şunlardı:- Malzemeleri işleyebilir miyim?- Işık parlayacak mı? - Basit bir arayüz için kaç tane düğme ve pota ihtiyacım olacak? Yazılım düşüncelerim: Lambanın kaç farklı işlevi olmalı? - Değişken hızda otomatik RGB sönümleme - Manuel renk ayarı - Ayarlanabilir parlaklığa sahip beyaz
Adım 2: El Yapımı Gölge
Malzemelerin toplanması: Gölge: Mağazada 3 fit x 3 fit boyutunda 30 mill plastik levha buldum (Resim 1-3). Kesmek için keskin bir bıçak kullanın. Plastiği zımpara kağıdı ile buzladım (Resim 4-6). düzgün bir silindir elde edin Doğru delikleri açtıktan sonra hepsini vidaladım (Resim7-8). Plastik gölgelikleri dişli pirinç desteklere monte edin. Güzel görünüyor ve alması ve tutması oldukça kolay. 1/8'lik dişli çubuğa (Pic9-10) uyacak şekilde delikler açtım ve vidaladım. Bu arada, 3W LED'leri soğutmak ve sağlam bir tabana sahip olmak için bir soğutucu yaptım.. Milden çok fazla gölge almamak için kaynak çubuğundan üstüne M8 somunlu küçük bir kafes yapıyorum (Resim12). Son olarak hepsini bir araya topladım. Küçük vidalar ve somunlar biraz zordu ama 30 dakika sonra işi hallettim.
Adım 3: El Yapımı Gölge
Taban:Diskler torna tezgahında düzgün ve yuvarlak olması için sıkılmıştır. Sonra çamın güzel görünmesi için maun ağacı boyası ile boyadım. Sırada ne var?!?Aynısını kullanarak bir taban yapmaya karar verdim. gölgelik olarak buzlu plastik ve bir RGB microLED (Resim 5) ile arkadan aydınlatma.
Adım 4: Elektrik Devresi:
İlk resimde benim şemamı görüyorsunuz. Ve işte başka bir video:https://de.youtube.com/watch?v=xkiYzQAYf_A&NR=1
Adım 5: Kod:
Resimlerde Arduino ile sürecimi görüyorsunuz. İlk önce kendi yaptığım ProtoShield, bir pil takımı ve bazı LED'ler ile denedim. Birkaç ay önce TodEKurt'un "Spooky Projects" ve "BionicArduino" ile başladım.https://todbot.com/blog/spookyarduino/My code is "RGBMoodlight", "RGBPotMixer"ve bazı uzantıların karmaşık bir kombinasyonu. Mod anahtarı olarak üç analog giriş ve bir dijital giriş (kesme rutini için Ju'ya teşekkürler:). LED'ler bağlı PulseWithModulation'ı destekleyen D9, D10 ve D11'e. İsterseniz, taslağı yayınlayabilirim, ancak bu iki harika kodun gerçekten çıplak bir kombinasyonu. İşte lambanın orijinal kodum. Biraz dağınık görünüyor, çünkü benim programlamada çok erken aşama…Ama kopyalarsanız, harika çalışmalı. "PotColorMixer", "RGBfadingFunction" ve mod anahtarı için Interrupt-Routine gibi ince ayarlar var./* nejo Haziran2008
Clay Shirky'nin "dimmingLED'lerine" dayalı "Moodlamp" kodum
*nejo Eylül2008
- Kesinti modu anahtarlı, RGB solma ve RGB renk değişimi için analog hızlı aramalı moodlamp için son kod.
- Karartma işlevi yalnızca beyaz renk için çalışır
*nejo Ekim2008
- Moodlamp için ses uzantısı:
- Küçük bir LM368 Amper, bir doğrultucu ve bir RC-düşük geçiş filtresine sahip bir kondansatör mikrofon
- başka bir analogInput ile mikrofon sinyalini alarak rengi değiştirmek için RGBPotMixer işlevini kullanıyorum.
* * *PWM kullanarak kırmızı, yeşil ve mavi olmak üzere 3 LED'i veya bir üç renkli LED'i çapraz sönümleme kodu
- Program yavaş yavaş kırmızıdan yeşile, yeşilden maviye ve maviden kırmızıya geçer.
- Hata ayıklama kodu, yeni Serial.begin() tarzı işlevleri kullandığı için Arduino 0004'ü varsayar.
- orijinal olarak Clay Shirky tarafından "dimmingLED'ler"
*
- RGB solma hızını değiştirmek için Pin A0'da AnalogRead etkinleştirildi
- HueRGB rengini değiştirmek için Pin A2'de AnalogRead etkinleştirildi
* * */#include // Outputint ledPin = 13; // hata ayıklama için controlPinint redPin = 9; // Kırmızı LED, dijital pin 9int'e bağlı greenPin = 10; // Yeşil LED, dijital pime bağlı 10int bluePin = 11; // Mavi LED, dijital pine bağlı 11int dimredPin = 3; // Transistöre bağlı analog karartma değeri için pinler driverint dimgreenPin = 5;int dimbluePin = 6;// Inputint switchPin = 2; // switch pine bağlı D2int val = 0; // pin durumunu okumak için değişken statusint buttonState; // butonu tutacak değişken stateint buttonPress = 0; // gitmek için 3 basış!int potPin0 = 0; // Moodlamp'ta solma arasındaki gecikmeyi ayarlamak için pot; int potPin2 = 2; // hueRGB'yi değiştirmek için potansiyometre çıkışı colorint potVal = 0; // potansiyometreden gelen girişi depolamak için değişken int maxVal = 0; // dimPin = 4; //Parlaklığı kısmak için A4'e bağlanan kap// Program değişkenleriint redVal = 255; // Pinsint'e gönderilecek değerleri saklayacak değişkenler greenVal = 1; // Başlangıç değerleri Red full, Green ve Blue offint blueVal = 1;int i = 0; // Döngü sayacı int bekle;// = 15; // 50ms (.05 saniye) gecikme; daha hızlı soldurma için kısaltın k = 0; // yanıp sönme işlevindeki kontrol LED'i için değer DEBUG = 0; // DEBUG sayacı; 1 olarak ayarlanırsa, serialint LCD = 0 aracılığıyla değerleri geri yazacaktır; // LCD sayaç; 1 olarak ayarlanırsa, serialvoid setup(){ pinMode(ledPin, OUTPUT); aracılığıyla değerleri geri yazacaktır; pinMode(redPin, OUTPUT); // pinleri çıkış pinMode olarak ayarlar(greenPin, OUTPUT); pinMode(bluePin, ÇIKIŞ); pinMode(dimredPin, OUTPUT); pinMode(dimgreenPin, OUTPUT); // pinleri çıkış pinMode olarak ayarlar(dimbluePin, OUTPUT); pinMode(potPin2, INPUT); // pinMode(potPin0, INPUT); // pinMode(dimPin, INPUT); // pinMode(switchPin, INPUT); // Anahtar pinini ekInterrupt(0, isr0, RISING) girişi olarak ayarlayın; if (DEBUG) { // Hata ayıklama için pin değerlerini görmek istiyorsak… Serial.begin(9600); // …seri çıkışı 0004 stilinde ayarlayın }}// Ana programvoid loop(){ if (buttonPresses == 0) { Moodlamp(); // Moodlight işlevini çağırır } if (buttonPresses == 1) { RGBPotMixer(); // manuel karıştırma fonksiyonunu çağırır } if (buttonPresses == 2) { White(); // Burada her şey beyaz } if (buttonPresses == 3) { } //Moodlamp(); //RGBPotMixer(); //Beyaz(); Monitör(); dim();}void Monitor(){ // Monitöre Durum Gönder if (DEBUG) { // Çıktıyı okumak istiyorsak DEBUG += 1; // DEBUG sayacını artır if (DEBUG > 10) { // Her 10 döngüde bir yazdır DEBUG = 1; // Sayacı sıfırla Serial.print(i); // 0004 stilinde Seri komutlar Serial.print("\t"); // Bir sekme yazdır Serial.print("R:"); // Çıktının kırmızı değer olduğunu belirtin Serial.print(redVal); // Kırmızı değeri yazdır Serial.print("\t"); // Bir sekme yazdır Serial.print("G:"); // Yeşil ve mavi için tekrarlayın… Serial.print(greenVal); Seri.print("\t"); Serial.print("B:"); Serial.print(blueVal); // println, satır başı ile bitecek Serial.print("\t"); Serial.print("dimValue:"); Serial.print(maxVal); // println, satır başı ile bitecek Serial.print("\t"); Serial.print("bekleyin:"); Serial.print(bekle); // potPin0 değerini monitöre yazar Serial.print("\t"); Serial.print("hueRGBdeğeri"); Serial.print(potVal); // potPin0 değerini monitöre yazar Serial.print("\t"); Serial.print("buttonState:"); Serial.print(buttonState); // potPin0 değerini monitöre yazar Serial.print("\t"); Serial.print("buttonPress:"); Serial.println(buttonPress); // butonun değerini monitöre yazar } }} void dim() // Beyazı kısma işlevi // belki daha sonra tüm Modlar için{ maxVal = analogRead(dimPin); maxVal /= 4; // 0..1024 analog aralığı, 0..255 değerini kısmak için çok fazla analogWrite(dimredPin, maxVal); analogWrite(dimgreenPin, maxVal); analogWrite(dimbluePin, maxVal);}void Moodlamp(){ bekle = analogRead(potPin0); // potPin0'daki değeri arayın; // Pot bağlı değilse: bekle 255 i += 1; // Sayacı artır // i = i - maxVal; if (i < 255) // Fadelerin ilk aşaması { redVal -= 1; // Kırmızı aşağı yeşilVal += 1; // yeşil maviVal = 1; // Blue low } else if (i < 509) // Kararmanın ikinci aşaması { redVal = 1; // Kırmızı düşük yeşilVal -= 1; // Yeşil aşağı maviVal += 1; // Blue up } else if (i < 763) // Fazın üçüncü aşaması { redVal += 1; // yeşili kırmızıya çevirVal = 1; // Yeşil lo2 maviVal -= 1; // Mavi aşağı } başka // Sayacı yeniden ayarlayın ve soldurmayı yeniden başlatın { i = 1; } // sadece "redVal" yerine "255-redVal" yaparız çünkü // LED'ler Gnd analogWrite yerine +5V'a bağlanır(redPin, 255 - redVal); // Akım değerlerini LED pinlerine yazın analogWrite(greenPin, 255 - greenVal); analogWrite(bluePin, 255 - blueVal); /* dimredVal =min(kırmızıVal - 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); // Akım değerlerini LED pinlerine yazın analogWrite(greenPin, 255 - dimgreenVal); analogWrite(bluePin, 255 - dimblueVal); */ bekle /=4; gecikme(bekle); // Döngüyü devam ettirmeden önce milisaniye 'bekle' için duraklat}void RGBPotMixer(){ potVal = analogRead(potPin2); // giriş pinindeki potansiyometre değerini okuyun potVal = potVal / 4; // 0-1023'ten 0-255'e dönüştür hue_to_rgb(potVal); // potVal'ı renk tonu olarak ele alın ve rgb değerlerine dönüştürün // "255-", ortak katot LED'lerine sahip olmamızdan dolayı ortak katot analogWrite(redPin, 255-redVal); // LED pinlerine değer yaz analogWrite(greenPin, 255-greenVal); analogWrite(bluePin, 255-blueVal); }void White(){ analogWrite(redPin, maxVal); // LED pinlerine değer yaz analogWrite(greenPin, maxVal); analogWrite(bluePin, maxVal); }/*
- 0-252 arasında değişen bir 'h' tonu değişkeni verildiğinde,
- RGB renk değerini uygun şekilde ayarlayın.
- maxValimum Doygunluğu ve maksimum Değeri (parlaklık) varsayar
- Tamamen tamsayılı matematik gerçekleştirir, kayan nokta yoktur.
*/void hue_to_rgb(byte hue) { if(hue > 252) hue = 252; // 252'ye geri dön!! nejo bayt hd = renk tonu / 42; // 36 == 252/7, 252 == H_MAX bayt yüksek = hd % 6; // 0-5 bayt verir f = renk tonu % 42; bayt fs = f * 6; switch(hi) { durum 0: redVal = 252; greenVal = fs; maviVal = 0; kırmak; durum 1: redVal = 252-fs; yeşilVal = 252; maviVal = 0; kırmak; durum 2: redVal = 0; yeşilVal = 252; blueVal = fs; kırmak; durum 3: redVal = 0; greenVal = 252-fs; maviVal = 252; kırmak; durum 4: redVal = fs; yeşilVal = 0; maviVal = 252; kırmak; durum 5: redVal = 252; yeşilVal = 0; blueVal = 252-fs; kırmak; } } void isr0(){ Serial.println("\n \n kesinti \n"); buttonState = digitalRead(switchPin); // başlangıç durumunu oku delayMicroseconds(100000); //if (val != buttonState) { // düğme durumu değişti! // if (buttonState == HIGH) { // düğmeye şimdi basılıp basılmadığını kontrol edin buttonPresses++; // } // val = düğmeDurumu; // if (buttonPresses == 3) { // zur cksetzen buttonPresses = 0; } } // }Bir sonraki aşama transistör sürücüleriydi. 3Amper'de maksimum akımla 3 PNP transistör kullandım. İleri akım ve voltaj ayarlandıktan sonra, LEDemitter tam yoğunlukta harika çalıştı.
Adım 6: PonyProg-burned Bootloader ile Bağımsız Olun
Arduino ortamıyla ucuz bir boş çip kullanmak için bir ATmega168 veya ATmega8'de arduino önyükleyiciyi yakmak için paralel bağlantı noktanızı nasıl kullanabilirsiniz. /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
Adım 7: İşte Bu Benim Arduino Moodlamp'ım
Eğer beğendiyseniz, lütfen beni değerlendirin.
Önerilen:
Raspberry Pi Zero ile Güçlendirilmiş Ahşap LED Oyuncu Ekranı: 11 Adım (Resimlerle)
Raspberry Pi Zero ile Güçlendirilmiş Ahşap LED Oyun Ekranı: Bu proje, retro oyunları oynamak için oturma odasına kolayca kurulabilen 78x35 cm boyutlarında 20x10 piksel WS2812 tabanlı bir LED ekran gerçekleştirmektedir. Bu matrisin ilk versiyonu 2016 yılında oluşturuldu ve birçok kişi tarafından yeniden oluşturuldu. Bu eks
Mini IMac G4 Düz Panel - Güçlendirilmiş NUC: 9 Adım (Resimlerle)
Mini IMac G4 Düz Panel - Güçlendirilen NUC: GirişBu yapıya ilham veren birkaç projeyle karşılaştım. Biri dünyanın en küçük işleyen iMac'i olduğunu iddia ediyor, ancak gerçekte MacOS temalı bir Linux dağıtımını çalıştıran bir Raspberry Pi'dir ve gerçek M'yi çalıştıramaz
1.25 V ve 0.054 Ma ile Güçlendirilmiş Elektrikli Motor Jeneratörü: 4 Adım
1.25 V ve 0.054 Ma ile Güçlendirilmiş Kendin Yap Elektrik Motoru Jeneratörü: Amaç: tek bir mini güneş paneli ile çalışan küçük bir DC jeneratör yapmak vimun sc-3012-2a (iç ve dış mekan kullanımı) 29.44mm×11.6mm×1.1mm, sadece 1,25 VX 0,054 sağlayan bir led parıltı yapın INSTAGRAM'DA bizi bulun ve basit bir elektrik
Ton Kontrollü Güçlendirilmiş Stereo Bluetooth Hoparlör: 8 Adım
Ton Kontrollü Amplifiye Stereo Bluetooth Hoparlör: Ton kontrol devresini kullanan yeni projemizle karşınızdayız. "TON KONTROLLÜ AMPLİFİKASYONLU STEREO BLUETOOTH HOPARLÖR". Gelişen teknoloji ile birlikte bluetooth cihazlarının öneminin arttığını, hoparlör sistemlerinde de görüyoruz
Güçlendirilmiş Elektrik Prizleri: 7 Adım (Resimlerle)
Güçlendirilmiş Elektrik Prizleri: Bu talimat, Electric Imp kullanarak internet özellikli bir güç adaptörü yapmak için kullanıma hazır bir güç adaptörünü nasıl hackleyeceğinizi gösterir. Bu, bir akıllı telefon veya web tarayıcısı kullanarak elektrikle çalışan herhangi bir cihazı uzaktan kontrol etmenizi sağlar. Garajım "as-c