Агуулгын хүснэгт:

Хэт улаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг хянах: 5 алхам
Хэт улаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг хянах: 5 алхам

Видео: Хэт улаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг хянах: 5 алхам

Видео: Хэт улаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг хянах: 5 алхам
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Долдугаар сарын
Anonim
Хэт улаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг хянах
Хэт улаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг хянах

Би хэт ягаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг мэдэрч, LED -ийг удирддаг.

Би LED соронзон хальс NeoPixel ашиглан нүдний хараа хийсэн.

Алхам 1: Үндсэн хууль

Үндсэн хууль
Үндсэн хууль

Би нүд мэдрэхэд QTR - 1A гэсэн хоёр мэдрэгчийг ашигласан. Arduino ашиглан мэдрэх, LED -ийг хянах.

бүрэлдэхүүн хэсгүүд

  • SparkFun Arduino Pro Mini 328 - 5V/16MHz
  • Adafruit LiIon/Pro Trinket/ItsyBitsy-д зориулсан LiPoly үүргэвчний нэмэлт хэрэгсэл
  • LiPo батерей
  • NeoPixel зурвас
  • QTR-1A цацруулагч мэдрэгч

Алхам 2: NeoPixel LED нүдний бөмбөг

NeoPixel LED нүдний бөмбөг
NeoPixel LED нүдний бөмбөг
NeoPixel LED нүдний бөмбөг
NeoPixel LED нүдний бөмбөг

NeoPixel LED соронзон хальсыг ашигладаг. LED нь 68 нэгж юм.

LED нь хоёр талт соронзон хальсны тусламжтайгаар аяганд бэхлэгддэг.

Алхам 3: Мэдрэгч төхөөрөмж

Мэдрэгчийн нэгж
Мэдрэгчийн нэгж
Мэдрэгчийн нэгж
Мэдрэгчийн нэгж
Мэдрэгчийн нэгж
Мэдрэгчийн нэгж

Би нүд мэдрэхэд QTR - 1A гэсэн хоёр мэдрэгчийг ашигласан. QTR - 1A -ийг хуванцар хуудсан дээр нүдний өргөн орчим зайд байрлуулна.

Мэдрэгчийн хэсэг ба микроконтроллерийн хэсгийг нүдний шилэнд хавчаараар бэхэлсэн байв.

Алхам 4: Arduino код

Цахилдаг нэг мэдрэгч рүү ойртох тусам туссан гэрэл багасч, мэдрэгчийн утга нэмэгддэг. Үүний эсрэгээр, цахилдагийг холдох тусам гэрэл тусч, гэрэл тусгагчийн мэдрэгчийн утга буурдаг.

LED нүдний харааны баруун ба зүүн хөдөлгөөн нь нэг мэдрэгчийн утга нэмэгдэж, буурч байгааг мэдэрч түүнийг хянадаг. Нүдээ анивчихад мэдрэгчийн хоёулаа хоёулаа хоёулаа буурдаг тул хэрэв хоёр мэдрэгчийн утга нэгэн зэрэг буурвал LED нүдний алимны зовхи буурах болно.

Би дараах номын санг ашигласан.

  • QTR мэдрэгч:
  • Adafruit_NeoPixel:

#оруулах #оруулах

#тодорхойлох NUM_SENSORS 2 // ашигласан мэдрэгчийн тоог#NUM_SAMPLES_PER_SENSOR 10 тодорхойлох // дундаж#тодорхойлох EMITTER_PIN QTR_NO_EMITTER_PIN

int iniSensorValL, sensorValL; int iniSensorValR, sensorValR; #тодорхойлох PIN A3 Adafruit_NeoPixel led = Adafruit_NeoPixel (68, PIN, NEO_GRB + NEO_KHZ800); int blackNum = 24; int pupilNum = 12; uint32_t өнгө; int тод байдал = 40; байт нүдний өнгө; int LR = 7; логик таг = хуурамч; int cnt = 0;

// Хар нүд L&R анимаци хар black [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, 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, 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, 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, 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, 68}};

// сурагч L&R анимэйшн pupilLED [15] [12] = {{33, 34, 68, 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}};

// Зовхины анимац анивчих = 0; int зовхиNum [8] = {0, 4, 8, 16, 24, 34, 44, 56}; int зовхи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 ((гарын үсэггүй тэмдэгт ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); гарын үсэггүй int sensorValues [NUM_SENSORS];

void blink (int зовхи, int LR) {if (зовхи! = 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 (pupilLED [LR] , led. Color (0, 0, 66)); }

// for зовхи (int i = 0; i <зовхины тоо] }} else if (зовхи == 8) {led.clear (); } led.show ();}

хүчингүй тохиргоо () {

Цуваа.begin (115200); led.begin (); led.setBrightness (тод байдал); // Анхны Brightness 40 led.show (); // Бүх пикселийг 'off' color = led болгон эхлүүлэх. Өнгө (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 = (давхар) мэдрэгчValL / iniSensorValL;

давхар rasioR = (давхар) мэдрэгчValR / iniSensorValR;

Цуваа.хэвлэх (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; }} if if (lid == false && rasioL <0.96 && rasioR <0.96) {// For intink for close > 0; i-) {анивчих (i, LR); саатал (40); таг = худал; }} 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; }} өөр {for (int i = LR; i> = 7; i-) {blink (0, i); саатал (40); LR = i; }}}

// Анхны утгыг шинэчлэх бол (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}

Алхам 5: Үйл ажиллагаа

Мэдрэгчээр нүдний хараа анивчих, зүүн, баруун хөдөлгөөнийг илрүүлж, нүдний харааны LED -ийг хянах.

Зөвлөмж болгож буй: