Агуулгын хүснэгт:
- Алхам 1: Үндсэн хууль
- Алхам 2: NeoPixel LED нүдний бөмбөг
- Алхам 3: Мэдрэгч төхөөрөмж
- Алхам 4: Arduino код
- Алхам 5: Үйл ажиллагаа
Видео: Хэт улаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг хянах: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
Би хэт ягаан туяаны мэдрэгч ашиглан нүдний хөдөлгөөнийг мэдэрч, 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 соронзон хальсыг ашигладаг. 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 -ийг хянах.
Зөвлөмж болгож буй:
Хэт улаан туяаны шоо мэдрэгч: 5 алхам
Хэт улаан туяаны шоо мэдрэгч: Намайг Калвин гэдэг бөгөөд би хэт улаан туяаны шоо мэдрэгчийг хэрхэн яаж хийхийг танд зааж өгөх бөгөөд энэ нь хэрхэн ажилладаг талаар тайлбарлах болно. Би одоогоор Тейлорын их сургуулийн оюутан бөгөөд компьютерийн инженерчлэлийн чиглэлээр суралцаж байгаа бөгөөд манай багийнхан надад механизмыг зохион бүтээж өгөхийг хүссэн. дурын зүйлийг ангилж болно
Резинэн туузны машин, хэт улаан туяаны мэдрэгч, ТВ хамгаалагч робот: 5 алхам (зурагтай)
Резинэн туузаар ажилладаг машин, хэт ягаан туяаны мэдрэгч, ТВ -ийн хамгаалагч робот: Энэ хэлхээ холболтгүй тул робот нь ердийн телевизийн алсын удирдлагаас хэт улаан туяаны дохиог хүлээж, дараа нь резинэн туузыг хурдан асаадаг. Хэрэв та видеог үзээгүй бол татгалзах: Энэ төсөл нь
Adafruit SI1145 хэт ягаан туяа/харагдахуйц гэрэл/хэт улаан туяаны мэдрэгч - Arduino ба LCD: 4 алхам
Adafruit SI1145 хэт ягаан туяа/харагдахуйц гэрэл/хэт улаан туяаны мэдрэгч - Arduino ба LCD: Энэхүү төсөл нь хэт ягаан туяаны одоогийн хэмжээг тооцоолохын тулд Adafruit SI1145 хэт ягаан туяа/харагдахуйц гэрэл/хэт улаан туяаны мэдрэгчийг ашигладаг. Хэт ягаан туяа шууд мэдрэгддэггүй. Үүний оронд энэ нь харагдахуйц гэрэл ба хэт улаан туяаны заалтын функц гэж тооцогддог. Би үүнийг гадаа туршиж үзэхэд энэ нь
LM358: 5 алхамыг ашиглан хэт улаан туяаны ойролцоо мэдрэгч
LM358 ашиглан хэт улаан туяаны ойролцоо мэдрэгч: Энэ нь IR-ийн ойролцоо мэдрэгч хийх талаар зааварчилгаа юм
AMG8833 хэт улаан туяаны массив дүрслэх мэдрэгч ашиглан M5Stack IR дулааны камер: 3 алхам
AMG8833 хэт улаан туяаны зургийн мэдрэгч ашиглан M5Stack IR камер: Би бусадтай адил дулааны камертай байсан боловч өнөөг хүртэл миний үнийн хязгаараас гадуур байсаар ирсэн !! Hackaday вэбсайтыг үзэж байхдаа M5Stack ашиглан энэхүү камерын бүтцийг олж харсан. ESP32 модуль ба харьцангуй хямд