İçindekiler:
- Adım 1: Anayasa
- Adım 2: NeoPixel LED Göz Küresi
- Adım 3: Sensör Ünitesi
- Adım 4: Arduino Kodu
- Adım 5: Çalıştırma
Video: Kızılötesi Sensör Kullanarak Göz Hareketi Takibi: 5 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Göz hareketlerini algılamak ve LED'i kontrol etmek için bir kızılötesi sensör kullandım.
LED Tape NeoPixel ile göz küresi yaptım.
Adım 1: Anayasa
Göz takibi için iki sensör QTR - 1A kullandım. Arduino ile algılama ve LED'i kontrol etme.
bileşenler
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Pro Trinket/ItsyBitsy için Adafruit LiIon/LiPoly Sırt Çantası Eklentisi
- LiPo Pil
- NeoPiksel şeridi
- QTR-1A Yansıma Sensörü
Adım 2: NeoPixel LED Göz Küresi
NeoPixel LED bant kullanılmıştır. LED 68 birimdir.
LED, çift taraflı bant ile kaseye sabitlenir ve kablolanır.
Adım 3: Sensör Ünitesi
Göz takibi için iki QTR - 1A sensörü kullandım. QTR - 1A, yaklaşık gözün genişliği kadar bir mesafede plastik bir tabaka üzerine yerleştirilir.
Sensör kısmı ve mikrodenetleyici kısmı sırasıyla bir klips ile gözlüklere sabitlenmiştir.
Adım 4: Arduino Kodu
İris bir sensöre yaklaştığında yansıyan ışık azalır ve sensör değeri artar. Tersine, iris uzaklaştığında yansıyan ışık artar ve foto yansıtıcının sensör değeri azalır.
LED göz küresinin gözbebeğinin sağ ve sol hareketi, bir sensör değerindeki artışı ve azalmayı algılar ve kontrol eder. Yanıp sönerken, her iki sensör değeri de azalır, bu nedenle iki sensör değeri aynı anda azalırsa, LED göz küresinin göz kapakları aşağı iner.
Aşağıdaki kütüphaneyi kullandım.
- QTRsensors:
- Adafruit_NeoPixel:
#include #include
#define NUM_SENSORS 2 // kullanılan sensör sayısı#define NUM_SAMPLES_PER_SENSOR 10 // ortalama alma#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 öğrenciNum = 12; uint32_t renk; int parlaklık = 40; bayt eyeColor; int LR =7; boole kapağı = yanlış; int cnt = 0;
//Siyah göz L&R animasyonu 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}};
//öğrenci L&R animasyonu öğrenciLED[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}};
//Animasyonun göz kapağını kırp = 0; int gözkapağıSayı[8] = {0, 4, 8, 16, 24, 34, 44, 56}; int göz kapağıLED[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((imzasız karakter) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS];
void flash(int göz kapağı, int LR) { if (göz kapağı != 8){ //Pewter for(uint16_t i=0; i<led.numPixels(); i++) { led.setPixelColor(i, led. Color(66), 66, 66)); }
//Black eye for(uint16_t i=0; i led.setPixelColor(blackLED[LR], color); }
//öğrenci for(uint16_t i=0; ben
led.setPixelColor(öğrenciLED[LR], led. Color(0, 0, 66)); }
//gözkapağı for(int i=0; i < gözkapağıNum[gözkapağı];i++) { led.setPixelColor(eyelidLED, 0); } } else if (göz kapağı == 8){ led.clear(); } led.show();}
geçersiz kurulum() {
Seri.başla(115200); led.begin(); led.setBrightness(parlaklık); // İlk Parlaklık 40 led.show(); // Tüm pikselleri 'kapalı' olarak başlat color = led. Color(0, 177, 55); // öğrenci renk gecikmesi(100); qtra.read(sensorValues); iniSensorValL = sensorValues[0]; iniSensorValR = sensorValues[1]; yanıp sönme(göz kapağı, LR); }
void loop() { //QTR - 1A sensör değeri qtra.read(sensorValues); sensorValL = sensorValues[0]; sensorValR = sensorValues[1];
double rasioL = (double)sensorValL / iniSensorValL;
çift rasioR = (çift)sensorValR / iniSensorValR;
Serial.print(rasioL);
Seri.print(" "); Serial.println(rasioR);
if(rasioL > 0.985 && rasioR < 0.985){ //right for(int i = LR; i < 12; i++){ yanıp sönme(0, i); gecikme(40); LR = ben; } }else if(rasioL 0.985){ //left for(int i=LR; i>2; i--){ yanıp sönme(0, i); gecikme(40); LR = ben; } }else if(lid == false && rasioL < 0.96 && rasioR < 0.96){ //Blinking close for(int i = 1; i 0.96 && rasioR > 0.96){ //Yanıp sönen open for(int i = 8; i > 0; i--){ yanıp sönme(i, LR); gecikme(40); kapak = yanlış; } }else if(lid == false && rasioL > 0.96 && rasioR > 0.96) { //normal //cnt++; //göz kapağı = 0; if(LR <= 7){ for(int i=LR; i<=7; i++){ yanıp sönme(0, i); gecikme(40); LR = ben; } }else { for(int i=LR; i>=7; i--){ yanıp sönme(0, i); gecikme(40); LR = ben; } } }
//İlk değer yenileme if (cnt > 10){ iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; } }
Adım 5: Çalıştırma
Sensörle öğrencinin sol ve sağ hareketini ve göz kırpmasını algılayın ve göz küresi LED'ini kontrol edin.
Önerilen:
Arduino Kullanarak DC MOTOR El Hareketi Kontrolü Hız ve Yön: 8 Adım
Arduino Kullanarak DC MOTOR El Hareketi Kontrolü Hız ve Yön Kontrolü: Bu eğitimde, arduino ve Visuino kullanarak el hareketleriyle bir DC motoru nasıl kontrol edeceğinizi öğreneceğiz. Videoyu izleyin! Şuna da göz atın: El hareketi Eğitimi
Arduino İle Kızılötesi Sensör Kullanımı: 8 Adım (Resimli)
Arduino İle Kızılötesi Sensör Kullanımı: Kızılötesi (diğer adıyla IR) sensör nedir? IR sensörü, standartlar tarafından tanımlanan belirli frekans aralıklarında IR sinyallerini tarayan ve bunları çıkış pininde (tipik olarak sinyal pini olarak adlandırılır) elektrik sinyallerine dönüştüren elektronik bir araçtır. . Kızılötesi sinyali
İnsan-Bilgisayar Arayüzü: EMG Kullanarak Bilek Hareketi ile bir Tutucu (Kirigami tarafından yapılmıştır) İşlevi: 7 Adım
İnsan-Bilgisayar Arayüzü: EMG Kullanarak Bilek Hareketi ile bir Tutucu İşlevi (Kirigami tarafından yapılmıştır) python ve arduino aracılığıyla ve origami tabanlı bir tutucuyu çalıştırdı
Raspberry Pi Kullanarak Sıcaklık ve Nem Takibi: 6 Adım (Resimli)
Raspberry Pi Kullanarak Sıcaklık ve Nem Takibi: Yaz geliyor ve kliması olmayanlar iç ortamdaki atmosferi manuel olarak kontrol etmeye hazırlanmalıdır. Bu yazıda, insan konforu için en önemli parametreleri ölçmenin modern yolunu anlatıyorum: sıcaklık ve nem. T
Node MCU ve Google Assistant Kullanarak Ev Aletlerini Kontrol Edin - IoT - göz kırp - IFTTT: 8 Adım
Node MCU ve Google Assistant Kullanarak Ev Aletlerini Kontrol Edin | IoT | göz kırp | IFTTT: Google Asistan Kullanarak Aletleri kontrol etmek için basit bir proje: Uyarı: Şebeke Elektriğiyle İşlem Yapmak Tehlikeli olabilir. Son derece dikkatli davranın. Açık devrelerle çalışırken profesyonel bir elektrikçi kiralayın. Da için sorumluluk almayacağım