Isi kandungan:

Sensor Warna DIY Ringkas Dari Magicbit: 5 Langkah
Sensor Warna DIY Ringkas Dari Magicbit: 5 Langkah

Video: Sensor Warna DIY Ringkas Dari Magicbit: 5 Langkah

Video: Sensor Warna DIY Ringkas Dari Magicbit: 5 Langkah
Video: #megic5 2024, November
Anonim
Image
Image

Dalam tutorial ini kita akan belajar tentang bagaimana membuat sensor warna sederhana menggunakan Magicbit dengan Arduino.

Bekalan

  • Magicbit
  • Kabel USB-A hingga Mikro-USB

Langkah 1: Cerita

Persediaan Perkakasan
Persediaan Perkakasan

Hai kawan-kawan, kadang-kadang anda mesti menggunakan sensor warna untuk beberapa tujuan. Tetapi mungkin anda tidak tahu bagaimana ia berfungsi. Oleh itu, dalam tutorial ini, anda akan belajar tentang bagaimana membuat sensor warna DIY sederhana menggunakan Magicbit dengan Arduino. Mari bermula.

Langkah 2: Teori dan Metodologi

Dalam projek ini kami berharap dapat mengajar anda untuk membina sensor warna yang dapat mengesan warna merah, hijau dan biru. Ini adalah contoh yang sangat asas. Jadi bagaimana untuk melakukan ini. Untuk tujuan ini kami menggunakan modul RGB Magicbit dan LDR terbina dalam. Pertama sekali anda mesti belajar mengenai beberapa teori. Iaitu mengenai jumlah pantulan cahaya. Sekarang saya mengemukakan soalan daripada anda. Permukaan berwarna apa yang paling mencerminkan cahaya warna merah? Dan permukaan apa yang kebanyakannya memantulkan lampu Hijau dan Biru. Fikirkan sedikit. Tetapi jawapannya mudah. Permukaan berwarna Merah kebanyakannya memantulkan cahaya warna merah. Juga permukaan hijau dan biru akan memantulkan cahaya hijau dan biru. Jadi dalam projek ini kita menggunakan teori itu. Untuk mengenali warna, kami memancarkan lampu merah, hijau dan biru satu persatu. Setiap kali kita mengukur jumlah pantulan dengan menggunakan nilai LDR. Sekiranya sebilangan cahaya akan memberikan pantulan paling banyak daripada dua lampu lain, maka permukaan itu mestilah permukaan berwarna yang paling banyak dipantulkan.

Langkah 3: Persediaan Perkakasan

Ini sangat mudah. Pasangkan modul RGB anda ke port kanan atas Magicbit. Modul ini mempunyai WS2812B Neopixel LED. LED ini mempunyai 4 pin. Dua untuk kuasa dan dua untuk Data masuk dan keluar. Kerana kita menggunakan satu LED, kita hanya memerlukan pin kuasa dan data dalam pin. Sekiranya anda tidak mempunyai modul tersebut, anda boleh membeli dan modul Neopixel. Sekiranya anda membeli modul seperti itu, anda perlu menyambungkan pin kuasa dan data ke Magicbit. Itu sangat mudah. Sambungkan VCC dan GND Magicbit ke pin modul RGB dan pin D33 ke pin data.

Langkah 4: Persediaan Perisian

Sebahagian besar dilakukan oleh pengaturcaraan. Kami menggunakan Arduino IDE untuk memprogram Magicbit kami. Dalam kod kami menggunakan beberapa perpustakaan. Mereka adalah perpustakaan Adafruit Neopixel untuk kawalan Neopixel LED dan perpustakaan Adafruit OLED untuk mengendalikan OLED. Dalam persediaan kami mengkonfigurasi input dan output kami. Konfigurasikan juga paparan OLED terbina dalam Magicbit. Dalam gelung kami memeriksa butang tekan kiri tangan ditekan atau tidak dari Magicbit. Sekiranya ditekan, isyarat input adalah 0. Kerana sudah ditarik oleh papan. Sekiranya ia ditekan maka kami melakukan pemeriksaan warna. Sekiranya tidak, maka skrin akan memaparkan pernyataan "tanpa warna". Apabila butang ditekan secara automatik hidupkan lampu merah, hijau dan biru satu persatu dan simpan jumlah pantulan warna menjadi tiga pemboleh ubah. Seterusnya kami membandingkan nilai tersebut dan memilih warna nilai maksimum untuk dipaparkan sebagai warna output.

Oleh itu, sambungkan kabel USB mikro ke Magicbit dan pilih jenis papan dan port com dengan betul. Sekarang muat naik kod. Kemudian tiba masanya untuk menguji sensor kami. Untuk mengujinya, simpan kertas atau lembaran permukaan merah, hijau atau biru di atas modul LDR dan RGB dan tekan butang tekan kiri. Kemudian paparan OLED akan menunjukkan apa warna permukaannya. Sekiranya salah, ada beberapa warna yang mempunyai intensiti cahaya tinggi. Sebagai contoh di setiap permukaan hijau outputnya berwarna merah maka anda harus mengurangkan kecerahan cahaya merah dari beberapa jumlah. Kerana lampu merah mempunyai kecerahan yang sangat tinggi dalam kes itu. Oleh itu ia mempunyai refleksi yang tinggi. Sekiranya anda tidak tahu bagaimana cara mengawal kecerahan, rujuk tutorial di pautan di bawah.

magicbit-arduino.readthedocs.io/en/latest/

Dalam pautan ini, anda dapat mengetahui cara mengawal modul RGB dari Magicbit. Dan anda juga boleh mencari cara bekerja dengan LDR dan tekan butang menggunakan Magicbit. Baca dokumen itu dan pelajari lebih lanjut bagaimana meningkatkan sensor warna. Kerana ini adalah contoh asas mengenai bagaimana sensor warna berfungsi. Sebilangan besar jenis sensor warna berfungsi dengan cara ini. Oleh itu, cubalah memperbaikinya dengan menghilangkan bunyi cahaya sekitar dan bunyi lain.

Langkah 5: Arduino Code of Color Sensor

#sertakan

#tentukan LED_PIN 33

#tentukan LED_COUNT 1 Adafruit_NeoPixel LED (LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800); #include #include #include #define OLED_RESET 4 Adafruit_SSD1306 paparan (128, 64); #define LDR 36 #define Button 35 int R_value, G_value, B_value; persediaan tidak sah () {LED.begin (); LED.show (); pinMode (LDR, INPUT); pinMode (Butang, INPUT); display.begin (SSD1306_SWITCHCAPVCC, 0x3C); paparan.display (); kelewatan (1000); display.clearDisplay (); Serial.begin (9600); } gelung void () {if (digitalRead (Button) == 0) {// jika butang ditekan LED.setPixelColor (0, LED. Color (0, 50, 0)); // pada redcolour LED.show (); kelewatan (100); R_value = analogRead (LDR); // dapatkan LED mount merah.setPixelColor (0, LED. Color (150, 0, 0)); // pada greencolour LED.show (); kelewatan (100); G_value = analogRead (LDR); // dapatkan LED mount hijau.setPixelColor (0, LED. Color (0, 0, 255)); // pada bluecolour LED.show (); kelewatan (100); B_value = analogRead (LDR); // dapatkan mount biru jika (R_value> G_value && R_value> B_value) {// merah paling banyak dipaparkan Paparan ("RED", 3); } lain jika (G_value> R_value && G_value> B_value) {// hijau paling banyak dipaparkan Paparan ("HIJAU", 3); } lain jika (B_value> R_value && B_value> G_value) {// biru paling banyak dipaparkan Paparan ("BLUE", 3); } Serial.print ("RED ="); Serial.print (R_value); Serial.print ("HIJAU ="); Serial.print (G_value); Serial.print ("BLUE ="); Serial.println (B_value); } lain-lain {LED.setPixelColor (0, LED. Color (0, 0, 0)); // mati RGB LED.show (); Paparan ("TIADA WARNA", 2); }} Paparan kekosongan (String commond, int size) {// display data display.clearDisplay (); display.setTextSize (saiz); // Paparan skala piksel normal: setTextColor (PUTIH); // Lukis paparan teks putih.setCursor (0, 20); // Mulakan di paparan sudut kiri atas.println (commond); paparan.display (); }

Disyorkan: