Inhaltsverzeichnis:
- Schritt 1: Verfassung
- Schritt 2: NeoPixel LED Augapfel
- Schritt 3: Sensoreinheit
- Schritt 4: Arduino-Code
- Schritt 5: Betrieb
Video: Eye Motion Tracking mit Infrarotsensor - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Ich habe einen Infrarotsensor verwendet, um Augenbewegungen zu erkennen und die LED zu steuern.
Ich habe Augäpfel mit LED Tape NeoPixel gemacht.
Schritt 1: Verfassung
Ich habe zwei Sensoren QTR - 1A für das Eyetracking verwendet. Sensorik mit Arduino und Ansteuerung der LED.
Komponenten
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Adafruit LiIon/LiPoly Rucksack-Add-On für Pro Trinket/ItsyBitsy
- LiPo-Akku
- NeoPixel-Streifen
- QTR-1A Reflexionssensor
Schritt 2: NeoPixel LED Augapfel
Es wird NeoPixel-LED-Band verwendet. LED ist 68 Einheit.
LED wird mit doppelseitigem Klebeband an der Schale befestigt und verkabelt.
Schritt 3: Sensoreinheit
Ich habe zwei Sensoren QTR - 1A für das Eyetracking verwendet. QTR - 1A werden in einem Abstand von etwa der Breite des Auges auf eine Plastikfolie gelegt.
Der Sensorteil und der Mikrocontrollerteil wurden jeweils mit einem Clip an der Brille befestigt.
Schritt 4: Arduino-Code
Nähert sich die Blende einem Sensor, nimmt das reflektierte Licht ab und der Sensorwert steigt. Umgekehrt nimmt bei einer Entfernung der Iris das reflektierte Licht zu und der Sensorwert des Fotoreflektors sinkt.
Die rechte und linke Bewegung der Pupille des LED-Augapfels erkennt die Zunahme und Abnahme eines Sensorwertes und steuert diesen. Beim Blinken sinken beide Sensorwerte, wenn also beide Sensorwerte gleichzeitig sinken, sinken die Augenlider des LED-Augapfels.
Ich habe die folgende Bibliothek verwendet.
- QTRsensoren:
- Adafruit_NeoPixel:
#einschließen #einschließen
#define NUM_SENSORS 2 // Anzahl der verwendeten Sensoren#define NUM_SAMPLES_PER_SENSOR 10 // Mittelwertbildung#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 PupillenNum = 12; uint32_t Farbe; int-Helligkeit = 40; Byte Augenfarbe; int LR = 7; boolescher Deckel = false; int cnt = 0;
// Schwarzes Auge 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, 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}};
// Pupille L&R Animationint PupillenLED[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-Animationint-Augenlid = 0; int AugenlidNum[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((unsigned char) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); unsigned int sensorValues[NUM_SENSORS];
Void blink(int eyelid, int LR) { if (eyelid!= 8) {//Zinn for(uint16_t i=0; i<led.numPixels(); i++) {led.setPixelColor (i, led. Color (66.), 66, 66)); }
// Schwarzes Auge für (uint16_t i=0; ich led.setPixelColor (blackLED[LR], Farbe);}
// Schüler für (uint16_t i=0; i
led.setPixelColor(pupilLED[LR], led. Color(0, 0, 66)); }
// Augenlid für (int i = 0; i < eyelidNum [Augenlid]; i ++) {led.setPixelColor (eyelidLED, 0); }} sonst wenn (Augenlid == 8) {led.clear (); } led.show();}
Leere Einrichtung () {
Serial.begin(115200); led.begin(); led.setHelligkeit (Helligkeit); // Anfängliche Helligkeit 40 led.show (); // Alle Pixel auf 'aus' initialisieren color = led. Color (0, 177, 55); // Farbverzögerung der Pupille (100); qtra.read (sensorWerte); iniSensorValL = sensorValues[0]; iniSensorValR = sensorValues[1]; Blinzeln (Augenlid, LR); }
Void Schleife () {//QTR - 1A Sensorwert 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);
if (rasioL > 0,985 && rasioR < 0,985) {// rechts für (int i = LR; i < 12; i ++) {blinken (0, i); Verzögerung (40); LR = ich; aufrechtzuerhalten. Verzögerung (40); LR = ich; aufrechtzuerhalten > 0; i--) {blinken (i, LR); Verzögerung (40); Deckel = falsch; }} sonst if(lid == false && rasioL > 0,96 && rasioR > 0,96) {//normal //cnt++; // Augenlid = 0; if (LR <= 7) { for (int i = LR; i <= 7; i ++) { blink (0, i); Verzögerung (40); LR = ich; }} sonst { for(int i=LR; i>=7; i--){blinken (0, i); Verzögerung (40); LR = ich; } } }
// Anfangswert aktualisieren if (cnt > 10) { iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; } }
Schritt 5: Betrieb
Erkenne mit dem Sensor Bewegungen nach links und rechts sowie das Blinzeln der Pupille und steuere die Augapfel-LED.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
LED Demon Eye mit Smartphone Bluetooth App einrichten: 5 Schritte
So richten Sie LED Demon Eye mit Bluetooth-App für Smartphones ein: In dieser Installationsanleitung erfahren Sie, wie Sie die App einrichten, die über Bluetooth eine Verbindung herstellt. Diese App ist sowohl im Apple Store als auch bei Google Play erhältlich und heißt "Happy Lighting"
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter - Daumen Roboter - Servomotor - Quellcode: 26 Schritte (mit Bildern)
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter | Daumen Roboter | Servomotor | Quellcode: Thumbs Robot. Verwendet ein Potentiometer des Servomotors MG90S. Es macht sehr viel Spaß und ist einfach! Der Code ist sehr einfach. Es sind nur etwa 30 Zeilen. Es sieht aus wie ein Motion-Capture.Bitte hinterlassen Sie Fragen oder Feedback![Anleitung] Quellcode https://github.c