Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pelacakan Gerakan Mata Infrared dengan Arduino Pro Mini – Demo Kontrol LED

Komponen dan Perlengkapan

Aplikasi dan Layanan Online

Tentang Proyek Ini

Saya menggunakan sensor infrared untuk mendeteksi gerakan mata dan mengontrol LED.

Bola Mata LED NeoPixel

Digunakan pita LED NeoPixel. Jumlah LED adalah 68 unit.

Pelacakan Gerakan Mata Infrared dengan Arduino Pro Mini – Demo Kontrol LED

LED dilekatkan pada mangkuk dengan lem dua sisi dan dihubungkan dalam urutan berikut.

Pelacakan Gerakan Mata Infrared dengan Arduino Pro Mini – Demo Kontrol LED

Pelacakan Gerakan Mata

Skematik

Pelacakan Gerakan Mata Infrared dengan Arduino Pro Mini – Demo Kontrol LED

Sensor

Saya menggunakan dua sensor QTR-1A untuk pelacakan mata. QTR-1A ditempatkan pada lembar plastik pada jarak sekitar lebar mata.

Pelacakan Gerakan Mata Infrared dengan Arduino Pro Mini – Demo Kontrol LED

Bagian sensor dan bagian mikrokontroler masing-masing dilekatkan pada kacamata dengan klip.

Pelacakan Gerakan Mata Infrared dengan Arduino Pro Mini – Demo Kontrol LED
Pelacakan Gerakan Mata Infrared dengan Arduino Pro Mini – Demo Kontrol LED

Kode Arduino

Ketika irid mendekati salah satu sensor, cahaya yang dipantulkan menurun dan nilai sensor meningkat. Sebaliknya, ketika irid menjauh, cahaya yang dipantulkan meningkat dan nilai sensor foto-reflektor menurun.

Gerakan kanan dan kiri pupil bola mata LED merasakan kenaikan dan penurunan nilai satu sensor dan mengontrolnya.

Saat berkedip, kedua nilai sensor menurun, jadi jika kedua nilai sensor menurun bersamaan, kelopak mata bola mata LED akan turun.

#include <QTRSensors.h> #include <Adafruit_NeoPixel.h> #define NUM_SENSORS 2 #define NUM_SAMPLES_PER_SENSOR 10 #define EMITTER_PIN QTR_NO_EMITTER_PIN int iniSensorValL, sensorValL; int iniSensorValR, sensorValR; #define PIN A3 Adafruit_NeoPixel led = Adafruit_NeoPixel(68, PIN, NEO_GRB + NEO_KHZ800); int blackNum = 24; int pupilNum = 12; uint32_t color; int brightness = 40; byte eyeColor; int LR =7; boolean lid = false; int cnt = 0; int blackLED[15][24] = {{12,32,35,55,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68}, {12,13,31,36,54,55,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68}, {11,13,14,30,37,53,54,56,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68}, {10,11,14,15,29,38,52,53,56,57,68,68,68,68,68,68,68,68,68,68,68,68,68,68}, { 9,10,11,12,15,16,28,33,34,39,51,52,55,56,57,58,68,68,68,68,68,68,68,68}, { 0, 8, 9,10,11,12,13,16,17,27,32,35,40,50,51,54,55,56,57,58,59,67,68,68}, { 0, 1, 7, 8, 9,10,13,14,17,18,26,31,36,41,49,50,53,54,57,58,59,60,66,67}, { 1, 2, 6, 7, 8, 9,14,15,18,19,25,30,37,42,48,49,52,53,58,59,60,61,65,66}, { 2, 3, 5, 6, 7, 8,15,16,19,20,24,29,38,43,47,48,51,52,59,60,61,62,64,65}, { 3, 4, 5, 6, 7,16,17,20,21,23,28,39,44,46,47,50,51,60,61,62,63,64,68,68}, { 4, 5, 6,17,18,21,22,27,40,45,46,49,50,61,62,63,68,68,68,68,68,68,68,68}, { 4, 5,18,19,26,41,48,49,62,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68}, { 4,19,20,25,42,47,48,63,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68}, {20,21,24,43,46,47,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68}, {21,23,44,46,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68}}; int pupilLED[15][12] = {{33,34,68,68,68,68,68,68,68,68,68,68}, {32,33,34,35,68,68,68,68,68,68,68,68}, {12,31,32,33,34,35,36,55,68,68,68,68}, {12,13,30,31,32,33,34,35,36,37,54,55}, {13,14,29,30,31,32,35,36,37,38,53,54}, {14,15,28,29,30,31,36,37,38,39,52,53}, {15,16,27,28,29,30,37,38,39,40,51,52}, {16,17,26,27,28,29,38,39,40,41,50,51}, {17,18,25,26,27,28,39,40,41,42,49,50}, {18,19,24,25,26,27,40,41,42,43,48,49}, {19,20,23,24,25,26,41,42,43,44,47,48}, {20,21,22,23,24,25,42,43,44,45,46,47}, {21,22,23,24,43,44,45,46,68,68,68,68}, {22,23,44,45,68,68,68,68,68,68,68,68}, {22,45,68,68,68,68,68,68,68,68,68,68}}; int eyelid = 0; int eyelidNum[8] = {0,4,8,16,24,34,44,56}; int eyelidLED[56] = {64,65,66,67,58,59,60,61,56,57,62,63,49,50,51,52,47,48,53,54,38,39,40,41,46,55,36,37,42,43,26,27,28,29,35,44,24,25,30,31,15,16,17,18,34,45,23,32,13,14,19,20,6,7,8,9}; QTRSensorsAnalog qtra((unsigned char[]) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS]; void blink(int eyelid, int LR) { if (eyelid != 8){ for(uint16_t i=0; i<led.numPixels(); i++) { led.setPixelColor(i, led.Color(66, 66, 66)); } for(uint16_t i=0; i<blackNum; i++) { led.setPixelColor(blackLED[LR][i], color); } for(uint16_t i=0; i<pupilNum; i++) { led.setPixelColor(pupilLED[LR][i], led.Color(0, 0, 66)); } for(int i=0; i < eyelidNum[eyelid]; i++) { led.setPixelColor(eyelidLED[i], 0); } } else if (eyelid == 8){ led.clear(); } led.show(); } void setup() { Serial.begin(115200); led.begin(); led.setBrightness(brightness); led.show(); color = led.Color(0, 177, 55); delay(100); qtra.read(sensorValues); iniSensorValL = sensorValues[0]; iniSensorValR = sensorValues[1]; blink(eyelid, LR); } void loop() { qtra.read(sensorValues); sensorValL = sensorValues[0]; sensorValR = sensorValues[1]; double rasioL = (double)sensorValL / iniSensorValL; double rasioR = (double)sensorValR / iniSensorValR; Serial.print(rasioL); Serial.print(" "); Serial.println(rasioR); if(rasioL > 0.985 && rasioR < 0.985){ for(int i = LR; i < 12; i++){ blink(0, i); delay(40); LR = i; } }else if(rasioL < 0.985 && rasioR > 0.985){ for(int i=LR; i>2; i--){ blink(0, i); delay(40); LR = i; } }else if(lid == false && rasioL < 0.96 && rasioR < 0.96){ for(int i = 1; i < 9; i++){ blink(i, LR); delay(40); lid = true; } }else if(lid == true && rasioL > 0.96 && rasioR > 0.96){ for(int i = 8; i > 0; i--){ blink(i, LR); delay(40); lid = false; } }else if(lid == false && rasioL > 0.96 && rasioR > 0.96) { if(LR <= 7){ for(int i=LR; i<=7; i++){ blink(0, i); delay(40); LR = i; } }else { for(int i=LR; i>=7; i--){ blink(0, i); delay(40); LR = i; } } Serial.println("normal"); } if (cnt > 10){ iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; } }

Operasi

Proses manufaktur

  1. Mengapa Desainer Kembali ke Bahan Alam dalam Desain Produk
  2. Sensor Cahaya Terpuls: Memperkuat Pulsa Cahaya LED menjadi Suara yang Dengar
  3. Sensor Suhu Infra Merah TMP006 dengan Raspberry Pi: Panduan Library Python & Pengaturan
  4. Membuat Sensor Suhu Jarak Jauh dengan Raspberry Pi dan Python – Panduan Langkah demi Langkah
  5. Sensor Pelacakan Garis dengan Raspberry Pi – Detektor Pintu/Garis Sederhana KY-033
  6. Pemantaman Rumah Aman dengan Home Assistant di Raspberry Pi: Gerakan, Alarm, dan Pengambilan Video
  7. Membangun Sensor Gerak Infrared DIY untuk Raspberry Pi – Panduan Langkah Demi Langkah
  8. Mengontrol LED dengan Sensor Gerak PIR pada Raspberry Pi
  9. Membuat Laser Tank Kendali Leap Motion – Arduino, Raspberry Pi, RGB LEDs
  10. Pengukuran Suhu Inframerah Presisi untuk Proses Sensitif Warna