Სარჩევი:
- ნაბიჯი 1: კონსტიტუცია
- ნაბიჯი 2: NeoPixel LED თვალის ბურთი
- ნაბიჯი 3: სენსორული განყოფილება
- ნაბიჯი 4: Arduino კოდი
- ნაბიჯი 5: ოპერაცია
ვიდეო: თვალის მოძრაობის თვალყურის დევნება ინფრაწითელი სენსორის გამოყენებით: 5 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
მე გამოვიყენე ინფრაწითელი სენსორი თვალის მოძრაობების შესასწავლად და 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 ფირზე გამოიყენება. 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.
გირჩევთ:
მოძრაობის თვალყურის დევნება MPU-6000 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
მოძრაობის თვალყურის დევნება MPU-6000 და ნაწილაკების ფოტონის გამოყენებით: MPU-6000 არის 6 ღერძიანი მოძრაობის თვალთვალის სენსორი, რომელსაც აქვს 3 ღერძიანი ამაჩქარებელი და 3 ღერძიანი გიროსკოპი. ამ სენსორს შეუძლია ეფექტურად აკონტროლოს ობიექტის ზუსტი მდებარეობა და მდებარეობა სამგანზომილებიან სიბრტყეში. მისი დასაქმება შესაძლებელია
ადამიანის თვალის მოძრაობის თვალყურის დევნება: 6 ნაბიჯი
ადამიანის თვალის მოძრაობის თვალყურის დევნება: ეს პროექტი მიზნად ისახავს ადამიანის თვალის მოძრაობის დაფიქსირებას და აჩვენებს მის მოძრაობას თვალის ფორმაში მოთავსებული LED ნათურების ნაკრებზე. ამ ტიპის პროექტს პოტენციურად ბევრი გამოყენება ექნება რობოტიკის სფეროში და კონკრეტულად ჰუმას
მოძრაობის თვალყურის დევნება MPU-6000 და Arduino Nano გამოყენებით: 4 ნაბიჯი
მოძრაობის თვალყურის დევნება MPU-6000 და Arduino Nano: MPU-6000 არის 6 ღერძიანი მოძრაობის თვალთვალის სენსორი, რომელსაც აქვს 3 ღერძიანი ამაჩქარებელი და 3 ღერძიანი გიროსკოპი. ამ სენსორს შეუძლია ეფექტურად აკონტროლოს ობიექტის ზუსტი მდებარეობა და მდებარეობა სამგანზომილებიან სიბრტყეში. მისი დასაქმება შესაძლებელია
მოძრაობის თვალყურის დევნება MPU-6000 და Raspberry Pi გამოყენებით: 4 ნაბიჯი
მოძრაობის თვალყურის დევნება MPU-6000 და Raspberry Pi: MPU-6000 არის 6 ღერძიანი მოძრაობის თვალთვალის სენსორი, რომელსაც აქვს 3 ღერძიანი ამაჩქარებელი და 3 ღერძიანი გიროსკოპი. ამ სენსორს შეუძლია ეფექტურად აკონტროლოს ობიექტის ზუსტი მდებარეობა და მდებარეობა სამგანზომილებიან სიბრტყეში. მისი დასაქმება შესაძლებელია
QeMotion - მოძრაობის თვალყურის დევნება ყველა ყურსასმენისთვის!: 5 ნაბიჯი (სურათებით)
QeMotion - მოძრაობის თვალყურის დევნება ყველა ყურსასმენისთვის!: მიმოხილვა: ეს მოწყობილობა საშუალებას გაძლევთ გამოიყენოთ თქვენი თავის მოძრაობა მოვლენების გასააქტიურებლად ძირითადად ნებისმიერ ვიდეო თამაშში. ის მუშაობს თქვენი თავის მოძრაობის თვალყურის დევნებით (ან ყურსასმენი ამის გათვალისწინებით) და კლავიატურის დაჭერით გარკვეული მოძრაობებისთვის. ასე რომ, თქვენი კომპ