Πίνακας περιεχομένων:
- Βήμα 1: Σύνταγμα
- Βήμα 2: NeoPixel LED Eye Ball
- Βήμα 3: Μονάδα αισθητήρα
- Βήμα 4: Κωδικός Arduino
- Βήμα 5: Λειτουργία
Βίντεο: Παρακολούθηση κίνησης ματιών με χρήση αισθητήρα υπερύθρων: 5 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Χρησιμοποίησα έναν υπέρυθρο αισθητήρα για να αντιληφθώ τις κινήσεις των ματιών και να ελέγξω το LED.
Έφτιαξα βολβούς ματιών με LED Tape NeoPixel.
Βήμα 1: Σύνταγμα
Χρησιμοποίησα δύο αισθητήρες QTR - 1A για παρακολούθηση ματιών. Ανίχνευση με Arduino και έλεγχος της λυχνίας LED.
συστατικά
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Πρόσθετο Adafruit LiIon/LiPoly Backpack για Pro Trinket/ItsyBitsy
- Μπαταρία LiPo
- Λωρίδα NeoPixel
- Αισθητήρας ανάκλασης QTR-1A
Βήμα 2: NeoPixel LED Eye Ball
Χρησιμοποιείται ταινία LED NeoPixel. Το LED είναι 68 μονάδες.
Το LED είναι στερεωμένο στο μπολ με ταινία διπλής όψης και ενσύρματο.
Βήμα 3: Μονάδα αισθητήρα
Χρησιμοποίησα δύο αισθητήρες QTR - 1A για παρακολούθηση ματιών. Το QTR - 1A τοποθετείται σε πλαστικό φύλλο σε απόσταση περίπου του πλάτους του ματιού.
Το τμήμα του αισθητήρα και το τμήμα του μικροελεγκτή στερεώθηκαν στα γυαλιά με ένα κλιπ αντίστοιχα.
Βήμα 4: Κωδικός Arduino
Όταν η ίριδα πλησιάζει έναν αισθητήρα, το ανακλώμενο φως μειώνεται και η τιμή του αισθητήρα αυξάνεται. Αντίθετα, όταν η ίριδα απομακρύνεται, το ανακλώμενο φως αυξάνεται και η τιμή του αισθητήρα του ανακλαστήρα φωτογραφιών μειώνεται.
Η δεξιά και η αριστερή κίνηση της κόρης του βολβού των ματιών LED αισθάνεται την αύξηση και τη μείωση μιας τιμής αισθητήρα και την ελέγχει. Όταν αναβοσβήνει, και οι δύο τιμές αισθητήρα μειώνονται, οπότε εάν οι δύο τιμές αισθητήρα μειωθούν ταυτόχρονα, τα βλέφαρα του βολβού των ματιών LED θα πέσουν.
Χρησιμοποίησα την παρακάτω βιβλιοθήκη.
- QTRsensors:
- Adafruit_NeoPixel:
#συμπεριλάβω #συμπεριλάβω
#define NUM_SENSORS 2 // αριθμός αισθητήρων που χρησιμοποιούνται#define NUM_SAMPLES_PER_SENSOR 10 // κατά μέσο όρο#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 pupilNum = 12; uint32_t χρώμα; int φωτεινότητα = 40; byte eyeColor; int LR = 7; boolean lid = false? 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, 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, 68}};
// μαθητής L&R animationint 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}};
// Blink animationint eyelid = 0; int eyelidNum [8] = {0, 4, 8, 16, 24, 34, 44, 56}; int βλέφαροLED [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 ((χωρίς υπογραφή char ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); ανυπόγραφο int sensorValues [NUM_SENSORS];
void blink (int eyelid, int LR) {if (eyelid! = 8) {// Pewter for (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66, 66, 66)); }
// Μαύρο μάτι για (uint16_t i = 0; i led.setPixelColor (μαύροLED [LR] , χρώμα);}
// μαθητής για (uint16_t i = 0; i
led.setPixelColor (μαθητήςLED [LR] , led. Color (0, 0, 66)); }
// βλέφαρο για (int i = 0; i <eyelidNum [βλέφαρο]; i ++) {led.setPixelColor (βλέφαροLED , 0); }} else if (βλέφαρο == 8) {led.clear (); } led.show ();}
void setup () {
Serial.begin (115200); led.begin (); led.setBrightness (φωτεινότητα); // Αρχική Φωτεινότητα 40 led.show (); // Αρχικοποίηση όλων των εικονοστοιχείων σε "off" χρώμα = led. Color (0, 177, 55); // καθυστέρηση χρώματος της κόρης (100). qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; αναβοσβήνει (βλέφαρο, LR)? }
void loop () {// QTR - 1A τιμή αισθητήρα qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];
διπλό rasioL = (διπλό) sensorValL / iniSensorValL;
διπλό rasioR = (διπλό) sensorValR / iniSensorValR;
Serial.print (rasioL);
Serial.print (""); Serial.println (rasioR);
if (rasioL> 0.985 && rasioR <0.985) {// σωστό για (int i = LR; i <12; i ++) {αναβοσβήνει (0, i); καθυστέρηση (40)? LR = i; }} else if (rasioL 0.985) {// αριστερά για (int i = LR; i> 2; i-) {blink (0, i); καθυστέρηση (40)? LR = i; }} else if (lid == false && rasioL <0.96 && rasioR <0.96) {// Αναβοσβήνει κοντά για (int i = 1; i 0.96 && rasioR> 0.96) {// Αναβοσβήνει ανοιχτό για (int i = 8; i > 0; i-) {αναβοσβήνω (i, LR); καθυστέρηση (40)? καπάκι = ψευδές? }} else if (lid == false && rasioL> 0.96 && rasioR> 0.96) {// normal // cnt ++; // βλέφαρο = 0; εάν (LR <= 7) {για (int i = LR; i <= 7; i ++) {αναβοσβήνει (0, i); καθυστέρηση (40)? LR = i; }} else {for (int i = LR; i> = 7; i-) {blink (0, i); καθυστέρηση (40)? LR = i; }}}
// Ανανέωση αρχικής αξίας εάν (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
Βήμα 5: Λειτουργία
Ανιχνεύστε την αριστερή και τη δεξιά κίνηση και αναβοσβήνετε της κόρης με τον αισθητήρα και ελέγξτε τη λυχνία LED του βολβού του ματιού.
Συνιστάται:
Παρακολούθηση κίνησης ανθρώπινων ματιών: 6 βήματα
Ανθρώπινη παρακολούθηση κίνησης ματιών: Αυτό το έργο στοχεύει να συλλάβει την κίνηση του ανθρώπινου ματιού και εμφανίζει την κίνησή του σε ένα σύνολο φωτιστικών LED που είναι τοποθετημένα σε σχήμα ματιού. Αυτός ο τύπος έργου θα μπορούσε δυνητικά να έχει πολλές χρήσεις στον τομέα της ρομποτικής και συγκεκριμένα του huma
Χρήση αισθητήρα υπερύθρων με Arduino: 8 βήματα (με εικόνες)
Χρήση αισθητήρα υπέρυθρης ακτινοβολίας με το Arduino: Τι είναι ο αισθητήρας υπερύθρων (γνωστός και ως IR); Ένας αισθητήρας IR είναι ένα ηλεκτρονικό όργανο που σαρώνει σήματα IR σε συγκεκριμένες περιοχές συχνοτήτων που καθορίζονται από τα πρότυπα και τα μετατρέπει σε ηλεκτρικά σήματα στην ακίδα εξόδου του (συνήθως ονομάζεται ακίδα σήματος) Το Το σήμα IR
DIY: Μίνι κιβώτιο αισθητήρα οροφής με αισθητήρα κίνησης με δυνατότητα εστίασης: 4 βήματα
DIY: Μίνι κιβώτιο αισθητήρων οροφής με αισθητήρα κίνησης με δυνατότητα εστίασης: Γεια σας. Πριν από λίγο καιρό βοηθούσα τον φίλο μου με την έννοια του έξυπνου σπιτιού και δημιούργησα ένα μίνι κιβώτιο αισθητήρων με προσαρμοσμένο σχέδιο που θα μπορούσε να τοποθετηθεί στην οροφή στην οπή 40x65mm. Αυτό το κουτί βοηθάει: • στη μέτρηση της έντασης του φωτός • στη μέτρηση του υγρού
M5Stack IR Θερμική κάμερα με χρήση αισθητήρα απεικόνισης υπερύθρων AMG8833: 3 βήματα
M5Stack IR Thermal Camera Using AMG8833 Infrared Array Imaging Sensor: Όπως πολλοί, γοητεύτηκα από τις θερμικές κάμερες, αλλά ήταν πάντα εκτός του εύρους τιμών μου - μέχρι τώρα !! Κατά την περιήγηση στον ιστότοπο Hackaday, συνάντησα αυτήν την κατασκευή κάμερας χρησιμοποιώντας το M5Stack Η μονάδα ESP32 και σχετικά φθηνή
Χρήση αισθητήρα κίνησης με RaspberryPi και Telegram Bot: 4 βήματα
Χρήση αισθητήρα κίνησης με RaspberryPi και Telegram Bot: Γεια σας παιδιά. Σε αυτήν την ανάρτηση πρόκειται να χρησιμοποιήσουμε Raspberry Pi Telegram Bot με αισθητήρα PIR (κίνηση)