![Проследяване на движението на очите с помощта на инфрачервен сензор: 5 стъпки Проследяване на движението на очите с помощта на инфрачервен сензор: 5 стъпки](https://i.howwhatproduce.com/images/001/image-1833-80-j.webp)
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36
![Проследяване на движението на очите с помощта на инфрачервен сензор Проследяване на движението на очите с помощта на инфрачервен сензор](https://i.howwhatproduce.com/images/001/image-1833-81-j.webp)
Използвах инфрачервен сензор, за да усетя движенията на очите и да контролирам светодиода.
Направих очни ябълки с LED лента NeoPixel.
Стъпка 1: Конституция
![Конституция Конституция](https://i.howwhatproduce.com/images/001/image-1833-82-j.webp)
Използвах два сензора QTR - 1A за проследяване на очите. Усещане с Arduino и управление на светодиода.
компоненти
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Добавка за раница Adafruit LiIon/LiPoly за Pro Trinket/ItsyBitsy
- LiPo батерия
- Неопикселова лента
- QTR-1A Сензор за отражение
Стъпка 2: NeoPixel LED очна топка
![LED топка за очи NeoPixel LED LED топка за очи NeoPixel LED](https://i.howwhatproduce.com/images/001/image-1833-83-j.webp)
![LED топка за очи NeoPixel LED LED топка за очи NeoPixel LED](https://i.howwhatproduce.com/images/001/image-1833-84-j.webp)
Използва се LED лента NeoPixel. LED е 68 единици.
LED се фиксира към купата с двустранна лента и се свързва.
Стъпка 3: Сензорен модул
![Сензорен блок Сензорен блок](https://i.howwhatproduce.com/images/001/image-1833-85-j.webp)
![Сензорен блок Сензорен блок](https://i.howwhatproduce.com/images/001/image-1833-86-j.webp)
![Сензорен блок Сензорен блок](https://i.howwhatproduce.com/images/001/image-1833-87-j.webp)
Използвах два сензора 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; байт eyeColor; int LR = 7; булев капак = невярно; int cnt = 0;
// L&R анимация за черни очи в черноLED [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}};
// ученик L&R анимацияint ученикLED [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 клепач = 0; int eyelidNum [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];
празно мигане (int клепач, int LR) {if (клепач! = 8) {// Оловен за (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 (ученикLED [LR] , led. Color (0, 0, 66)); }
// клепач за (int i = 0; i <eyelidNum [клепач]; i ++) {led.setPixelColor (eyelidLED , 0); }} иначе ако (клепач == 8) {led.clear (); } led.show ();}
void setup () {
Serial.begin (115200); led.begin (); led.setBrightness (яркост); // Начална яркост 40 led.show (); // Инициализираме всички пиксели на 'off' color = led. Color (0, 177, 55); // забавяне на цвета на зеницата (100); qtra.read (sensorValues); iniSensorValL = valueValues [0]; iniSensorValR = сензорни стойности [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) {// вдясно за (int i = LR; i <12; i ++) {мига (0, i); забавяне (40); LR = i; }} иначе ако (rasioL 0.985) {// ляво за (int i = LR; i> 2; i-) {мига (0, i); забавяне (40); LR = i; }} else if (lid == false && rasioL <0,96 && rasioR <0,96) {// Мигащо затваряне за (int i = 1; i 0,96 && rasioR> 0,96) {// Мигащо отворено за (int i = 8; i > 0; i-) {мига (i, LR); забавяне (40); капак = невярно; }} else if (lid == false && rasioL> 0.96 && rasioR> 0.96) {// нормално // cnt ++; // клепач = 0; ако (LR <= 7) {for (int i = LR; i <= 7; i ++) {мига (0, i); забавяне (40); LR = i; }} else {for (int i = LR; i> = 7; i-) {мига (0, i); забавяне (40); LR = i; }}}
// Опресняване на първоначалната стойност if (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
Стъпка 5: Операция
Открийте движението наляво и надясно и премигнете на зеницата със сензора и контролирайте светодиода за очната ябълка.
Препоръчано:
Проследяване на движението на човешкото око: 6 стъпки
![Проследяване на движението на човешкото око: 6 стъпки Проследяване на движението на човешкото око: 6 стъпки](https://i.howwhatproduce.com/images/001/image-354-17-j.webp)
Проследяване на движението на човешкото око: Този проект има за цел да улови движението на човешкото око и показва неговото движение върху набор от LED светлини, които са поставени във формата на око. Този тип проекти потенциално биха могли да имат много приложения в областта на роботиката и по -специално хума
Двигащ се двигател с проследяване на очите: 8 стъпки
![Двигащ се двигател с проследяване на очите: 8 стъпки Двигащ се двигател с проследяване на очите: 8 стъпки](https://i.howwhatproduce.com/images/001/image-501-26-j.webp)
Двигащ се двигател с проследяване на очите: В момента сензорите за проследяване на очите са по -често срещани в различни области, но в търговската мрежа са по -известни с интерактивни игри. Този урок не претендира да разработва сензорите, тъй като е много сложен и поради все по -честото му използване
Проследяване и проследяване за малки магазини: 9 стъпки (със снимки)
![Проследяване и проследяване за малки магазини: 9 стъпки (със снимки) Проследяване и проследяване за малки магазини: 9 стъпки (със снимки)](https://i.howwhatproduce.com/images/007/image-19294-j.webp)
Проследяване и следене за малки магазини: Това е система, създадена за малки магазини, която трябва да се монтира на електронни велосипеди или електронни тротинетки за доставки на къси разстояния, например пекарна, която иска да доставя сладкиши. Какво означава Track and Trace? Проследяване и проследяване е система, използвана от ca
Инфрачервен термометър на базата на Arduino - Инфрачервен термометър, използващ Arduino: 4 стъпки
![Инфрачервен термометър на базата на Arduino - Инфрачервен термометър, използващ Arduino: 4 стъпки Инфрачервен термометър на базата на Arduino - Инфрачервен термометър, използващ Arduino: 4 стъпки](https://i.howwhatproduce.com/images/001/image-764-35-j.webp)
Инфрачервен термометър на базата на Arduino | Инфрачервен термометър, използващ Arduino: Здравейте, момчета, в тази инструкция ще направим безконтактен термометър, използващ arduino. Тъй като понякога температурата на течността/твърдото вещество е твърде висока или твърде ниска, а след това е трудно да се установи контакт с нея и да се прочете температура тогава в този пейзаж
Tfcd 3D проследяване на движението чрез капацитивно разпознаване и LED изход: 6 стъпки (със снимки)
![Tfcd 3D проследяване на движението чрез капацитивно разпознаване и LED изход: 6 стъпки (със снимки) Tfcd 3D проследяване на движението чрез капацитивно разпознаване и LED изход: 6 стъпки (със снимки)](https://i.howwhatproduce.com/images/004/image-9310-22-j.webp)
Tfcd 3D проследяване на движението чрез капацитивно измерване и LED изход: В тази инструкция е обяснено как движението на ръката може да бъде проследено в 3D пространство, като се използва принципа на капацитивно усещане. Чрез промяна на разстоянието между заредено фолио от алуминий и ръката ви, капацитетът на кондензатора ще варира