Daftar Isi:

RGB Moodlamp bertenaga Arduino buatan tangan: 7 Langkah
RGB Moodlamp bertenaga Arduino buatan tangan: 7 Langkah

Video: RGB Moodlamp bertenaga Arduino buatan tangan: 7 Langkah

Video: RGB Moodlamp bertenaga Arduino buatan tangan: 7 Langkah
Video: How to make wall hanging lamp | Mobile operated light | Wall lamp making at home | wall lamp 2024, Juli
Anonim
RGB Moodlamp bertenaga Arduino buatan tangan
RGB Moodlamp bertenaga Arduino buatan tangan
RGB Moodlamp bertenaga Arduino buatan tangan
RGB Moodlamp bertenaga Arduino buatan tangan

Instruksi ini dibagi menjadi 5 bagian:- Merencanakan konstruksi (Langkah1)- Warna buatan tangan (Langkah2+3)- Sirkuit elektronik untuk menggerakkan LED 3W dengan pengontrol ATmega8 (Langkah4)- Kode (Langkah5)- Cara mendapatkannya stand-alone (flash bootloader Arduino dengan PonyProg dan bakar sketsanya) (Langkah6) segera hadir Vid: Some Impressions

de.youtube.com/watch?v=apZ9NpaUG84 Pic1: Moodlamp Pic2: LED 3W yang hebat

Langkah 1: Merencanakan Konstruksi:

Merencanakan Konstruksi
Merencanakan Konstruksi
Merencanakan Konstruksi
Merencanakan Konstruksi

Saya suka melakukan konsep hanya pada satu lembar kertas. Pada lembar pertama Anda melihat beberapa ide awal. Saya memilih desain kanan bawah. Halaman kedua menunjukkan beberapa detail untuk konstruksi. Pengukuran bersifat eksperimental seperti setiap kali, tapi oke untuk saya;-) Pikiran perangkat keras saya adalah:- Dapatkah saya menangani bahan?- Akankah cahaya bersinar melalui bayangan?- Berapa proporsi yang harus dimiliki?- Berapa banyak kenop dan pot yang saya perlukan untuk antarmuka yang sederhana?Pemikiran perangkat lunak saya adalah:Berapa banyak fungsi yang berbeda yang harus dimiliki lampu? - Memudar RGB otomatis dengan kecepatan yang dapat diubah - Penyesuaian warna manual - Putih dengan kecerahan yang dapat disesuaikan

Langkah 2: Naungan Buatan Tangan

naungan buatan tangan
naungan buatan tangan
naungan buatan tangan
naungan buatan tangan
naungan buatan tangan
naungan buatan tangan

Mengumpulkan bahan: Tempat teduh:Saya menemukan selembar plastik berukuran 30 kaki berukuran 3 kaki x 3 kaki di toko (Gambar 1-3). Gunakan pisau tajam untuk memotongnya. Saya memoles plastik menggunakan amplas (Gambar4-6). Untuk mendapatkan silinder yang halus Saya memasang semuanya bersama-sama setelah mengebor lubang yang tepat (Gambar 7-8). Pasang penutup plastik pada penyangga kuningan berulir. Kelihatannya bagus dan agak mudah untuk mendapatkan dan menangani. Saya mengebor dan mengetuk lubang untuk mencocokkan bilah berulir 1/8 (Gambar 9-10). Sementara itu, saya membuat heatsink untuk mendinginkan LED 3W dan memiliki dasar yang kokoh. Untuk mendapatkan nuansa yang tidak terlalu banyak dari poros, saya membuat sangkar kecil dari batang las dengan mur M8 di atasnya (Gambar12). Sebagai hasil akhir, saya merakit semuanya. Sekrup dan mur kecil agak rumit, tetapi 30 menit kemudian saya menyelesaikannya.

Langkah 3: Naungan Buatan Tangan

naungan buatan tangan
naungan buatan tangan
naungan buatan tangan
naungan buatan tangan
naungan buatan tangan
naungan buatan tangan

Alas: Cakram dimasukkan ke dalam mesin bubut agar halus dan bulat. Setelah itu, saya mengecatnya dengan pewarna kayu mahoni agar pinus terlihat bagus. Apa selanjutnya?!? Saya memutuskan untuk membuat alas menggunakan yang sama plastik buram sebagai naungan, dan lampu latar dengan microLED RGB (Pic5). Kenop:Saya membuat kancing dari sepotong kayu mahoni dan kenop dari potongan kayu nut.

Langkah 4: Sirkuit Listrik:

Sirkuit Listrik
Sirkuit Listrik
Sirkuit Listrik
Sirkuit Listrik
Sirkuit Listrik
Sirkuit Listrik

Pada gambar pertama Anda melihat skema saya. Dan inilah video lainnya:https://de.youtube.com/watch?v=xkiYzQAYf_A&NR=1

Langkah 5: Kode:

Kode
Kode
Kode
Kode
Kode
Kode

Di foto Anda melihat proses saya dengan Arduino. Pertama saya mencoba dengan ProtoShield buatan saya sendiri, paket baterai dan beberapa jenis LED. Saya mulai dengan "Proyek Seram" dan "BionicArduino" oleh TodEKurt beberapa bulan yang lalu. https://todbot.com/blog/spookyarduino/Kode saya adalah hanya kombinasi rumit dari kode proyeknya."RGBMoodlight", "RGBPotMixer"dan beberapa ekstensi. Tiga analog-in dan.satu digital-in sebagai sakelar mode (Terima kasih kepada Ju. untuk rutin interupsi:). LED terhubung ke D9, D10 dan D11 yang mendukung PulseWithModulation. Jika Anda suka, saya dapat menerbitkan sketsa, tetapi ini adalah kombinasi yang sangat sederhana dari dua kode hebat ini. Ini kode asli saya dari lampu. Terlihat sedikit berantakan, karena itu milik saya tahap sangat awal dalam pemrograman…Tetapi jika Anda menyalinnya, itu akan bekerja dengan baik. Ada kedamaian yang bagus, seperti "PotColorMixer", "Function RGBfading" dan Interrupt-Routine untuk mode-switch./* nejo June2008

Kode untuk "Moodlamp" saya, berdasarkan "dimmingLEDs" oleh Clay Shirky

*nejo Sep2008

  • Kode terakhir untuk moodlamp dengan interrupt-mode-switch, analog speed-dial untuk RGB-fading dan RGB color change.
  • Fungsi peredupan hanya berfungsi untuk warna putih

*nejo Oktober2008

  • Ekstensi suara untuk moodlamp:
  • Mikrofon kondensor dengan Amp LM368 kecil, penyearah, dan filter RC-low-pass
  • dengan input analog lain saya menggunakan fungsi RGBPotMixer untuk mengubah warna dengan mendapatkan sinyal mic.

* * *Kode cross-fading 3 LED, merah, hijau dan biru, atau satu LED tiga warna, menggunakan PWM

  • Program memudar perlahan dari merah ke hijau, hijau ke biru, dan biru ke merah
  • Kode debug mengasumsikan Arduino 0004, karena menggunakan fungsi gaya Serial.begin() baru
  • awalnya "dimmingLEDs" oleh Clay Shirky

*

  • AnalogRead diaktifkan pada Pin A0 untuk memvariasikan kecepatan fading RGB
  • AnalogRead diaktifkan pada Pin A2 untuk memvariasikan warna hueRGB

* * */#include // Outputint ledPin = 13; // controlPin untuk debuggingint redPin = 9; // LED merah, terhubung ke pin digital 9int greenPin = 10; // LED hijau, terhubung ke pin digital 10int bluePin = 11; // LED Biru, terhubung ke pin digital 11int dimredPin = 3; // Pin untuk nilai peredupan analog, terhubung ke driver transistorint dimgreenPin = 5;int dimbluePin = 6;// Inputint switchPin = 2; // switch terhubung ke pin D2int val = 0; // variabel untuk membaca pin statusint buttonState; // variabel untuk menahan tombol stateint buttonTekan = 0; // 3 tekan untuk pergi!int potPin0 = 0; // Pot untuk mengatur jeda antara fading di Moodlamp; int potPin2 = 2; // Output potensiometer untuk mengubah hueRGB colorint potVal = 0; // Variabel untuk menyimpan input dari potensiometerint maxVal = 0; // nilai untuk menyimpan faktor peredupan default adalah 255, jika tidak ada Pot yang terhubungint dimPin = 4; //Pot terhubung ke A4 untuk meredupkan kecerahan// Variabel programint redVal = 255; // Variabel untuk menyimpan nilai yang akan dikirim ke pinsint greenVal = 1; // Nilai awal adalah Merah penuh, Hijau dan Biru offint blueVal = 1;int i = 0; // Loop counter int wait;// = 15; // penundaan 50 md (.05 detik); mempersingkat untuk fadesint lebih cepat k = 0; // nilai untuk LED kontrol dalam fungsi-kedip DEBUG = 0; // penghitung DEBUG; jika disetel ke 1, akan menulis nilai kembali melalui serialint LCD = 0; // penghitung LCD; jika disetel ke 1, akan menulis nilai kembali melalui serialvoid setup(){ pinMode(ledPin, OUTPUT); pinMode(pin merah, OUTPUT); // menetapkan pin sebagai output pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); pinMode(redPin, OUTPUT); pinMode(reduphijauPin, OUTPUT); // menetapkan pin sebagai output pinMode(dimbluePin, OUTPUT); pinMode(potPin2, INPUT); // mode pin(potPin0, INPUT); // pinMode(dimPin, INPUT); // pinMode(switchPin, INPUT); // Atur pin sakelar sebagai input attachInterrupt(0, isr0, RISING); if (DEBUG) { // Jika kita ingin melihat nilai pin untuk debugging… Serial.begin(9600); // …mengatur output serial pada gaya 0004 }}// Main programvoid loop(){ if (buttonPresses == 0) { Moodlamp(); // memanggil fungsi Moodlight } if (Tekanan tombol == 1) { RGBPotMixer(); // memanggil fungsi campuran manuel } if (Tekanan tombol == 2) { Putih(); // Semuanya putih di sini } if (Tekanan tombol == 3) { } //Moodlamp(); //RGBPotMixer(); //Putih(); Memantau(); dim();}void Monitor(){ // Kirim Status ke monitor if (DEBUG) { // Jika kita ingin membaca output DEBUG += 1; // Tingkatkan penghitung DEBUG jika (DEBUG > 10) { // Cetak setiap 10 putaran DEBUG = 1; // Reset penghitung Serial.print(i); // Perintah serial dalam gaya 0004 Serial.print("\t"); // Cetak tab Serial.print("R:"); // Tunjukkan bahwa output adalah nilai merah Serial.print(redVal); // Cetak nilai merah Serial.print("\t"); // Cetak tab Serial.print("G:"); // Ulangi untuk hijau dan biru… Serial.print(greenVal); Serial.print("\t"); Serial.print("B:"); Serial.print(blueVal); // println, diakhiri dengan carriage return Serial.print("\t"); Serial.print("Nilai redup:"); Serial.print(maxVal); // println, diakhiri dengan carriage return Serial.print("\t"); Serial.print("tunggu:"); Serial.print(tunggu); // menulis nilai potPin0 ke monitor Serial.print("\t"); Serial.print("nilai hueRGB"); Serial.print(potVal); // menulis nilai potPin0 ke monitor Serial.print("\t"); Serial.print("keadaan tombol:"); Serial.print(buttonState); // menulis nilai potPin0 ke monitor Serial.print("\t"); Serial.print("Tekanan tombol:"); Serial.println(Tekanan tombol); // menulis nilai tombolTekan ke monitor } }} void dim() // Fungsi untuk peredupan Putih // mungkin nanti untuk semua Mode{ maxVal = analogRead(dimPin); maxVal /= 4; // Rentang analog dari 0..1024 terlalu banyak untuk meredupkan nilai 0..255 analogWrite(dimredPin, maxVal); analogWrite(dimgreenPin, maxVal); analogWrite(dimbluePin, maxVal);}void Moodlamp(){ tunggu = analogRead(potPin0); // cari nilai dari potPin0; // jika tidak ada Pot yang terhubung: tunggu 255 i += 1; // Penghitung kenaikan // i = i - maxVal; if (i < 255) // Fade fase pertama { redVal -= 1; // Merah ke bawah greenVal += 1; // Hijau naik blueVal = 1; // Blue low } else if (i < 509) // Fade fase kedua { redVal = 1; // Merah rendah hijauVal -= 1; // Hijau turun blueVal += 1; // Blue up } else if (i < 763) // Fade fase ketiga { redVal += 1; // Red up greenVal = 1; // Hijau lo2 blueVal -= 1; // Blue down } else // Atur ulang counter, dan mulai fade lagi { i = 1; } // kita melakukan "255-redVal" bukan hanya "redVal" karena // LED dihubungkan ke +5V bukan Gnd analogWrite(redPin, 255 - redVal); // Tulis nilai saat ini ke pin LED analogWrite(greenPin, 255 - greenVal); analogWrite(bluePin, 255 - blueVal); /* dimredVal =min(redVal - maxVal, 255); //peredupan 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); // Tulis nilai saat ini ke pin LED analogWrite(greenPin, 255 - dimgreenVal); analogWrite(bluePin, 255 - dimblueVal); */ tunggu /=4; tunda (tunggu); // Jeda selama 'tunggu' milidetik sebelum melanjutkan loop}void RGBPotMixer(){ potVal = analogRead(potPin2); // membaca nilai potensiometer pada pin input potVal = potVal/4; // konversi dari 0-1023 ke 0-255 hue_to_rgb(potVal); // perlakukan potVal sebagai rona dan konversikan ke rgb vals // "255-" adalah karena kita memiliki LED anoda umum, bukan katoda umum analogWrite(redPin, 255-redVal); // Tulis nilai ke pin LED analogWrite(greenPin, 255-greenVal); analogWrite(bluePin, 255-blueVal); }void Putih(){ analogWrite(redPin, maxVal); // Tulis nilai ke pin LED analogWrite(greenPin, maxVal); analogWrite(bluePin, maxVal); }/*

  • Diberikan variabel hue 'h', yang berkisar antara 0-252,
  • mengatur nilai warna RGB dengan tepat.
  • Mengasumsikan saturasi maksimumValimum & Nilai maksimum (kecerahan)
  • Melakukan matematika bilangan bulat murni, tanpa floating point.

*/void hue_to_rgb(byte hue) { if(hue > 252) hue = 252; // mundur ke 252!! nejo byte hd = rona / 42; // 36 == 252/7, 252 == H_MAX byte hi = hd % 6; // memberikan 0-5 byte f = rona % 42; byte fs = f * 6; switch(hai) { kasus 0: redVal = 252; greenVal = fs; blueVal = 0; merusak; kasus 1: redVal = 252-fs; greenVal = 252; blueVal = 0; merusak; kasus 2: redVal = 0; greenVal = 252; blueVal = fs; merusak; kasus 3: redVal = 0; greenVal = 252-fs; blueVal = 252; merusak; kasus 4: redVal = fs; nilai hijau = 0; blueVal = 252; merusak; kasus 5: redVal = 252; nilai hijau = 0; blueVal = 252-fs; merusak; } } void isr0(){ Serial.println("\n \n inerrupt \n"); buttonState = digitalRead(switchPin); // membaca status awal delayMicroseconds(100000); //if (val != buttonState) { // status tombol telah berubah! // if (buttonState == HIGH) { // periksa apakah tombol sekarang ditekan buttonPresses++; // } // val = keadaan tombol; // simpan status baru dalam variabel kita if (buttonPresses == 3) { // zur cksetzen buttonPresses = 0; } } // }Tahap selanjutnya adalah transistor-driver. Saya menggunakan 3 transistor PNP dengan arus maksimum 3Ampere. Setelah arus maju dan tegangan diatur, LEDemitter bekerja sangat baik dengan intensitas penuh.

Langkah 6: Dapatkan Standalone Dengan PonyProg-burned Bootloader

Dapatkan Standalone Dengan PonyProg-burned Bootloader
Dapatkan Standalone Dengan PonyProg-burned Bootloader

Cara menggunakan port paralel Anda untuk membakar bootloader arduino pada ATmega168 atau ATmega8 untuk menggunakan chip kosong murah dengan lingkungan arduino.segera hadir ….. mungkin pada instruksi terpisahBerikut ini juga instruksi yang baik untuk menggunakan chip mandiri: https:/ /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS

Langkah 7: Jadi Itu Arduino Moodlamp Saya

Jadi Itulah Moodlamp Arduino Saya
Jadi Itulah Moodlamp Arduino Saya

Jika Anda menyukainya, beri saya nilai.

Direkomendasikan: