विषयसूची:

इन्फ्रारेड सेंसर का उपयोग करके आई मोशन ट्रैकिंग: 5 कदम
इन्फ्रारेड सेंसर का उपयोग करके आई मोशन ट्रैकिंग: 5 कदम

वीडियो: इन्फ्रारेड सेंसर का उपयोग करके आई मोशन ट्रैकिंग: 5 कदम

वीडियो: इन्फ्रारेड सेंसर का उपयोग करके आई मोशन ट्रैकिंग: 5 कदम
वीडियो: top 4 electronic projects with ir sensor | diy ir sensor project 2024, जुलाई
Anonim
इन्फ्रारेड सेंसर का उपयोग करके आई मोशन ट्रैकिंग
इन्फ्रारेड सेंसर का उपयोग करके आई मोशन ट्रैकिंग

मैंने आंखों की गतिविधियों को समझने और एलईडी को नियंत्रित करने के लिए एक इन्फ्रारेड सेंसर का इस्तेमाल किया।

मैंने एलईडी टेप नियोपिक्सल के साथ नेत्रगोलक बनाया।

चरण 1: संविधान

संविधान
संविधान

मैंने आंखों पर नज़र रखने के लिए दो सेंसर QTR - 1A का इस्तेमाल किया। Arduino के साथ सेंसिंग और LED को नियंत्रित करना।

अवयव

  • SparkFun Arduino Pro Mini 328 - 5V/16MHz
  • Adafruit LiIon/LiPoly Backpack Add-On for Pro Trinket/ItsyBitsy
  • लीपो बैटरी
  • नियोपिक्सल पट्टी
  • QTR-1A परावर्तन सेंसर

चरण 2: NeoPixel LED आई बॉल

NeoPixel LED आई बॉल
NeoPixel LED आई बॉल
NeoPixel LED आई बॉल
NeoPixel LED आई बॉल

NeoPixel LED टेप का उपयोग किया जाता है। एलईडी 68 यूनिट है।

एलईडी को दो तरफा टेप और वायर्ड के साथ कटोरे में तय किया गया है।

चरण 3: सेंसर यूनिट

सेंसर यूनिट
सेंसर यूनिट
सेंसर यूनिट
सेंसर यूनिट
सेंसर यूनिट
सेंसर यूनिट

मैंने आंखों पर नज़र रखने के लिए दो सेंसर QTR - 1A का इस्तेमाल किया। QTR-1A को एक प्लास्टिक शीट पर आंख की चौड़ाई के बारे में दूरी पर रखा जाता है।

सेंसर भाग और माइक्रोकंट्रोलर भाग क्रमशः एक क्लिप के साथ चश्मे के लिए तय किए गए थे।

चरण 4: Arduino कोड

जब परितारिका एक सेंसर के पास जाती है, तो परावर्तित प्रकाश कम हो जाता है और सेंसर का मान बढ़ जाता है। इसके विपरीत, जब परितारिका दूर जाती है, तो परावर्तित प्रकाश बढ़ता है और फोटो परावर्तक का सेंसर मूल्य कम हो जाता है।

एलईडी नेत्रगोलक की पुतली के दाएं और बाएं आंदोलन को एक सेंसर मान की वृद्धि और कमी को महसूस करता है और इसे नियंत्रित करता है। ब्लिंक करते समय, दोनों सेंसर मान कम हो जाते हैं, इसलिए यदि दो सेंसर मान एक साथ घटते हैं, तो एलईडी नेत्रगोलक की पलकें नीचे चली जाएंगी।

मैंने निम्नलिखित पुस्तकालय का उपयोग किया।

  • क्यूटीआर सेंसर:
  • Adafruit_NeoPixel:

#शामिल करें #शामिल करें

#परिभाषित करें NUM_SENSORS 2 // उपयोग किए गए सेंसर की संख्या# NUM_SAMPLES_PER_SENSOR 10 परिभाषित करें // औसत # परिभाषित करें EMITTER_PIN QTR_NO_EMITTER_PIN

int iniSensorValL, sensorValL;int iniSensorValR, sensorValR; #परिभाषित पिन A3 Adafruit_NeoPixel एलईडी = Adafruit_NeoPixel (68, पिन, NEO_GRB + NEO_KHZ800); इंट ब्लैकनम = 24; इंट प्यूपिलनम = 12; uint32_t रंग; इंट ब्राइटनेस = ४०; बाइट आंखों का रंग; इंट एलआर = 7; बूलियन ढक्कन = झूठा; इंट सीएनटी = 0;

// ब्लैक आई एल एंड आर एनिमेशनइंट ब्लैकएलईडी[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, 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, ६८, ६८}};

// छात्र एल एंड आर एनिमेशनइंट प्यूपिलएलईडी[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, ६८}};

// ब्लिंक एनिमेशनइंट पलक = 0; int पलक संख्या [8] = {0, 4, 8, 16, 24, 34, 44, 56}; int पलक एलईडी [56] = {६४, ६५, ६६, ६७, ५८, ५९, ६०, ६१, ५६, ५७, ६२, ६३, ४९, ५०, ५१, ५२, ४७, ४८, ५३, ५४, ३८, ३९, 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}; QTRSensorsएनालॉग qtra((unsigned char) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); अहस्ताक्षरित int sensorValues[NUM_SENSORS];

शून्य पलक (इंट पलक, इंट एलआर) { अगर (पलक! = 8) {// के लिए प्यूटर (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, एलईडी। रंग (66), 66, 66)); }

// काली आँख के लिए (uint16_t i = 0; मैंने नेतृत्व किया। सेट पिक्सेलकलर (ब्लैकएलईडी [एलआर] , रंग); }

// छात्र के लिए (uint16_t i=0; i

LED.setPixelColor(pupilLED[LR], LED. Color(0, 0, 66)); }

// पलक के लिए (int i = 0; i <पलकनम [पलक]; i ++) {led.setPixelColor (पलक एलईडी , 0); }} और अगर (पलक == 8){led.clear(); } नेतृत्व.शो ();}

व्यर्थ व्यवस्था() {

सीरियल.बेगिन (115200); नेतृत्व शुरू (); एलईडी.सेटब्राइटनेस (चमक); // प्रारंभिक चमक 40 का नेतृत्व किया। शो (); // सभी पिक्सल को 'ऑफ' कलर से इनिशियलाइज़ करें = लेड। कलर (0, 177, 55); // पुतली रंग देरी (100); qtra.read (सेंसरवैल्यू); iniSensorValL = sensorValues[0]; iniSensorValR = sensorValues[1]; पलक (पलक, LR); }

शून्य लूप () {//QTR - 1A सेंसर मूल्य qtra.read(sensorValues); सेंसरवैल = सेंसरवैल्यू [0]; सेंसरवैलआर = सेंसरवैल्यू [1];

डबल rasioL = (डबल)सेंसरवैल / iniSensorValL;

डबल अनुपात = (डबल) सेंसरवैलआर / आईएनआईसेंसरवैलआर;

सीरियल.प्रिंट (rasioL);

सीरियल.प्रिंट (""); Serial.println(rasioR);

if(rasioL> 0.985 && rasioR < 0.985){//right for(int i = LR; i <12; i++){ blink(0, i); देरी (40); एलआर = मैं; } }else if(rasioL 0.985){ // left for(int i=LR; i>2; i--){ blink(0, i); देरी (40); एलआर = मैं; } }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; अगर (एलआर <= 7) {के लिए (इंट आई = एलआर; आई <= 7; आई ++) {ब्लिंक (0, आई); देरी (40); एलआर = मैं; } }else { के लिए (int i=LR; i>=7; i--){ ब्लिंक(0, i); देरी (40); एलआर = मैं; } } }

// प्रारंभिक मान ताज़ा करें यदि (cnt> 10) { iniSensorValL = sensorValL; iniSensorValR = sensorValR; सीएनटी = 0; } }

चरण 5: ऑपरेशन

बाएं और दाएं आंदोलन का पता लगाएं और सेंसर के साथ पुतली की पलक झपकाएं, और नेत्रगोलक एलईडी को नियंत्रित करें।

सिफारिश की: