Talaan ng mga Nilalaman:
- Hakbang 1: Saligang Batas
- Hakbang 2: NeoPixel LED Eye Ball
- Hakbang 3: Sensor Unit
- Hakbang 4: Arduino Code
- Hakbang 5: Pagpapatakbo
Video: Pagsubaybay sa Mata na Paggalaw Gamit ang Infrared Sensor: 5 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Gumamit ako ng isang infrared sensor upang maunawaan ang mga paggalaw ng mata at makontrol ang LED.
Gumawa ako ng mga eyeballs sa LED Tape NeoPixel.
Hakbang 1: Saligang Batas
Gumamit ako ng dalawang sensor QTR - 1A para sa pagsubaybay sa mata. Sensing sa Arduino at pagkontrol sa LED.
mga sangkap
- SparkFun Arduino Pro Mini 328 - 5V / 16MHz
- Adafruit LiIon / LiPoly Backpack Add-On para sa Pro Trinket / ItsyBitsy
- Baterya ng LiPo
- NeoPixel strip
- QTR-1A Sensor ng Reflectance
Hakbang 2: NeoPixel LED Eye Ball
NeoPixel LED tape ang ginamit. Ang LED ay 68 na yunit.
Ang LED ay naayos sa mangkok na may dobleng panig na tape at wired.
Hakbang 3: Sensor Unit
Gumamit ako ng dalawang sensor QTR - 1A para sa pagsubaybay sa mata. QTR - 1A ay inilalagay sa isang plastic sheet na may distansya na halos lapad ng mata.
Ang bahagi ng sensor at bahagi ng microcontroller ay naayos sa mga salamin sa mata na may isang clip ayon sa pagkakabanggit.
Hakbang 4: Arduino Code
Kapag lumapit ang iris sa isang sensor, ang nababanaag na ilaw ay nababawasan at tumataas ang halaga ng sensor. Sa kabaligtaran, kapag gumalaw ang iris, tataas ang masasalamin na ilaw at bumababa ang halaga ng sensor ng salamin ng larawan.
Ang kanan at kaliwang paggalaw ng mag-aaral ng LED eyeball ay nararamdaman ang pagtaas at pagbawas ng isang halaga ng sensor at kinokontrol ito. Kapag kumukurap, ang parehong mga halaga ng sensor ay bumababa, kaya kung ang dalawang halaga ng sensor ay sabay na bumababa, ang mga eyelid ng LED eyeball ay bababa.
Ginamit ko ang sumusunod na silid-aklatan.
- QTRsensors:
- Adafruit_NeoPixel:
# isama ang # isama
# tukuyin ang NUM_SENSORS 2 // bilang ng mga sensor na ginamit # tukuyin ang NUM_SAMPLES_PER_SENSOR 10 // sa average na # tukuyin ang 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 kulay; int ningning = 40; byte eyeColor; int LR = 7; takip ng boolean = false; int cnt = 0;
// Black eye L&R animationint 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}};
// pupil L&R animationint pupilLED [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 eyelid = 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 ((unsigned char ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues [NUM_SENSORS];
void blink (int eyelid, int LR) {if (eyelid! = 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);}
// pupil for (uint16_t i = 0; i
led.setPixelColor (pupilLED [LR] , led. Color (0, 0, 66)); }
// eyelid for (int i = 0; i <eyelidNum [eyelid]; i ++) {led.setPixelColor (eyelidLED , 0); }} iba pa kung (eyelid == 8) {led.clear (); } led.show ();}
walang bisa ang pag-setup () {
Serial.begin (115200); pinangunahan.begin (); humantong.setBightness (ningning); // Initial Brightness 40 led.show (); // Initialize all pixel to 'off' color = led. Color (0, 177, 55); // pagkaantala ng kulay ng mag-aaral (100); qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; kumurap (eyelid, LR); }
void loop () {// QTR - 1A sensor halaga qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];
doble rasioL = (doble) sensorValL / iniSensorValL;
doble rasioR = (doble) sensorValR / iniSensorValR;
Serial.print (rasioL);
Serial.print (""); Serial.println (rasioR);
kung (rasioL> 0.985 && rasioR <0.985) {// tama para sa (int i = LR; i <12; i ++) {blink (0, i); pagkaantala (40); LR = i; }} iba pa kung (rasioL 0.985) {// umalis para sa (int i = LR; i> 2; i -) {blink (0, i); pagkaantala (40); LR = i; }} iba pa kung (takip == false && rasioL <0.96 && rasioR <0.96) {// Blinking close for (int i = 1; i 0.96 && rasioR> 0.96) {// Blinking open for (int i = 8; i > 0; i -) {blink (i, LR); pagkaantala (40); takip = maling; }} iba pa kung (takip == maling && rasioL> 0.96 && rasioR> 0.96) {// normal // cnt ++; // eyelid = 0; kung (LR <= 7) {para sa (int i = LR; i <= 7; i ++) {blink (0, i); pagkaantala (40); LR = i; }} iba pa {para sa (int i = LR; i> = 7; i -) {blink (0, i); pagkaantala (40); LR = i; }}}
// Initial value refresh if (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
Hakbang 5: Pagpapatakbo
Makitang kaliwa at kanang kilusan at blink ng mag-aaral gamit ang sensor, at kontrolin ang eyeball LED.
Inirerekumendang:
Pagsubaybay sa Paggalaw Gamit ang MPU-6000 at Photicle ng Particle: 4 na Hakbang
Pagsubaybay sa Paggalaw Gamit ang MPU-6000 at Particle Photon: Ang MPU-6000 ay isang 6-Axis Motion Tracking Sensor na mayroong 3-Axis accelerometer at 3-Axis gyroscope na naka-embed dito. Ang sensor na ito ay may kakayahang mahusay na pagsubaybay ng eksaktong posisyon at lokasyon ng isang bagay sa 3-dimensional na eroplano. Maaari itong magamit sa
Pagsubaybay sa Paggalaw ng Mata sa Mata: 6 na Hakbang
Pagsubaybay sa Human Eye Motion: Nilalayon ng proyektong ito na makuha ang galaw ng mata ng tao, at ipinapakita ang paggalaw nito sa isang hanay ng mga ilaw na LED na inilalagay sa hugis ng isang mata. Ang ganitong uri ng proyekto ay maaaring may potensyal na paggamit sa larangan ng robotics at partikular na huma
Pagsubaybay sa Paggalaw Gamit ang MPU-6000 at Arduino Nano: 4 na Hakbang
Pagsubaybay sa Paggalaw Gamit ang MPU-6000 at Arduino Nano: Ang MPU-6000 ay isang 6-Axis Motion Tracking Sensor na mayroong 3-Axis accelerometer at 3-Axis gyroscope na naka-embed dito. Ang sensor na ito ay may kakayahang mahusay na pagsubaybay ng eksaktong posisyon at lokasyon ng isang bagay sa 3-dimensional na eroplano. Maaari itong magamit sa
Pagsubaybay sa Paggalaw Gamit ang MPU-6000 at Raspberry Pi: 4 na Hakbang
Pagsubaybay sa Paggalaw Gamit ang MPU-6000 at Raspberry Pi: Ang MPU-6000 ay isang 6-Axis Motion Tracking Sensor na mayroong 3-Axis accelerometer at 3-Axis gyroscope na naka-embed dito. Ang sensor na ito ay may kakayahang mahusay na pagsubaybay ng eksaktong posisyon at lokasyon ng isang bagay sa 3-dimensional na eroplano. Maaari itong magamit sa
Bawasan ang Paggalaw ng Paggalaw Gamit ang GIMP: 6 na Hakbang
Bawasan ang Motion Blur Gamit ang GIMP: Ang Instructable na ito ay tumutulong sa iyo na mabawasan ang mga epekto ng malambot na kilos ng paggalaw na nakuha mo dahil sa pag-iling ng camera. Ito ay isang pang-eksperimentong pamamaraan na binuo ko, kaya't mangyaring subukan at mag-iwan ng mga komento, mas mabuti sa mga imahe. Tulad ng maliwanag mula sa kalidad ng ph