Daftar Isi:

Menjelajahi Ruang Warna: 6 Langkah
Menjelajahi Ruang Warna: 6 Langkah

Video: Menjelajahi Ruang Warna: 6 Langkah

Video: Menjelajahi Ruang Warna: 6 Langkah
Video: #6 MENJELAJAH RUANG ANGKASA | KAJIAN MUKJIZAT ILMIAH ALQUR'AN BERSAMA ABUYA HABIB RIZIEQ SYIHAB 2024, Juli
Anonim
Menjelajahi Ruang Warna
Menjelajahi Ruang Warna

Mata kita merasakan cahaya melalui reseptor yang sensitif terhadap warna merah, hijau, dan biru dalam spektrum visual. Orang-orang telah menggunakan fakta ini untuk memberikan gambar berwarna melalui film, televisi, komputer, dan perangkat lain selama sekitar seratus tahun terakhir.

Di layar komputer atau ponsel, gambar ditampilkan dalam banyak warna dengan mengubah intensitas LED merah, hijau, dan biru kecil yang bersebelahan di layar. Jutaan warna berbeda dapat ditunjukkan dengan mengubah intensitas cahaya dari LED merah, hijau, atau biru.

Proyek ini akan membantu Anda menjelajahi ruang warna merah, hijau, dan biru (RGB) menggunakan Arduino, LED RGB, dan sedikit matematika.

Anda dapat menganggap intensitas tiga warna, merah, hijau, dan biru, sebagai koordinat dalam kubus, di mana setiap warna sepanjang satu sumbu, dan ketiga sumbu tegak lurus satu sama lain. Semakin dekat Anda ke titik nol, atau titik asal, dari sumbu, semakin sedikit warna yang ditampilkan. Ketika nilai untuk ketiga warna berada pada titik nol, atau asal, maka warnanya menjadi hitam, dan LED RGB mati total. Ketika nilai untuk ketiga warna setinggi mungkin (dalam kasus kami, 255 untuk masing-masing dari tiga warna), LED RGB menyala sepenuhnya, dan mata melihat kombinasi warna ini sebagai putih.

Langkah 1: Ruang Warna RGB

Ruang Warna RGB
Ruang Warna RGB

Terima kasih kepada Kenneth Moreland atas izin untuk menggunakan citranya yang bagus.

Kami ingin menjelajahi sudut kubus ruang warna 3D menggunakan LED RGB yang terhubung ke Arduino, tetapi juga ingin melakukan ini dengan cara yang menarik. Kita bisa melakukannya dengan membuat tiga loop (masing-masing satu untuk merah, untuk hijau, dan untuk biru), dan menelusuri setiap kombinasi warna yang mungkin, tapi itu akan sangat membosankan. Pernahkah Anda melihat pola Lissajous 2D pada osiloskop atau pertunjukan sinar laser? Tergantung pada pengaturannya, pola Lissajous dapat terlihat seperti garis diagonal, lingkaran, angka 8, atau pola seperti kupu-kupu lancip yang berputar perlahan. Pola Lissajous dibuat dengan melacak sinyal sinusoidal dari dua (atau lebih) osilator yang diplot pada sumbu x-y (atau, untuk kasus kami, x-y-z atau R-G-B).

Langkah 2: Kapal Baik Lissajous

Kapal yang Baik Lissajous
Kapal yang Baik Lissajous

Pola Lissajous yang paling menarik muncul ketika frekuensi sinyal sinusoidal berbeda sedikit. Dalam foto osiloskop di sini, frekuensinya berbeda dengan rasio 5 banding 2 (keduanya adalah bilangan prima). Pola ini menutupi kotaknya dengan cukup baik, dan masuk ke sudut dengan baik. Bilangan prima yang lebih tinggi akan melakukan pekerjaan yang lebih baik untuk menutupi bujur sangkar dan menusuk lebih jauh ke sudut-sudutnya.

Langkah 3: Tunggu - Bagaimana Kita Bisa Menggerakkan LED Dengan Gelombang Sinusoidal?

Kau menangkapku! Kami ingin menjelajahi ruang warna 3D yang berkisar dari mati (0) hingga penuh (255) untuk masing-masing dari tiga warna, tetapi gelombang sinusoidal bervariasi dari -1 hingga +1. Kami akan melakukan sedikit matematika dan pemrograman di sini untuk mendapatkan apa yang kami inginkan.

  • Kalikan setiap nilai dengan 127 untuk mendapatkan nilai yang berkisar dari -127 hingga +127
  • Tambahkan 127 dan bulatkan setiap nilai untuk mendapatkan nilai yang berkisar dari 0 hingga 255 (cukup mendekati 255 untuk kami)

Nilai yang berkisar dari 0 hingga 255 dapat diwakili oleh angka byte tunggal (tipe data "char" dalam bahasa pemrograman Arduino seperti C), jadi kita akan menghemat memori dengan menggunakan representasi byte tunggal.

Tapi bagaimana dengan sudut? Jika Anda menggunakan derajat, sudut dalam sinusoidal berkisar dari 0 hingga 360. Jika Anda menggunakan radian, sudut berkisar dari 0 hingga 2 kali ("pi"). Kami akan melakukan sesuatu yang sekali lagi menghemat memori di Arduino kami, dan memikirkan lingkaran yang dibagi menjadi 256 bagian, dan memiliki "sudut biner" yang berkisar dari 0 hingga 255, sehingga "sudut" untuk masing-masing warna dapat menjadi diwakili oleh angka byte tunggal, atau karakter, di sini juga.

Arduino cukup menakjubkan seperti apa adanya, dan meskipun dapat menghitung nilai sinusoidal, kita membutuhkan sesuatu yang lebih cepat. Kami akan menghitung nilai sebelumnya, dan memasukkannya ke dalam array 256-entry panjang byte tunggal, atau nilai char dalam program kami (lihat deklarasi SineTable[…] di program Arduino).

Langkah 4: Mari Membangun Pola Lissajous 3D

Mari Membangun Pola Lissajous 3D
Mari Membangun Pola Lissajous 3D

Untuk menelusuri tabel pada frekuensi yang berbeda untuk masing-masing dari tiga warna, kami akan menyimpan satu indeks per warna, dan menambahkan offset yang relatif prima ke setiap indeks saat kami melangkah melalui warna. Kami akan memilih 2, 5, dan 11 sebagai offset yang relatif prima untuk nilai indeks Merah, Hijau, dan Biru. Kemampuan matematika internal Arduino sendiri akan membantu kita dengan secara otomatis membungkus saat kita menambahkan nilai offset ke setiap indeks.

Langkah 5: Menempatkan Ini Semua Bersama di Arduino

Menempatkan Ini Semua Bersama di Arduino
Menempatkan Ini Semua Bersama di Arduino

Sebagian besar Arduino memiliki sejumlah saluran PWM (atau modulasi lebar pulsa). Kita akan membutuhkan tiga di sini. Arduino UNO sangat bagus untuk ini. Bahkan mikrokontroler Atmel 8-bit kecil (ATTiny85) bekerja dengan sangat baik.

Setiap saluran PWM akan menggerakkan satu warna LED RGB menggunakan fungsi "AnalogWrite" Arduino, di mana intensitas warna pada setiap titik di sekitar siklus sinusoidal diwakili oleh lebar pulsa, atau siklus kerja, dari 0 (semua mati) hingga 255 (semua aktif). Mata kita melihat lebar pulsa yang bervariasi ini, berulang cukup cepat, sebagai intensitas atau kecerahan LED yang berbeda. Menggabungkan ketiga saluran PWM yang menggerakkan masing-masing dari tiga warna dalam LED RGB, kami mendapatkan kemampuan untuk menampilkan 256*256*256, atau lebih dari enam belas juta warna!

Anda harus mengatur Arduino IDE (Interactive Development Environment), dan menghubungkannya ke papan Arduino Anda menggunakan kabel USB-nya. Jalankan jumper dari output PWM 3, 5, dan 6 (pin prosesor 5, 11, dan 12) ke tiga resistor 1 KΩ (seribu ohm) pada papan proto atau pelindung proto Anda, dan dari resistor ke LED R, G, dan pin B.

  • Jika LED RGB adalah katoda umum (terminal negatif), maka jalankan kabel dari katoda kembali ke pin GND di Arduino.
  • Jika LED RGB adalah anoda umum (terminal positif), maka jalankan kabel dari anoda kembali ke pin +5V pada Arduino.

Sketsa Arduino akan berfungsi dengan baik. Saya kebetulan menggunakan LED katoda umum SparkFun Electronics / COM-11120 RGB (gambar di atas, dari situs web SparkFun). Pin terpanjang adalah katoda umum.

Unduh sketsa RGB-Instructable.ino, buka dengan Arduino IDE, dan uji kompilasi. Pastikan untuk menentukan papan atau chip Arduino target yang benar, lalu muat program ke Arduino. Ini harus segera dimulai.

Anda akan melihat siklus LED RGB melalui warna sebanyak yang Anda bisa sebutkan, dan jutaan Anda tidak bisa!

Langkah 6: Apa Selanjutnya?

Kami baru saja mulai menjelajahi Ruang Warna RGB dengan Arduino kami. Beberapa hal lain yang telah saya lakukan dengan konsep ini meliputi:

Menulis langsung ke register on-chip, alih-alih menggunakan AnalogWrite, untuk benar-benar mempercepatnya

  • Memodifikasi sirkuit sehingga sensor jarak IR mempercepat atau memperlambat siklus tergantung pada seberapa dekat Anda
  • Memprogram mikrokontroler Atmel ATTiny85 8-pin dengan bootloader Arduino dan sketsa ini

Direkomendasikan: