Isi kandungan:
- Langkah 1: Merancang Pembinaan:
- Langkah 2: Warna Buatan Tangan
- Langkah 3: Warna Buatan Tangan
- Langkah 4: Litar Elektrik:
- Langkah 5: Kodnya:
- Langkah 6: Dapatkannya Sendiri Dengan Bootloader yang dibakar PonyProg
- Langkah 7: Jadi Itulah Arduino Moodlamp saya
Video: Moodlamp RGB berkuasa buatan Arduino: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:13
Instruksional ini dibahagikan kepada 5 bahagian: - Merancang pembinaan (Langkah 1) - Teduhan buatan tangan (Langkah 2 + 3) - Litar elektronik untuk memandu LED 3W dengan pengawal ATmega8 (Langkah4) - Kod (Langkah 5) - Cara mendapatkannya berdiri sendiri (kilat bootloader Arduino dengan PonyProg dan bakar lakarannya) (Langkah6) tidak lama lagi Vid: Beberapa Tayangan
de.youtube.com/watch?v=apZ9NpaUG84 Pic1: Moodlamp Pic2: LED 3W yang hebat
Langkah 1: Merancang Pembinaan:
Saya suka membuat konsep hanya pada satu helaian kertas. Pada helaian pertama anda melihat beberapa idea awal. Saya memilih reka bentuk kanan bawah. Halaman kedua menunjukkan beberapa perincian untuk pembinaan. Ukuran adalah eksperimen seperti setiap kali, tetapi ok untuk saya;-) Pemikiran perkakasan saya adalah: - Bolehkah saya mengendalikan bahan? - Adakah cahaya akan bersinar melalui tempat teduh? - Berapa bahagian yang harus dimiliki? - Berapa banyak tombol dan periuk yang saya perlukan untuk antara muka yang mudah? Fikiran perisian saya adalah: Berapa banyak fungsi yang harus ada pada lampu? - RGB automatik memudar dengan kelajuan yang dapat diubah - Penyesuaian warna manual - Putih dengan kecerahan boleh laras
Langkah 2: Warna Buatan Tangan
Mengumpulkan bahan: Tempat teduh: Saya menjumpai kepingan plastik 3 kaki x 3 kaki dari kilang 30 kilang (Pic1-3). Gunakan pisau tajam untuk memotongnya. Saya membekukan plastik menggunakan kertas pasir (Pic4-6). Untuk dapatkan silinder licin yang saya pasangkan semuanya setelah menggerudi lubang yang betul (Pic7-8). Pasangkan warna plastik pada penyokong tembaga berulir. Ia kelihatan baik dan agak mudah untuk dikendalikan. Saya menggerudi dan mengetuk lubang untuk memadankan bar berulir 1/8 (Pic9-10). Sementara itu, saya membuat pendingin untuk menyejukkan LED 3W dan mempunyai asas yang kukuh Kerana tidak mendapat terlalu banyak warna dari batang, saya membina sangkar kecil dari batang kimpalan dengan kacang M8 di atas (Pic12). Setelah selesai saya mengumpulkan semua. Skru dan mur kecil sedikit sukar, tetapi 30 minit kemudian saya menyelesaikannya.
Langkah 3: Warna Buatan Tangan
Pangkalannya: Cakera itu dimasukkan ke dalam mesin bubut agar licin dan bulat. Selepas itu, saya mengotorkannya dengan noda kayu mahoni supaya pinus kelihatan baik. Apa seterusnya?!? Saya memutuskan untuk membuat pangkalan menggunakan yang sama plastik buram sebagai bayangan, dan lampu latar dengan RGB microLED (Pic5). Tombol: Saya membuat butang dari sekeping kayu mahoni dan tombol dari potongan kayu kacang.
Langkah 4: Litar Elektrik:
Pada gambar pertama, anda melihat skema saya. Dan inilah video lain: https://de.youtube.com/watch? V = xkiYzQAYf_A & NR = 1
Langkah 5: Kodnya:
Pada gambar anda melihat proses saya dengan Arduino. Mula-mula saya mencuba ProtoShield buatan sendiri, pek bateri dan beberapa jenis LED. Saya memulakan dengan "Spooky Projects" dan "BionicArduino" oleh TodEKurt beberapa bulan yang lalu.https://todbot.com/blog/spookyarduino/Kod saya adalah hanya gabungan rumit kod projeknya. "RGBMoodlight", "RGBPotMixer" dan beberapa sambungan. Tiga analog-in dan.one digital-in sebagai mod beralih (Terima kasih kepada Ju. untuk rutin gangguan:): LED disambungkan ke D9, D10 dan D11 yang menyokong PulseWithModulation. Sekiranya anda suka, saya boleh menerbitkan lakaran, tetapi ia adalah gabungan yang sangat telanjang dari kedua-dua kod hebat ini. Inilah kod lampu saya yang asli. Ia kelihatan agak tidak kemas, kerana ia adalah saya peringkat awal dalam pengaturcaraan … Tetapi jika anda menyalinnya, ia semestinya berfungsi dengan baik. Terdapat titik-titik baik, seperti "PotColorMixer", "RGBfadingFunction" dan Interrupt-Routine untuk mod-switch./* nejo June2008
Kod untuk "Moodlamp" saya, berdasarkan "dimmingLEDs" oleh Clay Shirky
* nejo Sep2008
- Kod akhir untuk lampu isyarat dengan pertukaran mod interrupt, dail cepat analog untuk perubahan warna RGB dan perubahan warna RGB.
- Fungsi redup berfungsi hanya untuk warna putih
* nejo Oktober2008
- Sambungan suara untuk lampu isyarat:
- Mikrofon kondensor dengan Amp LM368 kecil, alat pendengar dan penapis lulus rendah-RC
- dengan inputInput analog lain saya menggunakan fungsi RGBPotMixer untuk menukar warna dengan mendapatkan isyarat mikrofon.
* * * Kod untuk 3 LED silang, merah, hijau dan biru, atau satu LED tiga warna, menggunakan PWM
- Program ini perlahan-lahan memudar dari merah ke hijau, hijau ke biru, dan biru ke merah
- Kod debugging menggunakan Arduino 0004, kerana ia menggunakan fungsi gaya Serial.begin () - baru
- asalnya "dimmingLEDs" oleh Clay Shirky
*
- AnalogRead diaktifkan pada Pin A0 untuk mengubah kelajuan pudar RGB
- AnalogRead diaktifkan pada Pin A2 untuk mengubah warna hueRGB
* * * / # include // Outputint ledPin = 13; // controlPin untuk debuggingint redPin = 9; // LED Merah, disambungkan ke pin digital 9int greenPin = 10; // LED hijau, disambungkan ke pin digital 10int bluePin = 11; // LED Biru, disambungkan ke pin digital 11int dimredPin = 3; // Pin untuk nilai peredupan analog, disambungkan ke transistor driverint dimgreenPin = 5; int dimbluePin = 6; // Inputint switchPin = 2; // suis disambungkan ke pin D2int val = 0; // pemboleh ubah untuk membaca pin statusint buttonState; // pemboleh ubah untuk menahan butang keadaan butangTekanan = 0; // 3 tekan untuk pergi! Int potPin0 = 0; // Pot untuk menyesuaikan kelewatan antara memudar di Moodlamp; int potPin2 = 2; // Potensiometer output untuk menukar warna colorue potVal = 0; // Pemboleh ubah untuk menyimpan input dari potensiometerint maxVal = 0; // nilai untuk menyimpan faktor peredupan lalai adalah 255, jika tidak ada Pot yang disambungkan; dimPin = 4; // Pot disambungkan ke A4 untuk meredupkan kecerahan // Pemboleh ubah programint redVal = 255; // Pemboleh ubah untuk menyimpan nilai yang akan dihantar ke pinsint greenVal = 1; // Nilai awal adalah Merah penuh, Hijau dan Biru offint blueVal = 1; int i = 0; // Loop counter int waiting; // = 15; // Kelewatan 50ms (.05 saat); pendekkan untuk fadesint yang lebih cepat k = 0; // nilai untuk kawalanLED dalam fungsi berkedip DEBUG = 0; // Kaunter DEBUG; jika ditetapkan ke 1, akan menulis semula nilai melalui serialint LCD = 0; // Kaunter LCD; jika ditetapkan ke 1, akan menulis kembali nilai melalui penyediaan serialvoid () {pinMode (ledPin, OUTPUT); pinMode (redPin, OUTPUT); // menetapkan pin sebagai output pinMode (greenPin, OUTPUT); pinMode (bluePin, OUTPUT); pinMode (dimredPin, OUTPUT); pinMode (dimgreenPin, OUTPUT); // menetapkan pin sebagai output pinMode (dimbluePin, OUTPUT); pinMode (potPin2, INPUT); // pinMode (potPin0, INPUT); // pinMode (dimPin, INPUT); // pinMode (switchPin, INPUT); // Tetapkan pin suis sebagai input attachInterrupt (0, isr0, RISING); if (DEBUG) {// Sekiranya kita ingin melihat nilai pin untuk debug… Serial.begin (9600); // … sediakan siri ouput pada gaya 0004}} // Gelung programvoid utama () {if (buttonPresses == 0) {Moodlamp (); // memanggil fungsi Moodlight} jika (buttonPresses == 1) {RGBPotMixer (); // memanggil fungsi campuran manuel} if (buttonPresses == 2) {White (); // Semuanya berwarna putih di sini} jika (buttonPresses == 3) {} // Moodlamp (); // RGBPotMixer (); // Putih (); Pantau (); redup ();} batal Monitor () {// Hantar Ke Negeri ke monitor jika (DEBUG) {// Sekiranya kita ingin membaca output DEBUG + = 1; // Tingkatkan penghitung DEBUG jika (DEBUG> 10) {// Cetak setiap 10 gelung DEBUG = 1; // Tetapkan semula kaunter Serial.print (i); // Perintah bersiri dalam gaya 0004. Serial.print ("\ t"); // Cetak tab Serial.print ("R:"); // Nyatakan bahawa output adalah nilai merah Serial.print (redVal); // Cetak warna merah Serial.print ("\ t"); // Cetak tab Serial.print ("G:"); // Ulangi untuk hijau dan biru … Serial.print (greenVal); Serial.print ("\ t"); Cetakan bersiri ("B:"); Serial.print (blueVal); // println, diakhiri dengan Serial.print pengembalian kereta ("\ t"); Serial.print ("dimValue:"); Serial.print (maxVal); // println, diakhiri dengan Serial.print pengembalian kereta ("\ t"); Serial.print ("tunggu:"); Cetakan bersiri (tunggu); // menulis nilai potPin0 ke monitor Serial.print ("\ t"); Serial.print ("hueRGBvalue"); Serial.print (potVal); // menulis nilai potPin0 ke monitor Serial.print ("\ t"); Serial.print ("butangState:"); Serial.print (butangState); // menuliskan nilai potPin0 ke monitor Serial.print ("\ t"); Serial.print ("butang Tekan:"); Serial.println (butang Tekan); // menulis nilai butang Tekan ke monitor}}} kekosongan redup () // Fungsi untuk meredup Putih // mungkin kemudian untuk semua Mod {maxVal = analogRead (dimPin); maxVal / = 4; // Julat analog dari 0..1024 terlalu banyak untuk meredupkan nilai analogWrite 0..255 (dimredPin, maxVal); analogWrite (dimgreenPin, maxVal); analogWrite (dimbluePin, maxVal);} batal Moodlamp () {tunggu = analogRead (potPin0); // cari nilai dari potPin0; // jika tidak ada Pot yang disambungkan: tunggu 255 i + = 1; // Pembilang kenaikan // i = i - maxVal; if (i <255) // Fasa pertama pudar {redVal - = 1; // Merah turun hijauVal + = 1; // Hijau ke atas biruVal = 1; // Biru rendah} lain jika (i <509) // Fasa kedua pudar {redVal = 1; // Merah rendah hijauVal - = 1; // Hijau turun biruVal + = 1; // Biru ke atas} lain jika (i <763) // Fasa ketiga pudar {redVal + = 1; // Merahkan hijauVal = 1; // Hijau lo2 blueVal - = 1; // Biru bawah} lain // Tetapkan semula kaunter, dan mulakan pudar lagi {i = 1; } // kita melakukan "255-redVal" dan bukan hanya "redVal" kerana // LED disambungkan hingga + 5V dan bukannya Gnd analogWrite (redPin, 255 - redVal); // Tulis nilai semasa ke pin LED analogWrite (greenPin, 255 - greenVal); analogWrite (bluePin, 255 - blueVal); / * dimredVal = min (redVal - maxVal, 255); // redup 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); // Tuliskan nilai semasa ke pin LED analogWrite (greenPin, 255 - dimgreenVal); analogWrite (bluePin, 255 - dimblueVal); * / tunggu / = 4; kelewatan (tunggu); // Jeda untuk 'tunggu' milisaat sebelum meneruskan gelung} batal RGBPotMixer () {potVal = analogRead (potPin2); // baca nilai potensiometer pada pin input potVal = potVal / 4; // tukar dari 0-1023 ke 0-255 hue_to_rgb (potVal); // perlakukan potVal sebagai rona dan ubah menjadi rgb vals // "255-" adalah kerana kita mempunyai LED anode biasa, bukan analog-katod biasaWrite (redPin, 255-redVal); // Tuliskan nilai ke pin LED analogWrite (greenPin, 255-greenVal); analogWrite (bluePin, 255-blueVal); } batal Putih () {analogWrite (redPin, maxVal); // Tuliskan nilai ke pin LED analogWrite (greenPin, maxVal); analogWrite (bluePin, maxVal); } / *
- Diberi pemboleh ubah hue 'h', yang berkisar antara 0-252,
- tetapkan nilai warna RGB dengan tepat.
- Mengandaikan Ketepuan maksimum & Nilai maksimum (kecerahan)
- Melakukan matematik nombor bulat, tanpa titik terapung.
* / batal hue_to_rgb (byte hue) {if (hue> 252) hue = 252; // kembali ke 252 !! nejo byte hd = rona / 42; // 36 == 252/7, 252 == H_MAX bait hi = hd% 6; // memberikan 0-5 bait f = hue% 42; bait fs = f * 6; tukar (hi) {kes 0: redVal = 252; greenVal = fs; blueVal = 0; rehat; kes 1: redVal = 252-fs; greenVal = 252; blueVal = 0; rehat; kes 2: redVal = 0; greenVal = 252; blueVal = fs; rehat; kes 3: redVal = 0; greenVal = 252-fs; blueVal = 252; rehat; kes 4: redVal = fs; greenVal = 0; blueVal = 252; rehat; kes 5: redVal = 252; greenVal = 0; blueVal = 252-fs; rehat; }} batal isr0 () {Serial.println ("\ n / n tidak berfungsi / n"); buttonState = digitalRead (switchPin); // baca kelewatan keadaan awalMikrodetik (100000); // if (val! = buttonState) {// keadaan butang telah berubah! // if (buttonState == TINGGI) {// periksa apakah butang sekarang ditekan butang Tekan ++; //} // val = buttonState; // simpan keadaan baru dalam pemboleh ubah kami jika (buttonPresses == 3) {// zur cksetzen buttonPresses = 0; }} //} Peringkat seterusnya adalah pemacu transistor. Saya menggunakan 3 transistor PNP dengan arus maksimum pada 3Ampere. Setelah arus maju dan voltan diatur, LEDemitter berfungsi dengan baik dengan intensiti penuh.
Langkah 6: Dapatkannya Sendiri Dengan Bootloader yang dibakar PonyProg
Cara menggunakan port paralell anda untuk membakar bootloader arduino pada ATmega168 atau ATmega8 untuk menggunakan cip kosong murah dengan persekitaran arduino.com tidak lama lagi….. mungkin pada arahan yang terpisah Berikut juga petunjuk yang baik untuk menggunakan cip mandiri: /www.instructables.com/id/uDuino-Very-Low-Cost-Arduino-Compatible-Developme/?ALLSTEPS
Langkah 7: Jadi Itulah Arduino Moodlamp saya
Sekiranya anda menyukainya, sila nilaikan saya.
Disyorkan:
Radio Internet berkuasa Raspberry Pi: 5 Langkah (dengan Gambar)
Radio Internet berkuasa Raspberry Pi: Terdapat sesuatu yang memuaskan mengenai memutar dail dan menekan butang, seperti yang ada di radio lama. Malangnya banyak radio ini rosak atau stesen-stesen telah sunyi. Untungnya tidak terlalu sukar untuk mengemas kini mana-mana radio ke radio internet menggunakan
Sensor Kelembapan Bunga IOT WiFi (berkuasa bateri): 8 Langkah (dengan Gambar)
Sensor Kelembapan Bunga IOT WiFi (berkuasa bateri): Dalam instruksional ini kami menyajikan cara membina sensor kelembapan / air WiFi dengan monitor tahap bateri dalam waktu kurang dari 30 minit. Peranti memantau tahap kelembapan dan mengirim data ke telefon pintar melalui internet (MQTT) dengan selang waktu yang dipilih. Anda
Penyapu automatik berkuasa Arduino: 9 Langkah
Penyapu Automatik Arduino Powered: Oleh itu, suatu hari saya memutuskan untuk membeli roomba tetapi terlalu mahal untuk saya seorang pelajar dan masih menjadi keutamaan saya adalah sekolah saya, dan idea melintas di fikiran saya yang menyatakan bagaimana "membuat satu, saya mempunyai latar belakang yang baik mengenai pengaturcaraan dan arduino jadi mengapa tidak?
Infigo - (Sarung Tangan Buatan yang Dikuasai Kecerdasan Buatan): 9 Langkah
Infigo - (Sarung Tangan Buatan Berwarna Kecerdasan Buatan): Infigo adalah sarung tangan boleh pakai bertenaga AI (Kecerdasan Buatan) berdasarkan prinsip Teknologi Bantuan (AT) yang akan meningkatkan produktiviti masyarakat yang cacat Kecerdasan Buatan dan Pembelajaran Mesin tidak dapat menggantikan inti manusia
Bina Kepala Robot Bercakap Arduino yang berkuasa!: 26 Langkah (dengan Gambar)
Bina Kepala Robot Bercakap yang berkuasa Arduino !: Kepala robot ini pada asalnya dibina sebagai projek akhir tahun untuk kelas pengkomputeran fizikal saya, tetapi pada musim panas ia telah " belajar " cara bercakap. Kepala dikuasakan oleh dua Freeduinos, 3 cip TLC5940NT dan Adafruit Industries