Isi kandungan:
- Langkah 1: Ruang Warna RGB
- Langkah 2: Kapal Baik Lissajous
- Langkah 3: Tunggu - Bagaimana Kita Boleh Memacu LED Dengan Gelombang Sinusoidal?
- Langkah 4: Mari Bina Corak LIssajous 3D
- Langkah 5: Menggabungkan Ini Semua di Arduino
- Langkah 6: Apa Seterusnya?
Video: Meneroka Ruang Warna: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Mata kita melihat cahaya melalui reseptor yang sensitif terhadap warna merah, hijau, dan biru dalam spektrum visual. Orang telah menggunakan fakta ini untuk memberikan gambar warna melalui filem, televisyen, komputer, dan peranti lain selama seratus tahun yang lalu.
Pada paparan komputer atau telefon, gambar ditampilkan dalam banyak warna dengan mengubah intensitas LED merah, hijau, dan biru kecil yang saling bersebelahan di layar. Berjuta-juta warna yang berbeza dapat ditunjukkan dengan mengubah intensiti cahaya dari LED merah, hijau, atau biru.
Projek ini akan membantu anda meneroka ruang warna merah, hijau, dan biru (RGB) menggunakan Arduino, RGB LED, dan sedikit matematik.
Anda boleh memikirkan intensiti tiga warna, merah, hijau, dan biru, sebagai koordinat dalam kubus, di mana setiap warna berada di sepanjang satu paksi, dan ketiga-tiga paksi saling tegak lurus antara satu sama lain. Semakin dekat anda dengan titik sifar, atau asal, paksi, semakin sedikit warna itu ditunjukkan. Apabila nilai untuk ketiga-tiga warna berada pada titik sifar, atau asal, maka warnanya hitam, dan LED RGB mati sepenuhnya. Apabila nilai untuk ketiga-tiga warna setinggi mungkin (dalam kes kami, 255 untuk setiap tiga warna), LED RGB menyala sepenuhnya, dan mata melihat kombinasi warna ini sebagai putih.
Langkah 1: Ruang Warna RGB
Terima kasih kepada Kenneth Moreland kerana membenarkan penggunaan gambarnya yang bagus.
Kami ingin meneroka sudut kubus ruang warna 3D menggunakan LED RGB yang disambungkan ke Arduino, tetapi juga ingin melakukan ini dengan cara yang menarik. Kami dapat melakukannya dengan meletakkan tiga gelung (satu untuk warna merah, hijau dan biru), dan melalui setiap kombinasi warna yang mungkin, tetapi itu akan sangat membosankan. Pernahkah anda melihat corak Lissajous 2D pada osiloskop atau pertunjukan cahaya laser? Bergantung pada tetapannya, corak Lissajous boleh kelihatan seperti garis pepenjuru, bulatan, angka 8, atau corak seperti kupu-kupu runcing yang berputar perlahan. Corak lissajous dibuat dengan mengesan isyarat sinusoidal dua (atau lebih) pengayun yang diplot pada paksi x-y (atau, untuk kes kita, x-y-z atau R-G-B).
Langkah 2: Kapal Baik Lissajous
Corak Lissajous yang paling menarik muncul apabila frekuensi isyarat sinusoidal berbeza dengan jumlah yang sedikit. Dalam foto osiloskop di sini, frekuensi berbeza dengan nisbah 5 hingga 2 (kedua-duanya adalah nombor perdana). Corak ini merangkumi datarannya dengan cukup baik, dan masuk ke sudut dengan baik. Angka perdana yang lebih tinggi akan melakukan pekerjaan yang lebih baik lagi merangkumi alun-alun dan melangkah lebih jauh ke sudut.
Langkah 3: Tunggu - Bagaimana Kita Boleh Memacu LED Dengan Gelombang Sinusoidal?
Anda menangkap saya! Kami ingin meneroka ruang warna 3D yang berkisar dari mati (0) hingga penuh hingga (255) untuk setiap tiga warna, tetapi gelombang sinusoidal berbeza dari -1 hingga +1. Kami akan melakukan sedikit matematik dan pengaturcaraan di sini untuk mendapatkan apa yang kami mahukan.
- Darabkan setiap nilai dengan 127 untuk mendapatkan nilai yang berkisar antara -127 hingga +127
- Tambahkan 127 dan bulatkan setiap nilai untuk mendapatkan nilai antara 0 hingga 255 (cukup dekat hingga 255 untuk kita)
Nilai yang berkisar antara 0 hingga 255 dapat diwakili oleh angka byte tunggal (jenis data "char" dalam bahasa pengaturcaraan Arduino seperti C), jadi kami akan menyimpan memori dengan menggunakan representasi single-byte.
Tetapi bagaimana dengan sudut? Sekiranya anda menggunakan darjah, sudut dalam sinusoid berkisar antara 0 hingga 360. Sekiranya anda menggunakan radian, sudut berkisar antara 0 hingga 2 kali π ("pi"). Kami akan melakukan sesuatu yang sekali lagi menyimpan memori di Arduino kami, dan memikirkan bulatan yang terbahagi kepada 256 bahagian, dan mempunyai "sudut binari" yang berkisar antara 0 hingga 255, sehingga "sudut" untuk setiap warna dapat diwakili oleh nombor byte tunggal, atau karakter, di sini juga.
Arduino cukup menakjubkan seperti adanya, dan walaupun dapat mengira nilai sinusoidal, kita memerlukan sesuatu yang lebih cepat. Kami akan mengira terlebih dahulu nilainya, dan memasukkannya ke dalam susunan panjang 256 entri single-byte, atau nilai char dalam program kami (lihat deklarasi SineTable […] dalam program Arduino).
Langkah 4: Mari Bina Corak LIssajous 3D
Untuk menelusuri jadual pada frekuensi yang berbeza untuk masing-masing dari tiga warna, kami akan menyimpan satu indeks setiap warna, dan menambahkan ofset yang relatif utama pada setiap indeks ketika kami melangkah ke warna. Kami akan memilih 2, 5, dan 11 sebagai ofset relatif utama untuk nilai indeks Merah, Hijau, dan Biru. Keupayaan matematik dalaman Arduino akan membantu kita dengan membungkus secara automatik semasa kita menambah nilai ofset pada setiap indeks.
Langkah 5: Menggabungkan Ini Semua di Arduino
Sebilangan besar Arduino mempunyai sebilangan saluran PWM (atau modulasi lebar nadi). Kami memerlukan tiga di sini. Arduino UNO sangat bagus untuk ini. Malah mikrokontroler Atmel 8-bit (ATTiny85) berfungsi dengan hebat.
Setiap saluran PWM akan mendorong satu warna LED RGB menggunakan fungsi "AnalogWrite" Arduino, di mana intensiti warna pada setiap titik di sekitar kitaran sinusoidal diwakili oleh lebar nadi, atau kitaran tugas, dari 0 (semua mati) hingga 255 (semua dihidupkan). Mata kita melihat lebar nadi yang berbeza-beza ini, diulang cukup cepat, kerana intensiti atau kecerahan yang berbeza dari LED. Menggabungkan ketiga-tiga saluran PWM yang menggerakkan masing-masing tiga warna dalam LED RGB, kami dapat menampilkan 256 * 256 * 256, atau lebih dari enam belas juta warna!
Anda perlu menyiapkan Arduino IDE (Interactive Development Environment), dan menyambungkannya ke papan Arduino anda menggunakan kabel USB-nya. Jalankan pelompat dari output PWM 3, 5, dan 6 (pin pemproses 5, 11, dan 12) ke tiga perintang 1 KΩ (seribu ohm) pada papan proto atau pelindung proto anda, dan dari perintang ke LED R, G, dan pin B.
- Sekiranya LED RGB adalah katod biasa (terminal negatif), kemudian jalankan wayar dari katod kembali ke pin GND di Arduino.
- Sekiranya LED RGB adalah anod biasa (terminal positif), kemudian jalankan wayar dari anod ke pin + 5V di Arduino.
Lakaran Arduino akan berfungsi sama ada. Saya kebetulan menggunakan LED katod biasa SparkFun Electronics / COM-11120 RGB (gambar di atas, dari laman web SparkFun). Pin terpanjang adalah katod biasa.
Muat turun lakaran RGB-Instructable.ino, buka dengan Arduino IDE, dan uji menyusunnya. Pastikan untuk menentukan papan atau cip Arduino sasaran yang betul, kemudian muatkan program ke Arduino. Ia mesti dimulakan dengan segera.
Anda akan melihat kitaran LED RGB melalui seberapa banyak warna yang anda boleh namakan, dan berjuta-juta anda tidak boleh!
Langkah 6: Apa Seterusnya?
Kami baru sahaja mula meneroka RGB Color Space dengan Arduino kami. Beberapa perkara lain yang saya lakukan dengan konsep ini termasuk:
Menulis secara langsung ke register on-chip, bukannya menggunakan AnalogWrite, untuk benar-benar mempercepat
- Mengubah litar supaya sensor jarak IR mempercepat atau melambatkan kitaran bergantung pada seberapa dekat anda
- Memprogram mikrokontroler 8-pin Atmel ATTiny85 dengan bootloader Arduino dan lakaran ini
Disyorkan:
Jam Cosmo - Menukar Warna Setiap kali Angkasawan Memasuki Ruang: 8 Langkah (dengan Gambar)
Jam Cosmo - Menukar Warna Setiap kali Angkasawan Masuk ke Ruang: Hai! Adakah anda peminat ruang? Sekiranya ya maka hi-fi! Saya suka ruang dan astronomi. Jelas saya bukan angkasawan untuk pergi ke sana dan melihat alam semesta dengan lebih dekat. Tetapi setiap kali saya mengetahui bahawa seseorang dari bumi telah mengembara ke langit, saya mendapat inspirasi
Menanam Lebih Banyak Selada di Kurang Ruang Atau Menanam Selada di Ruang, (Lebih atau kurang) .: 10 Langkah
Tumbuh Lebih Banyak Selada di Kurang Ruang Atau … Tumbuh Selada di Ruang, (Lebih atau Kurang): Ini adalah penyerahan profesional kepada Pertumbuhan Pembuat di Luar Bumi, Peraduan Pembuat, yang dihantar melalui Instructables. Saya tidak dapat bersemangat untuk merancang pengeluaran tanaman ruang dan menghantar Instructable pertama saya. Untuk memulakan, peraduan meminta kami untuk
Meneroka Windows 8.1 !!: 12 Langkah
Meneroka Windows 8.1 !!: Instructable ini akan memberikan gambaran ringkas mengenai windows 8.1, semua ciri dan programnyaSila melanggan saluran sayaTerima kasih
Cara yang Sangat Sederhana / mudah / tidak rumit untuk Membuat Orang / Manusia / Haiwan / Robot Kelihatan Seperti Mereka Mempunyai Penglihatan Panas / Warna Panas (Warna Pilihan Anda) Menggunakan GIMP: 4 Langkah
Cara yang Sangat Sederhana / mudah / tidak rumit untuk Membuat Orang / Manusia / Haiwan / Robot Kelihatan Seperti Mereka Mempunyai Penglihatan Panas / Warna Panas (Warna Pilihan Anda) Menggunakan GIMP: Baca … tajuk
Warna USB Menukar Warna: 5 Langkah
Cahaya USB Mengubah Warna: Berikut adalah cahaya yang terbuat dari botol plastik, tali pancing, kabel USB lama dan LED RGB perubahan warna yang perlahan. Benang nilon (tali pancing) tidak mempunyai kesan yang sama dengan gentian optik sebenar. Terdapat lebih banyak penurunan isyarat cahaya sepanjang