ዝርዝር ሁኔታ:

የኢንፍራሬድ ዳሳሽ በመጠቀም የዓይን እንቅስቃሴ መከታተያ -5 ደረጃዎች
የኢንፍራሬድ ዳሳሽ በመጠቀም የዓይን እንቅስቃሴ መከታተያ -5 ደረጃዎች

ቪዲዮ: የኢንፍራሬድ ዳሳሽ በመጠቀም የዓይን እንቅስቃሴ መከታተያ -5 ደረጃዎች

ቪዲዮ: የኢንፍራሬድ ዳሳሽ በመጠቀም የዓይን እንቅስቃሴ መከታተያ -5 ደረጃዎች
ቪዲዮ: ጥሩ ነገሮችን እንዴት መሳብ እንደሚቻል. ኦዲዮ መጽሐፍ 2024, ሀምሌ
Anonim
የኢንፍራሬድ ዳሳሽ በመጠቀም የዓይን እንቅስቃሴ መከታተያ
የኢንፍራሬድ ዳሳሽ በመጠቀም የዓይን እንቅስቃሴ መከታተያ

የዓይን እንቅስቃሴዎችን ለመገንዘብ እና ኤልኢዲውን ለመቆጣጠር የኢንፍራሬድ ዳሳሽ እጠቀም ነበር።

በ LED ቴፖ ኒዮፒክስል የዓይን ብሌቶችን ሠራሁ።

ደረጃ 1 ሕገ መንግሥት

ሕገ መንግሥት
ሕገ መንግሥት

ለዓይን መከታተያ ሁለት ዳሳሾችን QTR - 1A እጠቀም ነበር። ከአርዱዲኖ ጋር ማስተዋል እና ኤልኢዲውን መቆጣጠር።

ክፍሎች

  • SparkFun Arduino Pro Mini 328 - 5V/16MHz
  • Adafruit LiIon/LiPoly Backpack Add-on for Pro Trinket/ItsyBitsy
  • ሊፖ ባትሪ
  • ኒኦፒክስል ስትሪፕ
  • QTR-1A አንፀባራቂ ዳሳሽ

ደረጃ 2: NeoPixel LED Eye Ball

ኒኦፒክሰል ኤልኢዲ የዓይን ኳስ
ኒኦፒክሰል ኤልኢዲ የዓይን ኳስ
ኒኦፒክሰል ኤልኢዲ የዓይን ኳስ
ኒኦፒክሰል ኤልኢዲ የዓይን ኳስ

የ NeoPixel LED ቴፕ ጥቅም ላይ ይውላል። LED 68 አሃድ ነው።

ኤልኢዲ ባለ ሁለት ጎን ቴፕ እና በገመድ ወደ ሳህኑ ተስተካክሏል።

ደረጃ 3 የአነፍናፊ ክፍል

የዳሳሽ ክፍል
የዳሳሽ ክፍል
የዳሳሽ ክፍል
የዳሳሽ ክፍል
የዳሳሽ ክፍል
የዳሳሽ ክፍል

ለዓይን መከታተያ ሁለት ዳሳሾችን QTR - 1A እጠቀም ነበር። QTR - 1A ከዓይን ስፋት ገደማ ርቀት ላይ በፕላስቲክ ሰሌዳ ላይ ይደረጋል።

የአነፍናፊው ክፍል እና የማይክሮ መቆጣጠሪያ ክፍል በቅደም ተከተል ቅንጥብ ባለው የዓይን መነፅር ላይ ተስተካክለዋል።

ደረጃ 4: የአርዲኖ ኮድ

አይሪስ ወደ አንድ ዳሳሽ ሲቃረብ ፣ የሚንፀባረቀው ብርሃን እየቀነሰ እና የአነፍናፊው እሴት ይጨምራል። በተቃራኒው ፣ አይሪስ ሲንቀሳቀስ ፣ የሚንፀባረቀው ብርሃን ይጨምራል እና የፎቶ አንፀባራቂው ዳሳሽ እሴት ይቀንሳል።

የ 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; #መግለፅ ፒን A3 አዳፍ ፍሬ_ኔኦፒክስል መሪ = አዳፍ ፍሬ_ኔፔፒክስል (68 ፣ ፒን ፣ NEO_GRB + NEO_KHZ800) ፤ int blackNum = 24; int pupilNum = 12; uint32_t ቀለም; int ብሩህነት = 40; ባይት የዓይን ቀለም; int LR = 7; ቡሊያን ክዳን = ሐሰት; int cnt = 0;

// ጥቁር አይን ኤል እና አር አኒሜሽን ጥቁር 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 ፣ 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} ፣ {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 ፣ 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 ፣ 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 ፣ 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 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 ፣ 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 ፣ 68}};

// ተማሪ L&R animationint pupilLED [15] [12] = {{33 ፣ 34 ፣ 68 ፣ 68 ፣ 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 ፣ 68 ፣ 68} ፣ {22 ፣ 45 ፣ 68 ፣ 68 ፣ 68 ፣ 68 ፣ 68 ፣ 68 ፣ 68 ፣ 68 ፣ 68 ፣ 68 ፣ 68 ፣ 68}};

// ብልጭ ድርግም የሚል አኒሜሽን የዓይን ሽፋሽፍት = 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); ያልተፈረመ int int sensorValues [NUM_SENSORS];

ባዶ ብልጭ ድርግም (int eyelid, 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)); }

// የዐይን ሽፋን ለ (int i = 0; i <eyelidNum [eyelid]; i ++) {led.setPixelColor (eyelidLED , 0); }} ሌላ ከሆነ (የዐይን ሽፋን == 8) {led.clear () ፤ } led.show ();}

ባዶነት ማዋቀር () {

Serial.begin (115200); led.begin (); መርቷል ቅንብር ብሩህነት (ብሩህነት); // የመጀመሪያ ብሩህነት 40 led.show (); // ሁሉንም ፒክሰሎች ወደ ‹off› ቀለም = led. Color (0 ፣ 177 ፣ 55) ያስጀምሩ። // የተማሪ ቀለም መዘግየት (100); qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; ብልጭ ድርግም (የዐይን ሽፋን ፣ LR); }

ባዶነት loop () {// QTR - 1A ዳሳሽ እሴት qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];

ድርብ rasioL = (ድርብ) ዳሳሽValL / iniSensorValL;

ድርብ rasioR = (ድርብ) ዳሳሽValR / iniSensorValR;

Serial.print (rasioL);

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

ከሆነ (rasioL> 0.985 && rasioR <0.985) {// ትክክል ለ (int i = LR; i <12; i ++) {ብልጭ ድርግም (0, i); መዘግየት (40); LR = እኔ; }} ሌላ ከሆነ (rasioL 0.985) {// ለ (int i = LR; i> 2; i-) {ብልጭ ድርግም (0 ፣ i) ፤ መዘግየት (40); LR = እኔ; }} ሌላ ከሆነ (cover == 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); ክዳን = ሐሰት; }} ሌላ ከሆነ (cover == false && rasioL> 0.96 && rasioR> 0.96) {// normal // cnt ++; // የዐይን ሽፋን = 0; ከሆነ (LR <= 7) {ለ (int i = LR; i <= 7; i ++) {ብልጭ ድርግም (0, i); መዘግየት (40); LR = እኔ; }} ሌላ {ለ (int i = LR; i> = 7; i-) {ብልጭ ድርግም (0 ፣ i) ፤ መዘግየት (40); LR = እኔ; }}}

// የመጀመሪያ እሴት ያድሳል (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}

ደረጃ 5 - ክወና

የግራ እና የቀኝ እንቅስቃሴን እና የተማሪውን ከአነፍናፊ ጋር ብልጭ ድርግም ያድርጉ ፣ እና የዓይን ኳስ ኤልኢዲውን ይቆጣጠሩ።

የሚመከር: