Sisällysluettelo:
- Vaihe 1: Perustuslaki
- Vaihe 2: NeoPixel LED Eye Ball
- Vaihe 3: Anturiyksikkö
- Vaihe 4: Arduino -koodi
- Vaihe 5: Käyttö
Video: Silmien liikkeen seuranta infrapuna -anturin avulla: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Käytin infrapuna -anturia havaitsemaan silmien liikkeitä ja ohjaamaan LED -valoa.
Tein silmämunat LED -teipillä NeoPixel.
Vaihe 1: Perustuslaki
Käytin kahta tunnistinta QTR - 1A silmien seurantaan. Tunnistaminen Arduinolla ja LED -valon hallinta.
osat
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Adafruit LiIon/LiPoly -reppu-lisäosa Pro Trinketille/ItsyBitsylle
- LiPo -akku
- NeoPixel -nauha
- QTR-1A heijastava anturi
Vaihe 2: NeoPixel LED Eye Ball
Käytössä on NeoPixel LED -teippi. LED on 68 yksikköä.
LED on kiinnitetty kulhoon kaksipuolisella teipillä ja langallinen.
Vaihe 3: Anturiyksikkö
Käytin kahta tunnistinta QTR - 1A silmien seurantaan. QTR - 1A asetetaan muovilevylle noin silmän leveydeltä.
Anturiosa ja mikro -ohjaimen osa kiinnitettiin silmälaseihin klipsillä.
Vaihe 4: Arduino -koodi
Kun iiris lähestyy yhtä anturia, heijastunut valo vähenee ja anturin arvo kasvaa. Päinvastoin, kun iiris siirtyy pois, heijastunut valo kasvaa ja heijastimen anturin arvo pienenee.
LED -silmämunan pupillin oikea ja vasen liike aistii yhden anturin arvon nousun ja laskun ja ohjaa sitä. Vilkuttaessa molemmat anturiarvot pienenevät, joten jos molemmat anturiarvot pienenevät samanaikaisesti, LED -silmämunan silmäluomet laskeutuvat.
Käytin seuraavaa kirjastoa.
- QTR-anturit:
- Adafruit_NeoPixel:
#Sisällytä #Sisällytä
#define NUM_SENSORS 2 // käytettyjen antureiden määrä#define NUM_SAMPLES_PER_SENSOR 10 // keskiarvoistaminen#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 blackNum = 24; int oppilasNum = 12; uint32_t väri; int kirkkaus = 40; tavu silmäVäri; int LR = 7; boolen kansi = false; int cnt = 0;
// Mustan silmän L&R -animaatiointLED [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}};
// oppilas L&R -animaatio oppilasLED [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 silmäluomen = 0; int eyelidNum [8] = {0, 4, 8, 16, 24, 34, 44, 56}; int eyedidLED [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); unsigned int sensorValues [NUM_SENSORS];
void blink (int eyedid, int LR) {if (eyelid! = 8) {// Tina (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66, 66, 66)); }
// Musta silmä: (uint16_t i = 0; i led.setPixelColor (mustaLED [LR] , väri);}
// oppilas (uint16_t i = 0; i
led.setPixelColor (oppilasLED [LR] , led. Color (0, 0, 66)); }
// silmäluomi (int i = 0; i <eyelidNum [silmäluomi]; i ++) {led.setPixelColor (eyelidLED , 0); }} else if (silmäluomi == 8) {led.clear (); } led.show ();}
void setup () {
Sarja.alku (115200); led.begin (); led.setBrightness (kirkkaus); // Alkuperäinen kirkkaus 40 led.show (); // Alusta kaikki pikselit 'off' color = led. Color (0, 177, 55); // oppilaan värin viive (100); qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; silmänräpäys (silmäluomi, LR); }
void loop () {// QTR - 1A anturin arvo qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];
kaksinkertainen rasioL = (kaksinkertainen) sensorValL / iniSensorValL;
kaksinkertainen rasioR = (kaksois) sensorValR / iniSensorValR;
Sarjajälki (rasioL);
Serial.print (""); Sarja.println (rasioR);
if (rasioL> 0,985 && rasioR <0,985) {// oikea (int i = LR; i <12; i ++) {blink (0, i); viive (40); LR = i; }} muu jos (rasioL 0,985) {// jätetty (int i = LR; i> 2; i-) {blink (0, i); viive (40); LR = i; }} muu jos (kansi == väärä && rasioL <0,96 && rasioR <0,96) {// Vilkkuu lähellä (int i = 1; i 0,96 && rasioR> 0,96) {// Vilkkuu auki (int i = 8; i > 0; i-) {vilkkuu (i, LR); viive (40); kansi = epätosi; }} else if (lid == false && rasioL> 0.96 && rasioR> 0.96) {// normaali // cnt ++; // silmäluomi = 0; jos (LR <= 7) {for (int i = LR; i <= 7; i ++) {blink (0, i); viive (40); LR = i; }} else {for (int i = LR; i> = 7; i-) {blink (0, i); viive (40); LR = i; }}}
// Alkuarvon päivitys, jos (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
Vaihe 5: Käyttö
Tunnista pupillin vasen ja oikea liike ja vilkkuminen anturilla ja ohjaa silmämunan LED -valoa.
Suositeltava:
Liikkeen seuranta MPU-6000: n ja hiukkasfotonin avulla: 4 vaihetta
Liikkeen seuranta MPU-6000: n ja hiukkasfotonin avulla: MPU-6000 on 6-akselinen liikkeenseuranta-anturi, johon on upotettu 3-akselinen kiihtyvyysanturi ja 3-akselinen gyroskooppi. Tämä anturi pystyy tehokkaasti seuraamaan kohteen tarkan sijainnin ja sijainnin kolmiulotteisessa tasossa. Sitä voidaan käyttää
Ihmissilmän liikkeen seuranta: 6 vaihetta
Ihmissilmän liikkeen seuranta: Tämän projektin tarkoituksena on kaapata ihmissilmän liike ja näyttää sen liikkeen LED -valosarjalle, joka on sijoitettu silmän muotoon. Tämän tyyppisellä projektilla voi mahdollisesti olla monia käyttötarkoituksia robotiikan ja erityisesti human alalla
Liikkeen seuranta MPU-6000: n ja Arduino Nanon avulla: 4 vaihetta
Liikkeen seuranta MPU-6000: n ja Arduino Nanon avulla: MPU-6000 on 6-akselinen liikkeenseuranta-anturi, johon on upotettu 3-akselinen kiihtyvyysanturi ja 3-akselinen gyroskooppi. Tämä anturi pystyy tehokkaasti seuraamaan kohteen tarkan sijainnin ja sijainnin kolmiulotteisessa tasossa. Sitä voidaan käyttää
Liikkeen seuranta MPU-6000: n ja Raspberry Pi: n avulla: 4 vaihetta
Liikkeen seuranta MPU-6000: n ja Raspberry Pi: n avulla: MPU-6000 on 6-akselinen liikkeenseuranta-anturi, johon on upotettu 3-akselinen kiihtyvyysanturi ja 3-akselinen gyroskooppi. Tämä anturi pystyy tehokkaasti seuraamaan kohteen tarkan sijainnin ja sijainnin kolmiulotteisessa tasossa. Sitä voidaan käyttää
QeMotion - liikkeen seuranta jokaiselle kuulokkeelle!: 5 vaihetta (kuvilla)
QeMotion - liikkeen seuranta jokaiselle kuulokkeelle!: Yleiskatsaus: Tämän laitteen avulla voit käyttää pään liikettä tapahtumien käynnistämiseen periaatteessa missä tahansa videopelissä. Se toimii seuraamalla pään (tai kuulokkeiden) liikettä ja käynnistämällä näppäimistön painalluksia tiettyjä liikkeitä varten. Joten yrityksesi