Innholdsfortegnelse:
- Trinn 1: Grunnlov
- Trinn 2: NeoPixel LED Eye Ball
- Trinn 3: Sensorenhet
- Trinn 4: Arduino -kode
- Trinn 5: Drift
Video: Øyebevegelsessporing med infrarød sensor: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Jeg brukte en infrarød sensor for å føle øyebevegelser og kontrollere LED -en.
Jeg laget øyeboller med LED Tape NeoPixel.
Trinn 1: Grunnlov
Jeg brukte to sensorer QTR - 1A for øyesporing. Sensing med Arduino og kontroll av LED.
komponenter
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Adafruit LiIon/LiPoly ryggsekk-tillegg for Pro Trinket/ItsyBitsy
- LiPo batteri
- NeoPixel -stripe
- QTR-1A refleksjonssensor
Trinn 2: NeoPixel LED Eye Ball
NeoPixel LED tape brukes. LED er 68 enheter.
LED er festet til bollen med dobbeltsidig tape og kablet.
Trinn 3: Sensorenhet
Jeg brukte to sensorer QTR - 1A for øyesporing. QTR - 1A plasseres på et plastark i en avstand på omtrent øyets bredde.
Sensordelen og mikrokontrollerdelen ble festet til henholdsvis brillen med et klips.
Trinn 4: Arduino -kode
Når iris nærmer seg en sensor, reduseres det reflekterte lyset og sensorverdien øker. Motsatt, når iris beveger seg bort, øker det reflekterte lyset og sensorverdien til fotoreflektoren synker.
Høyre og venstre bevegelse av eleven til LED -øyeeplet registrerer økning og reduksjon av en sensorverdi og kontrollerer den. Når de blinker, reduseres begge sensorverdiene, så hvis de to sensorverdiene synker samtidig, vil øyelokkene til LED -øyebollet gå ned.
Jeg brukte følgende bibliotek.
- QTRsensorer:
- Adafruit_NeoPixel:
#include #include
#define NUM_SENSORS 2 // antall sensorer brukt#definere NUM_SAMPLES_PER_SENSOR 10 // gjennomsnitt#definere 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 elevNum = 12; uint32_t farge; int lysstyrke = 40; byte eyeColor; int LR = 7; boolsk lokk = falskt; int cnt = 0;
// Black eye L&R animationint 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}, {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}, {4, 19, 20, 25, 42, 47, 48, 63, 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}, {21, 23, 44, 46, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}};
// elev L & R -animasjon elev LED [15] [12] = {{33, 34, 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 animasjon i øyelokket = 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 ((usignert tegn ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); usignerte int sensorValues [NUM_SENSORS];
ugyldig blink (int øyelokk, int LR) {if (øyelokk! = 8) {// Tinn for (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66, 66, 66)); }
// Svart øye for (uint16_t i = 0; i led.setPixelColor (blackLED [LR] , farge);}
// elev for (uint16_t i = 0; i
led.setPixelColor (pupilLED [LR] , led. Color (0, 0, 66)); }
// øyelokk for (int i = 0; i <eyelidNum [eyelid]; i ++) {led.setPixelColor (eyelidLED , 0); }} annet hvis (øyelokk == 8) {led.clear (); } led.show ();}
ugyldig oppsett () {
Serial.begin (115200); led.begin (); led.setBrightness (lysstyrke); // Initial Brightness 40 led.show (); // Initialiser alle piksler til 'off' color = led. Color (0, 177, 55); // pupillfarge forsinkelse (100); qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; blink (øyelokk, LR); }
void loop () {// QTR - 1A sensorverdi qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];
double rasioL = (double) sensorValL / iniSensorValL;
double rasioR = (double) sensorValR / iniSensorValR;
Serial.print (rasioL);
Serial.print (""); Serial.println (rasioR);
hvis (rasioL> 0,985 && rasioR <0,985) {// høyre for (int i = LR; i <12; i ++) {blink (0, i); forsinkelse (40); LR = i; }} annet hvis (rasioL 0.985) {// igjen for (int i = LR; i> 2; i-) {blink (0, i); forsinkelse (40); LR = i; }} annet hvis (lid == false && rasioL <0,96 && rasioR <0,96) {// Blinker nær for (int i = 1; i 0,96 && rasioR> 0,96) {// Blinker åpent for (int i = 8; i > 0; i-) {blink (i, LR); forsinkelse (40); lokk = usant; }} annet hvis (lid == false && rasioL> 0.96 && rasioR> 0.96) {// normal // cnt ++; // øyelokk = 0; hvis (LR <= 7) {for (int i = LR; i <= 7; i ++) {blink (0, i); forsinkelse (40); LR = i; }} annet {for (int i = LR; i> = 7; i-) {blink (0, i); forsinkelse (40); LR = i; }}}
// Oppdater første verdi hvis (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
Trinn 5: Drift
Registrer venstre og høyre bevegelse og blink av eleven med sensoren, og kontroller lysdioden for øyet.
Anbefalt:
Bruke infrarød sensor med Arduino: 8 trinn (med bilder)
Bruke infrarød sensor med Arduino: Hva er en infrarød (aka IR) sensor? En IR -sensor er et elektronisk instrument som skanner IR -signaler i bestemte frekvensområder definert av standarder og konverterer dem til elektriske signaler på utgangspinnen (vanligvis kalt signalpinne) . IR -signalet
TCRT5000 Infrarød reflekterende sensor - hvordan den fungerer og eksempelkrets med kode: 6 trinn
TCRT5000 Infrarød reflekssensor - hvordan den fungerer og eksempler på krets med kode: Hei, jeg brukte nylig en haug med TCRT5000 når jeg designet og laget min myntsorteringsmaskin. Du kan se det her: For å gjøre dette måtte jeg lære om TCRT5000, og etter at jeg forsto det tenkte jeg at jeg ville lage en guide for alle andre som så
Infrarød laser tag med Raspberry Pi Zero: 6 trinn (med bilder)
Infrarød lasermerking med Raspberry Pi Zero: Denne instruksjonsboken vil gå gjennom prosessen for å lage et infrarødt lasermerkespill ved bruk av en basisservercomputer og en Raspberry Pi -null for hver spiller. Prosjektet er sterkt avhengig av en Wifi -tilkobling for å kommunisere med serveren som gjør
Nokia 5110 LCD med infrarød sensor: 4 trinn
Nokia 5110 LCD med infrarød sensor: Nokia 5110 LCD -skjermen er en fantastisk LCD -skjerm som er kompatibel med Arduino utviklingskort. La oss nå kontrollere en av disse LCD -skjermene og koble den til Arduino og en IR -sensor
Infrarød sensor med ESP8266: 6 trinn
Infrarød sensor med ESP8266: Vårt mål denne gangen er å lage et program som vil lese omgivelsestemperaturen til ethvert objekt som peker mot sensoren vår. For å gjøre dette vil vi i dette prosjektet bruke en ESP8266 nodeMCU, en MLX90614 infrarød sensor og en OLED 96 "skjerm