Sisukord:
Video: Silmaliigutuse jälgimine infrapunaanduri abil: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Silmaliigutuste tajumiseks ja LED -i juhtimiseks kasutasin infrapunaandurit.
Silmamunad tegin LED Tape NeoPixeliga.
1. samm: põhiseadus
Silmade jälgimiseks kasutasin kahte andurit QTR - 1A. Tundmine Arduino abil ja LED -i juhtimine.
komponendid
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Adafruit LiIon/LiPoly seljakoti lisand Pro Trinket/ItsyBitsy jaoks
- LiPo aku
- NeoPixeli riba
- QTR-1A peegeldusandur
2. samm: NeoPixel LED silmapall
Kasutatakse NeoPixeli LED -linti. LED on 68 ühikut.
LED on kausi külge kinnitatud kahepoolse teibiga ja juhtmega.
3. samm: andur
Silmade jälgimiseks kasutasin kahte andurit QTR - 1A. QTR - 1A asetatakse plastlehele umbes silma laiuse kaugusel.
Anduriosa ja mikrokontrolleri osa kinnitati prillide külge vastavalt klambriga.
Samm: Arduino kood
Kui iiris läheneb ühele andurile, peegelduv valgus väheneb ja anduri väärtus suureneb. Seevastu iirise eemaldumisel suureneb peegelduv valgus ja väheneb fotoreflektori anduri väärtus.
LED -silmamuna pupilli parem- ja vasakpoolne liikumine tajub ühe anduri väärtuse suurenemist ja vähenemist ning kontrollib seda. Vilgutades vähenevad mõlemad anduri väärtused, nii et kui kaks anduri väärtust samaaegselt vähenevad, lähevad LED -silmamuna silmalaud alla.
Kasutasin järgmist raamatukogu.
- QTRsensors:
- Adafruit_NeoPixel:
#kaasama #kaasama
#define NUM_SENSORS 2 // kasutatud andurite arv#define NUM_SAMPLES_PER_SENSOR 10 // keskmistamine#define 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 mustNum = 24; int pupillNum = 12; uint32_t värv; int heledus = 40; bait silmaVärv; int LR = 7; loogiline kaas = vale; int cnt = 0;
// Mustade silmade L&R animatsioonintLED [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}, {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, 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}};
// õpilase L&R animatsiooniint pupillLED [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, 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 animationint silmalaud = 0; int eyelidNum [8] = {0, 4, 8, 16, 24, 34, 44, 56}; int silmalaudLED [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 ((märkimata märk ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues [NUM_SENSORS];
void blink (int silmalaud, int LR) {if (silmalaud! = 8) {// Tina (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66, 66, 66)); }
// Must silm: (uint16_t i = 0; i led.setPixelColor (mustLED [LR] , värv);}
// õpilane (uint16_t i = 0; i
led.setPixelColor (õpilaneLED [LR] , led. Color (0, 0, 66)); }
// silmalaud (int i = 0; i <eyelidNum [silmalaud]; i ++) {led.setPixelColor (eyelidLED , 0); }} muidu kui (silmalaud == 8) {led.clear (); } led.show ();}
tühine seadistus () {
Seriaalne algus (115200); led.begin (); led.setBrightness (heledus); // Esialgne heledus 40 led.show (); // Initsialiseeri kõik pikslid 'off' värviks = led. Color (0, 177, 55); // õpilase värvi viivitus (100); qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; vilkuma (silmalaud, LR); }
void loop () {// QTR - 1A anduri väärtus qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];
topelt rasioL = (kahekordne) sensorValL / iniSensorValL;
topelt rasioR = (kahekordne) sensorValR / iniSensorValR;
Serial.print (rasioL);
Serial.print (""); Serial.println (rasioR);
if (rasioL> 0,985 && rasioR <0,985) {// õige (int i = LR; i <12; i ++) {vilgub (0, i); viivitus (40); LR = i; }} muu kui (rasioL 0,985) {// vasakule (int i = LR; i> 2; i-) {vilgub (0, i); viivitus (40); LR = i; }} muidu kui (kaas == vale && rasioL <0,96 && rasioR <0,96) {// Vilgub sulgudes (int i = 1; i 0,96 && rasioR> 0,96) {// Vilgub lahti (int i = 8; i > 0; i-) {vilgub (i, LR); viivitus (40); kaas = vale; }} else if (lid == false && rasioL> 0.96 && rasioR> 0.96) {// normaalne // cnt ++; // silmalaud = 0; kui (LR <= 7) {jaoks (int i = LR; i <= 7; i ++) {vilgub (0, i); viivitus (40); LR = i; }} else {jaoks (int i = LR; i> = 7; i-) {vilgub (0, i); viivitus (40); LR = i; }}}
// Algväärtuse värskendamine, kui (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
Samm: toiming
Tuvastage anduriga õpilase vasak ja parem liikumine ja vilkumine ning juhtige silmamuna LED -i.
Soovitan:
Infrapunaanduri kasutamine Arduinoga: 8 sammu (piltidega)
Infrapunaanduri kasutamine Arduinoga: Mis on infrapuna (teise nimega IR) andur? IR -andur on elektrooniline instrument, mis skaneerib infrapunasignaale kindlates sagedusvahemikes, mis on määratletud standardites, ja teisendab need oma väljundpoldi (tavaliselt nimetatakse signaali tihvtiks) elektrisignaalideks . IR -signaal
Väikeste poodide jälgimine ja jälgimine: 9 sammu (piltidega)
Jälgi ja jälgi väikestele poodidele: see on süsteem, mis on loodud väikestele kauplustele, mis peaksid olema paigaldatud e-jalgratastele või e-motorolleritele lühikese vahemaaga kohaletoimetamiseks, näiteks pagaritöökoda, mis soovib saiakesi tarnida. Mida tähendab jälgimine ja jälgimine? Jälgimine ja jälgimine on süsteem, mida kasutavad ca
Kiirenduse jälgimine Raspberry Pi ja AIS328DQTR abil Pythoni abil: 6 sammu
Kiirenduse jälgimine Raspberry Pi ja AIS328DQTR abil Pythoni kasutamine: Kiirendus on piiratud, ma arvan, et mõne füüsikaseaduse kohaselt.- Terry Riley Gepard kasutab jälitamisel hämmastavat kiirendust ja kiireid kiiruse muutusi. Kiireim olend kaldal kasutab aeg -ajalt oma tipptempot saagi püüdmiseks
Kiirenduse variatsioonide jälgimine Raspberry Pi ja MMA7455 abil Pythoni abil: 6 sammu
Kiirenduse variatsioonide jälgimine Raspberry Pi ja MMA7455 abil Pythoni abil: ma ei komistanud, vaid testisin gravitatsiooni. See töötab endiselt … Kiirendava kosmosesüstiku esitus selgitas, et süstiku kõrgeimas punktis olev kell valib gravitatsioonilise aja laienemise tõttu kiiremini kui baasi. Mõned
Kella tegemine M5stick C abil Arduino IDE abil RTC reaalajas kell M5stack M5stick-C abil: 4 sammu
Kella tegemine M5stick C abil, kasutades Arduino IDE | RTC reaalajas kell koos M5stack M5stick-C-ga: Tere, selles juhendis olevad poisid, me õpime, kuidas Arduino IDE abil kella m5stick-C arendusplaadiga teha. Nii kuvab m5stick kuupäeva, kellaaja ja amp; kuunädal ekraanil