সুচিপত্র:

ইনফ্রারেড সেন্সর ব্যবহার করে আই মোশন ট্র্যাকিং: ৫ টি ধাপ
ইনফ্রারেড সেন্সর ব্যবহার করে আই মোশন ট্র্যাকিং: ৫ টি ধাপ

ভিডিও: ইনফ্রারেড সেন্সর ব্যবহার করে আই মোশন ট্র্যাকিং: ৫ টি ধাপ

ভিডিও: ইনফ্রারেড সেন্সর ব্যবহার করে আই মোশন ট্র্যাকিং: ৫ টি ধাপ
ভিডিও: মাথা নষ্ট ৫ স্মার্ট গ্যাজেটস যা দেখলেই কিনতে চাইবেন । Crazy Gadgets That Are at Another Level 2024, নভেম্বর
Anonim
ইনফ্রারেড সেন্সর ব্যবহার করে আই মোশন ট্র্যাকিং
ইনফ্রারেড সেন্সর ব্যবহার করে আই মোশন ট্র্যাকিং

আমি চোখের গতিবিধি বুঝতে এবং LED নিয়ন্ত্রণ করতে একটি ইনফ্রারেড সেন্সর ব্যবহার করেছি।

আমি LED টেপ NeoPixel দিয়ে চোখের পাতা তৈরি করেছি।

ধাপ 1: সংবিধান

সংবিধান
সংবিধান

আমি চোখ সন্ধানের জন্য দুটি সেন্সর QTR - 1A ব্যবহার করেছি। Arduino এর সাথে সেন্সিং এবং LED নিয়ন্ত্রণ করা।

উপাদান

  • SparkFun Arduino Pro Mini 328 - 5V/16MHz
  • Adafruit LiIon/LiPoly Backpack Add-on for Pro Trinket/ItsyBitsy
  • LiPo ব্যাটারি
  • নিওপিক্সেল স্ট্রিপ
  • QTR-1A প্রতিফলন সেন্সর

ধাপ 2: NeoPixel LED Eye Ball

NeoPixel LED Eye Ball
NeoPixel LED Eye Ball
NeoPixel LED Eye Ball
NeoPixel LED Eye Ball

NeoPixel LED টেপ ব্যবহার করা হয়। LED 68 ইউনিট।

LED ডবল পার্শ্বযুক্ত টেপ এবং তারের সঙ্গে বাটি সংশোধন করা হয়।

ধাপ 3: সেন্সর ইউনিট

সেন্সর ইউনিট
সেন্সর ইউনিট
সেন্সর ইউনিট
সেন্সর ইউনিট
সেন্সর ইউনিট
সেন্সর ইউনিট

আমি চোখ সন্ধানের জন্য দুটি সেন্সর 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; #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; বুলিয়ান idাকনা = মিথ্যা; 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, {12, 13, 31, 36, 54, 55, 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, {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, 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}, {4, 5, 18, 19, 26, 41, 48, 49, 62, 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}, {20, 21, 24, 43, 46, 47, 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}};

// ছাত্র L&R অ্যানিমেশন ছাত্র ছাত্রী [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, 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 }, {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 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 sensorValues [NUM_SENSORS];

অকার্যকর পলক (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)); }

// কালো চোখের জন্য (uint16_t i = 0; i led.setPixelColor (blackLED [LR] , color);}

// ছাত্রের জন্য (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 (); led.setBrightness (উজ্জ্বলতা); // প্রাথমিক উজ্জ্বলতা 40 led.show (); // সব পিক্সেলকে 'অফ' কালার = নেতৃত্বে শুরু করুন। রঙ (0, 177, 55); // ছাত্র রঙ বিলম্ব (100); qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; পলক (চোখের পাতা, এলআর); }

অকার্যকর লুপ () {// QTR - 1A সেন্সর মান qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];

ডাবল রাসিওএল = (ডবল) সেন্সরভ্যাল / ইনসেন্সরভাল;

ডাবল রাসিওআর = (ডবল) সেন্সরভ্যালআর / ইনসেন্সরভালআর;

সিরিয়াল.প্রিন্ট (রাসিওএল);

সিরিয়াল.প্রিন্ট (""); Serial.println (rasioR);

যদি (rasioL> 0.985 && rasioR <0.985) {// right for (int i = LR; i <12; i ++) {blink (0, i); বিলম্ব (40); এলআর = আমি; }} অন্যথায় যদি (rasioL 0.985) {// বাকি থাকে (int i = LR; i> 2; i-) {blink (0, i); বিলম্ব (40); এলআর = আমি; }} অন্যথায় যদি (lid == false && rasioL <0.96 && rasioR <0.96) {// blinking close for (int i = 1; i 0.96 && rasioR> 0.96) {// ঝলকানি খোলা (int i = 8; i > 0; i-) {blink (i, LR); বিলম্ব (40); lাকনা = মিথ্যা; }} অন্যথায় যদি (lid == false && rasioL> 0.96 && rasioR> 0.96) {// স্বাভাবিক // cnt ++; // চোখের পাতা = 0; যদি (LR <= 7) {for (int i = LR; i <= 7; i ++) {blink (0, i); বিলম্ব (40); এলআর = আমি; }} অন্য {জন্য (int i = LR; i> = 7; i-) {blink (0, i); বিলম্ব (40); এলআর = আমি; }}}

// প্রাথমিক মান রিফ্রেশ করুন যদি (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}

ধাপ 5: অপারেশন

সেন্সর দিয়ে শিক্ষার্থীর বাম এবং ডান গতি এবং চোখের পলক সনাক্ত করুন এবং চোখের বল LED নিয়ন্ত্রণ করুন।

প্রস্তাবিত: