Мазмуну:

Инфракызыл сенсордун жардамы менен көздүн кыймылын көзөмөлдөө: 5 кадам
Инфракызыл сенсордун жардамы менен көздүн кыймылын көзөмөлдөө: 5 кадам

Video: Инфракызыл сенсордун жардамы менен көздүн кыймылын көзөмөлдөө: 5 кадам

Video: Инфракызыл сенсордун жардамы менен көздүн кыймылын көзөмөлдөө: 5 кадам
Video: SONY IMX415 8МП+5-X zoom Купольная антивандальная IP камера фиксирует лица и людей ICsee XMEye 2024, Июль
Anonim
Инфракызыл сенсордун жардамы менен көздүн кыймылын көзөмөлдөө
Инфракызыл сенсордун жардамы менен көздүн кыймылын көзөмөлдөө

Мен инфракызыл сенсор менен көздүн кыймылын сезип, LEDди көзөмөлдөп турдум.

Мен LED Tape NeoPixel менен көз алмаларды жасадым.

1 -кадам: Конституция

Конституция
Конституция

Мен көзгө көз салуу үчүн QTR - 1A эки сенсорун колдондум. Arduino менен сезүү жана LEDди башкаруу.

компоненттери

  • SparkFun Arduino Pro Mini 328 - 5V/16MHz
  • Adafruit LiIon/LiPoly рюкзак Pro Trinket/ItsyBitsy үчүн кошумча
  • LiPo батареясы
  • NeoPixel тилкеси
  • QTR-1A чагылтуу сенсору

2 -кадам: NeoPixel LED Eye Ball

NeoPixel LED көз шары
NeoPixel LED көз шары
NeoPixel LED көз шары
NeoPixel LED көз шары

NeoPixel LED тасмасы колдонулат. LED 68 бирдик.

LED идишке эки тараптуу скотч менен бекитилген жана зым менен бекитилген.

3 -кадам: Sensor Unit

Сенсор бирдиги
Сенсор бирдиги
Сенсор бирдиги
Сенсор бирдиги
Сенсор бирдиги
Сенсор бирдиги

Мен көзгө көз салуу үчүн QTR - 1A эки сенсорун колдондум. QTR - 1A пластикалык баракка көздүн туурасынан алыс аралыкта жайгаштырылган.

Сенсордун бөлүгү жана микроконтроллердин бөлүгү көз айнекке тийиштүү түрдө клип менен бекитилген.

4 -кадам: Arduino коду

Ирис бир сенсорго жакындаганда, чагылган жарык азайып, сенсордун мааниси жогорулайт. Тескерисинче, ирис алыстап кеткенде, чагылган жарык көбөйөт жана фото рефлектордун сенсордук мааниси төмөндөйт.

LED көз карегинин окуучусунун оң жана сол кыймылы бир сенсордун маанисинин өсүшүн жана азайышын сезет жана аны башкарат. Көз ирмемде сенсордун эки мааниси тең төмөндөйт, андыктан эки сенсордун мааниси бир убакта төмөндөсө, LED көз алмасынын кабактары ылдый түшөт.

Мен төмөнкү китепкананы колдондум.

  • QTRsensors:
  • Adafruit_NeoPixel:

#кошуу #кошуу

#аныктоо NUM_SENSORS 2 // колдонулган сенсорлордун саны#NUM_SAMPLES_PER_SENSOR 10ду аныктоо // орточо#аныктоо 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 түсү; int жарыктыгы = 40; байт көзColor; int LR = 7; логикалык капкак = жалган; int cnt = 0;

// Кара көз L&R анимациясы 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, 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, 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, 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, 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, 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, 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, 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, 68}};

// окуучу L&R анимациясы окуучуга [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}};

// Blink animationint kirpik = 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 ((белгиси жок ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues [NUM_SENSORS];

void blink (int eye, int LR) {if (eye! = 8) {// Pewter for (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66), 66, 66)); }

// Кара көз (uint16_t i = 0; i led.setPixelColor (blackLED [LR] , түс);}

// үчүн окуучу (uint16_t i = 0; i

led.setPixelColor (окуучу [LR] , led. Color (0, 0, 66)); }

// үчүн кабак (int i = 0; i <eyelidum] }} else if (кабак == 8) {led.clear (); } led.show ();}

жараксыз орнотуу () {

Serial.begin (115200); led.begin (); led.setBrightness (жарыктык); // Initial Brightness 40 led.show (); // Бардык пикселдерди "өчүрүү" түсүнө баштапкы түс = led. Color (0, 177, 55); // окуучунун түсүнүн кечигүүсү (100); qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; көз ирмөө (кабак, LR); }

void loop () {// QTR - 1A сенсордун мааниси qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];

кош rasioL = (кош) sensorValL / iniSensorValL;

кош rasioR = (кош) sensorValR / iniSensorValR;

Serial.print (rasioL);

Serial.print (""); Serial.println (rasioR);

if (rasioL> 0.985 && rasioR <0.985) {// right for (int i = LR; i <12; i ++) {blink (0, i); кечиктирүү (40); LR = i; }} else if (rasioL 0.985) {// for (int i = LR; i> 2; i-) {blink (0, i); кечиктирүү (40); LR = i; }} else if (lid == false && rasioL <0.96 && rasioR <0.96) {// For blinking for close (int i = 1; i 0.96 && rasioR> 0.96) {// Blinking open for (int i = 8; i > 0; i-) {blink (i, LR); кечиктирүү (40); lid = false; }} else if (lid == false && rasioL> 0.96 && rasioR> 0.96) {// нормалдуу // cnt ++; // кабак = 0; if (LR <= 7) {for (int i = LR; i <= 7; i ++) {blink (0, i); кечиктирүү (40); LR = i; }} else {for (int i = LR; i> = 7; i-) {blink (0, i); кечиктирүү (40); LR = i; }}}

// Баштапкы маанини жаңыртуу, эгерде (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}

5 -кадам: операция

Сенсор менен окуучунун сол жана оң кыймылын аныктап, көздүн карегиндей болгон диодду көзөмөлдөңүз.

Сунушталууда: