Orodha ya maudhui:

Ufuatiliaji wa Mwendo wa Jicho Kutumia Sensor ya infrared: Hatua 5
Ufuatiliaji wa Mwendo wa Jicho Kutumia Sensor ya infrared: Hatua 5

Video: Ufuatiliaji wa Mwendo wa Jicho Kutumia Sensor ya infrared: Hatua 5

Video: Ufuatiliaji wa Mwendo wa Jicho Kutumia Sensor ya infrared: Hatua 5
Video: Я ОДЕРЖИМЫЙ ДЕМОНАМИ 2024, Julai
Anonim
Ufuatiliaji wa Mwendo wa Jicho Kutumia Sensor ya infrared
Ufuatiliaji wa Mwendo wa Jicho Kutumia Sensor ya infrared

Nilitumia sensa ya infrared kuhisi harakati za macho na kudhibiti LED.

Nilitengeneza mboni za macho na NeoPixel ya LED.

Hatua ya 1: Katiba

Katiba
Katiba

Nilitumia sensorer mbili QTR - 1A kwa ufuatiliaji wa macho. Kuhisi na Arduino na kudhibiti LED.

vifaa

  • SparkFun Arduino Pro Mini 328 - 5V / 16MHz
  • Adafruit LiIon / LiPoly mkoba wa Kuongeza kwa Pro Trinket / ItsyBitsy
  • Betri ya LiPo
  • Ukanda wa NeoPixel
  • Sura ya Tafakari ya QTR-1A

Hatua ya 2: Mpira wa Macho wa NeoPixel LED

Mpira wa Macho wa NeoPixel LED
Mpira wa Macho wa NeoPixel LED
Mpira wa Macho wa NeoPixel LED
Mpira wa Macho wa NeoPixel LED

Tepe ya NeoPixel LED hutumiwa. LED ni 68 kitengo.

LED imewekwa kwenye bakuli na mkanda wa pande mbili na waya.

Hatua ya 3: Kitengo cha Sensorer

Kitengo cha Sensorer
Kitengo cha Sensorer
Kitengo cha Sensorer
Kitengo cha Sensorer
Kitengo cha Sensorer
Kitengo cha Sensorer

Nilitumia sensorer mbili QTR - 1A kwa ufuatiliaji wa macho. QTR - 1A imewekwa kwenye karatasi ya plastiki kwa umbali wa karibu upana wa jicho.

Sehemu ya sensorer na sehemu ya microcontroller ziliwekwa kwenye glasi za macho na kipande cha picha mtawaliwa.

Hatua ya 4: Msimbo wa Arduino

Wakati iris inakaribia sensorer moja, taa inayoonekana hupungua na thamani ya sensorer huongezeka. Kinyume chake, wakati iris inahama, taa inayoonekana huongezeka na thamani ya sensorer ya picha ya picha hupungua.

Mwendo wa kulia na kushoto wa mwanafunzi wa mboni ya jicho la LED huhisi kuongezeka na kupungua kwa thamani moja ya sensa na kuidhibiti. Wakati wa kupepesa, maadili yote ya sensa hupungua, kwa hivyo ikiwa maadili ya sensa mbili hupungua wakati huo huo, kope la mboni ya jicho la LED litashuka.

Nilitumia maktaba ifuatayo.

  • QTRsensors:
  • Adafruit_NeoPixel:

#jumuisha #jumuisha

#fafanua NUM_SENSORS 2 // idadi ya sensorer zilizotumiwa # fafanua NUM_SAMPLES_PER_SENSOR 10 // wastani wa # fafanua EMITTER_PIN QTR_NO_EMITTER_PIN

int iniSensorValL, sensorValL; int iniSensorValR, sensorValR; #fafanua PIN A3 Adafruit_NeoPixel led = Adafruit_NeoPixel (68, PIN, NEO_GRB + NEO_KHZ800); int nyeusiNum = 24; int mwanafunziNum = 12; rangi ya uint32_t; mwangaza int = 40; rangi ya macho; int LR = 7; kifuniko cha boolean = uwongo; int cnt = 0;

// Uhuishaji wa macho ya L & R nyeusi uliwashwa BlackLED [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}, {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}, {10, 11, 14, 15, 29, 38, 52, 53, 56, 57, 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, 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, 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}, {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}};

// mwanafunzi wa uhuishaji wa L&R mwanafunzi [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}, {22, 45, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}};

// Blink uhuishaji wa kope = 0; int eyelidNum [8] = {0, 4, 8, 16, 24, 34, 44, 56}; macho ya macho [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 ((unsigned char ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); sensa ya int iliyosainiwa [Maadili [NUM_SENSORS];

blink batili (int eyelid, int LR) {if (eyelid! = 8) {// Pewter ya (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66), 66, 66)); }

// Jicho jeusi kwa (uint16_t i = 0; i led.setPixelColor (nyeusiLED [LR] , rangi);}

// mwanafunzi wa (uint16_t i = 0; i

led.setPixelColor (mwanafunziLED [LR] , aliongoza Rangi (0, 0, 66)); }

// kope la (int i = 0; i <eyelidNum [kope la macho]; i ++) {led.setPixelColor (eyelidLED , 0); }} mwingine ikiwa (kope == 8) {led.clear (); } kuongozwa. onyesha ();}

usanidi batili () {

Serial. Kuanza (115200); kuongozwa. kuanza (); kuongozwa. Washa (mwangaza); // Mwangaza wa awali 40 uliongozwa. Onyesha (); // Anzisha saizi zote ili "kuzima" rangi = iliyoongozwa. Rangi (0, 177, 55); // kuchelewa kwa rangi ya mwanafunzi (100); qtra.read (sensorValues); iniSensorValL = Thamani za sensa [0]; iniSensorValR = Thamani za sensa [1]; kupepesa (kope, LR); }

kitanzi batili () {// QTR - 1A thamani ya sensa qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];

rasioL mbili = (mara mbili) sensorValL / iniSensorValL;

rasioR mara mbili = (mara mbili) sensorValR / iniSensorValR;

Serial.print (rasioL);

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

ikiwa (rasioL> 0.985 && rasioR <0.985) {// haki ya (int i = LR; i <12; i ++) {blink (0, i); kuchelewesha (40); LR = i; }} mwingine ikiwa (rasioL 0.985) {// kushoto kwa (int i = LR; i> 2; i -) {blink (0, i); kuchelewesha (40); LR = i; }} mwingine ikiwa > 0; i -) {blink (i, LR); kuchelewesha (40); kifuniko = uwongo; }} mwingine ikiwa (lid == false && rasioL> 0.96 && rasioR> 0.96) {// normal // cnt ++; // kope = 0; ikiwa (LR <= 7) {for (int i = LR; i <= 7; i ++) {blink (0, i); kuchelewesha (40); LR = i; }} mwingine {for (int i = LR; i> = 7; i -) {blink (0, i); kuchelewesha (40); LR = i; }}}

// Thamani ya awali ya kuonyesha ikiwa (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}

Hatua ya 5: Operesheni

Gundua mwendo wa kushoto na kulia na kupepesa macho ya mwanafunzi na kitambuzi, na dhibiti mwangaza wa mboni ya jicho.

Ilipendekeza: