
Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01

Ik gebruikte een infraroodsensor om oogbewegingen waar te nemen en de LED te bedienen.
Ik heb oogbollen gemaakt met LED Tape NeoPixel.
Stap 1: Grondwet

Ik heb twee sensoren QTR - 1A gebruikt voor eye-tracking. Sensing met Arduino en aansturing van de LED.
componenten
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Adafruit LiIon/LiPoly rugzak add-on voor Pro Trinket/ItsyBitsy
- LiPo-batterij
- NeoPixel-strip
- QTR-1A reflectiesensor
Stap 2: NeoPixel LED-oogbal


NeoPixel LED-tape wordt gebruikt. LED is 68 eenheden.
LED is met dubbelzijdige tape aan de schaal bevestigd en bedraad.
Stap 3: Sensoreenheid



Ik heb twee sensoren QTR - 1A gebruikt voor eye-tracking. QTR - 1A worden op een plastic vel geplaatst op een afstand van ongeveer de breedte van het oog.
Het sensorgedeelte en het microcontrollergedeelte werden respectievelijk met een clip aan de bril bevestigd.
Stap 4: Arduino-code
Wanneer de iris één sensor nadert, neemt het gereflecteerde licht af en neemt de sensorwaarde toe. Omgekeerd, wanneer de iris weg beweegt, neemt het gereflecteerde licht toe en neemt de sensorwaarde van de fotoreflector af.
De rechter- en linkerbeweging van de pupil van de LED-oogbol detecteert de toename en afname van één sensorwaarde en regelt deze. Bij het knipperen nemen beide sensorwaarden af, dus als de twee sensorwaarden gelijktijdig afnemen, gaan de oogleden van de LED-oogbol naar beneden.
Ik heb de volgende bibliotheek gebruikt.
- QTRsensoren:
- Adafruit_NeoPixel:
#include #include
#define NUM_SENSORS 2 // aantal gebruikte sensoren#define NUM_SAMPLES_PER_SENSOR 10 // middeling#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 zwartNum = 24; int pupilNum = 12; uint32_t kleur; int helderheid = 40; byte oogkleur; int LR =7; booleaanse deksel = onwaar; intcnt = 0;
//Black eye L&R animatieint 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, 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}, {20, 21, 24, 43, 46, 47, 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}};
//pupil L&R animatieint pupilLED[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}};
// Knipper animatieint ooglid = 0; int ooglidNum[8] = {0, 4, 8, 16, 24, 34, 44, 56}; int ooglidLED [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}; QTRSensorsAnaloge qtra((unsigned char ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS];
void blink (int ooglid, int LR) {if (ooglid! = 8) { // Pewter for (uint16_t i=0; i<led.numPixels(); i++) { led.setPixelColor(i, led. Color(66, 66, 66)); }
// Zwart oog voor (uint16_t i = 0; i led.setPixelColor (blackLED [LR] , kleur);}
// leerling voor (uint16_t i=0; i
led.setPixelColor(pupilLED[LR], led. Color(0, 0, 66)); }
// ooglid voor (int i = 0; i < eyelidNum [ooglid]; i ++) { led.setPixelColor (ooglidLED , 0); } } else if (ooglid == 8){ led.clear(); } led.show();}
ongeldige setup() {
Serieel.begin(115200); led.begin(); led.setHelderheid (helderheid); // Initiële helderheid 40 led.show(); // Initialiseer alle pixels op 'uit' kleur = led. Color (0, 177, 55); // leerling kleurvertraging (100); qtra.read(sensorValues); iniSensorValL = sensorValues[0]; iniSensorValR = sensorValues[1]; knipperen (ooglid, LR); }
void loop() {//QTR - 1A sensorwaarde qtra.read(sensorValues); sensorValL = sensorValues[0]; sensorValR = sensorWaarden[1];
dubbele rasioL = (dubbele)sensorValL / iniSensorValL;
dubbele rasioR = (dubbele)sensorValR / iniSensorValR;
Serial.print(rasioL);
Serieel.print(" "); Serial.println(rasioR);
if(rasioL > 0.985 && rasioR <0.985){ //right for(int i = LR; i <12; i++){ blink(0, i); vertraging (40); LR = ik; } }else if(rasioL 0.985){ // left for(int i=LR; i>2; i--){ blink(0, i); vertraging (40); LR = ik; } }else if(lid == false && rasioL < 0.96 && rasioR < 0.96){ // Knippert dicht voor (int i = 1; i 0.96 && rasioR > 0,96){ // Knippert open voor (int i = 8; i > 0; i--){ blink(i, LR); vertraging (40); deksel = vals; } }else if(lid == false && rasioL > 0.96 && rasioR > 0.96) { //normal //cnt++; // ooglid = 0; if(LR <= 7){ for(int i=LR; i<=7; i++){ blink(0, i); vertraging (40); LR = ik; } }else { for(int i=LR; i>=7; i--){ blink(0, i); vertraging (40); LR = ik; } } }
//Initiële waarde vernieuwen als (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; } }
Stap 5: Bediening
Detecteer linker- en rechterbeweging en het knipperen van de pupil met de sensor en bedien de oogbol-LED.
Aanbevolen:
Meting van versnelling met behulp van ADXL345 en Particle Photon: 4 stappen

Meting van versnelling met behulp van ADXL345 en deeltjesfoton: De ADXL345 is een kleine, dunne, ultralaagvermogen, 3-assige versnellingsmeter met hoge resolutie (13-bits) meting tot ±16 g. Digitale uitvoergegevens zijn geformatteerd als 16-bits tweetallen en zijn toegankelijk via de digitale I2 C-interface. Het meet de
Upgrade de achtergrondverlichting van een VU-meter naar blauwe led met behulp van oude CFL-lamponderdelen: 3 stappen

Upgrade een VU-meterachtergrondverlichting naar blauwe led met behulp van oude CFL-lamponderdelen.: Tijdens het repareren van een oude Sony TC630 reel-to-reel bandrecorder, merkte ik dat een van de glazen bollen voor de achtergrondverlichting van de VU-meter kapot was. Geen hoeveelheid geleidende verf werkte omdat het lood onder het glasoppervlak was afgebroken. De enige vervanger die ik
Infraroodsensor gebruiken met Arduino 8 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"

Infraroodsensor gebruiken met Arduino: wat is een infraroodsensor (ook bekend als IR-sensor? Een IR-sensor is een elektronisch instrument dat IR-signalen scant in specifieke frequentiebereiken die zijn gedefinieerd door normen en deze omzet in elektrische signalen op de uitgangspin (meestal signaalpin genoemd) . Het IR-signaal
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)

Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen

Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik