Სარჩევი:

თვალის მოძრაობის თვალყურის დევნება ინფრაწითელი სენსორის გამოყენებით: 5 ნაბიჯი
თვალის მოძრაობის თვალყურის დევნება ინფრაწითელი სენსორის გამოყენებით: 5 ნაბიჯი

ვიდეო: თვალის მოძრაობის თვალყურის დევნება ინფრაწითელი სენსორის გამოყენებით: 5 ნაბიჯი

ვიდეო: თვალის მოძრაობის თვალყურის დევნება ინფრაწითელი სენსორის გამოყენებით: 5 ნაბიჯი
ვიდეო: ყველაზე პატარა კამერა, რომელიც არ გინახავთ ასეთი!!! 2024, ივლისი
Anonim
თვალის მოძრაობის თვალყურის დევნება ინფრაწითელი სენსორის გამოყენებით
თვალის მოძრაობის თვალყურის დევნება ინფრაწითელი სენსორის გამოყენებით

მე გამოვიყენე ინფრაწითელი სენსორი თვალის მოძრაობების შესასწავლად და LED- ის გასაკონტროლებლად.

მე გავაკეთე თვალის კაკლები LED ლენტით NeoPixel.

ნაბიჯი 1: კონსტიტუცია

კონსტიტუცია
კონსტიტუცია

მე გამოვიყენე ორი სენსორი QTR - 1A თვალის თვალთვალისთვის. არდუინოსთან შეგრძნება და LED- ის კონტროლი.

კომპონენტები

  • SparkFun Arduino Pro Mini 328 - 5V/16MHz
  • Adafruit LiIon/LiPoly Backpack Add-On Pro Trinket/ItsyBitsy
  • LiPo ბატარეა
  • ნეოპიქსელის ზოლები
  • QTR-1A ამრეკლავი სენსორი

ნაბიჯი 2: NeoPixel LED თვალის ბურთი

NeoPixel LED თვალის ბურთი
NeoPixel LED თვალის ბურთი
NeoPixel LED თვალის ბურთი
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; ბაიტი eyeColor; int LR = 7; ლოგიკური სახურავი = ყალბი; 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, 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, 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}, {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}};

// მოსწავლე L&R ანიმაცია მოსწავლე [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, 68}, {22, 45, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}};

// დახუჭე ანიმაცია ქუთუთოს = 0; int eyelidNum [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 ((ხელმოუწერელი char ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); ხელმოუწერელი int sensorValues [NUM_SENSORS];

ბათილად მოციმციმე (int ქუთუთო, int LR) {თუ (ქუთუთო! = 8) {// Pewter for (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66, 66, 66)); }

// შავი თვალი for (uint16_t i = 0; i led.setPixelColor (შავიLED [LR] , ფერი);}

// მოსწავლე for (uint16_t i = 0; i

led.setPixelColor (მოსწავლე LED [LR] , led. Color (0, 0, 66)); }

// ქუთუთო (int i = 0; i <eyelidNum [ქუთუთო]; i ++) {led.setPixelColor (ქუთუთოებისLED , 0); }} else if (ქუთუთო == 8) {led.clear (); } led.show ();}

void setup () {

Serial.begin (115200); led.bigin (); led.setBrightness (სიკაშკაშე); // საწყისი სიკაშკაშე 40 led.show (); // ყველა პიქსელის ინიციალიზაცია "off" ფერი = led. Color (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 = (ორმაგი) sensorValL / iniSensorValL;

ორმაგი rasioR = (ორმაგი) sensorValR / iniSensorValR;

Serial.print (rasioL);

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

if (rasioL> 0.985 && rasioR <0.985) {// უფლება (int i = LR; i <12; i ++) {დახუჭვა (0, i); დაგვიანება (40); LR = i; }} სხვაგან თუ (rasioL 0.985) {// დარჩა (int i = LR; i> 2; i-) {დახუჭე (0, i); დაგვიანება (40); LR = i; }} სხვა შემთხვევაში > 0; i-) {მოციმციმე (i, LR); დაგვიანება (40); სახურავი = ყალბი; }} სხვა შემთხვევაში (lid == false && rasioL> 0.96 && rasioR> 0.96) {// ნორმალური // cnt ++; // ქუთუთო = 0; თუ (LR <= 7) {for (int i = LR; i <= 7; i ++) {დახუჭე (0, i); დაგვიანება (40); LR = i; }} სხვა {for (int i = LR; i> = 7; i-) {დახუჭე (0, i); დაგვიანება (40); LR = i; }}}

// საწყისი მნიშვნელობის განახლება if (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}

ნაბიჯი 5: ოპერაცია

გამოავლინეთ მარცხენა და მარჯვენა მოძრაობა და დახუჭეთ მოსწავლე სენსორით და აკონტროლეთ თვალის კაკლის LED.

გირჩევთ: