Мазмұны:

Инфрақызыл сенсор көмегімен көз қозғалысын бақылау: 5 қадам
Инфрақызыл сенсор көмегімен көз қозғалысын бақылау: 5 қадам

Бейне: Инфрақызыл сенсор көмегімен көз қозғалысын бақылау: 5 қадам

Бейне: Инфрақызыл сенсор көмегімен көз қозғалысын бақылау: 5 қадам
Бейне: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Маусым
Anonim
Инфрақызыл сенсор көмегімен көз қозғалысын бақылау
Инфрақызыл сенсор көмегімен көз қозғалысын бақылау

Мен инфрақызыл сенсорды көздің қозғалысын сезіну және жарықдиодты басқару үшін қолдандым.

Мен NeoPixel LED таспасымен көз алмасын жасадым.

1 -қадам: Конституция

Конституция
Конституция

Мен көзді бақылау үшін QTR - 1A екі сенсорды қолдандым. Arduino көмегімен сезу және жарықдиодты басқару.

компоненттер

  • SparkFun Arduino Pro Mini 328 - 5В/16МГц
  • Adafruit LiIon/LiPoly сөмкесі Pro Trinket/ItsyBitsy үшін қосымша
  • LiPo батареясы
  • NeoPixel жолағы
  • QTR-1A шағылысу датчигі

2 -қадам: NeoPixel LED көз шары

NeoPixel жарық диодты көз шары
NeoPixel жарық диодты көз шары
NeoPixel жарық диодты көз шары
NeoPixel жарық диодты көз шары

NeoPixel LED таспасы қолданылады. Жарық диоды - 68 бірлік.

Жарық диодты тостағанға екі жақты таспамен бекітілген және сыммен бекітілген.

3 -қадам: сенсорлық блок

Сенсорлық қондырғы
Сенсорлық қондырғы
Сенсорлық қондырғы
Сенсорлық қондырғы
Сенсорлық қондырғы
Сенсорлық қондырғы

Мен көзді бақылау үшін QTR - 1A екі сенсорды қолдандым. QTR - 1A пластикалық параққа көздің енінен шамамен қашықтықта орналастырылады.

Сенсор бөлігі мен микроконтроллер бөлігі көзілдірікке сәйкесінше қысқышпен бекітілген.

4 -қадам: Arduino коды

Ирис бір сенсорға жақындағанда, шағылған жарық азаяды және сенсордың мәні артады. Керісінше, ирис алыстаған кезде шағылысқан жарық жоғарылайды және фото рефлектордың сенсорлық мәні төмендейді.

Жарық диодты көз қарашығының оң және сол жақ қозғалысы сенсордың бір мәнінің өсуі мен төмендеуін сезінеді және оны басқарады. Жыпылықтаған кезде сенсордың екі мәні де төмендейді, сондықтан егер сенсордың екі мәні бір мезгілде төмендесе, жарық диодты көз алмасының қабақтары төмендейді.

Мен келесі кітапхананы қолдандым.

  • QTRsensors:
  • Adafruit_NeoPixel:

#қосу #қосу

#NUM_SENSORS 2 анықтаңыз // қолданылған датчиктер саны#NUM_SAMPLES_PER_SENSOR 10 анықтаңыз // орташа#EMITTER_PIN анықтау QTR_NO_EMITTER_PIN

int iniSensorValL, sensorValL; int iniSensorValR, sensorValR; #define PIN A3 Adafruit_NeoPixel led = Adafruit_NeoPixel (68, PIN, NEO_GRB + NEO_KHZ800); int blackNum = 24; int pupilNum = 12; uint32_t түсі; int жарықтығы = 40; байт көзColor; 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, 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, 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, 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, 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, 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}};

// оқушы 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}, {22, 45, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}};

// Blink анимациясы қабаққа = 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];

void blink (int eyelid, int LR) {if (қабақ! = 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] , түс);}

// оқушы (uint16_t i = 0; i

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

// қабақ (int i = 0; i <eyelidNum [қабақ]; i ++) {led.setPixelColor (қабақLED , 0); }} else if (қабақ == 8) {led.clear (); } led.show ();}

жарамсыз орнату () {

Serial.begin (115200); led.begin (); led.setBrightness (жарықтық); // Initial Brightness 40 led.show (); // Барлық пикселдерді 'off' color = 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 = (қос) сенсорValR / iniSensorValR;

Serial.print (rasioL);

Serial.print («»); Serial.println (rasioR);

if (rasioL> 0.985 && rasioR <0.985) {// right for (int i = LR; i <12; i ++) {blink (0, i); кешіктіру (40); LR = i; }} else if (rasioL 0.985) {// for (int i = LR; i> 2; i-) {blink (0, i); кешіктіру (40); LR = i; }} 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; if (LR <= 7) {for (int i = LR; i <= 7; i ++) {blink (0, i); кешіктіру (40); LR = i; }} else {for (int i = LR; i> = 7; i-) {жыпылықтау (0, i); кешіктіру (40); LR = i; }}}

// Бастапқы мәнді жаңарту, егер (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}

5 -қадам: операция

Сенсормен қарашықтың сол және оң қозғалысын және жыпылықтауын анықтаңыз және көз алмасының жарық диодын басқарыңыз.

Ұсынылған: