Përmbajtje:
- Hapi 1: Kushtetuta
- Hapi 2: Topi i syve NeoPixel LED
- Hapi 3: Njësia e sensorit
- Hapi 4: Kodi Arduino
- Hapi 5: Funksionimi
Video: Ndjekja e lëvizjes së syve duke përdorur sensorin infra të kuqe: 5 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:23
Kam përdorur një sensor infra të kuqe për të ndjerë lëvizjet e syve dhe për të kontrolluar LED.
Bëra sytë me LED Tape NeoPixel.
Hapi 1: Kushtetuta
Kam përdorur dy sensorë QTR - 1A për gjurmimin e syve. Ndjenja me Arduino dhe kontrolli i LED.
përbërësit
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Shtesë Adafruit LiIon/LiPoly Backpack për Pro Trinket/ItsyBitsy
- Bateria LiPo
- Rrip NeoPixel
- Sensori i reflektimit QTR-1A
Hapi 2: Topi i syve NeoPixel LED
Përdoret kaseta LED NeoPixel. LED është 68 njësi.
LED është e fiksuar në tas me kasetë të dyanshme dhe me tela.
Hapi 3: Njësia e sensorit
Kam përdorur dy sensorë QTR - 1A për gjurmimin e syve. QTR - 1A vendosen në një fletë plastike në një distancë prej rreth gjerësisë së syrit.
Pjesa e sensorit dhe pjesa e mikrokontrolluesit u fiksuan në syzet përkatësisht me një kapëse.
Hapi 4: Kodi Arduino
Kur irisi i afrohet një sensori, drita e reflektuar zvogëlohet dhe vlera e sensorit rritet. Anasjelltas, kur irisi largohet, drita e reflektuar rritet dhe vlera e sensorit të reflektorit të fotografisë zvogëlohet.
Lëvizja e djathtë dhe e majtë e bebës së syrit LED ndien rritjen dhe uljen e një vlere të sensorit dhe e kontrollon atë. Kur vezullon, të dy vlerat e sensorit zvogëlohen, kështu që nëse të dy vlerat e sensorit zvogëlohen njëkohësisht, qepallat e syrit LED do të ulen.
Kam përdorur bibliotekën e mëposhtme.
- QTRsensors:
- Adafruit_NeoPixel:
#përfshi #përfshi
#përcakto NUM_SENSORS 2 // numri i sensorëve të përdorur#përcakto NUM_SAMPLES_PER_SENSOR 10 // mesatarisht#përcakto EMITTER_PIN QTR_NO_EMITTER_PIN
int iniSensorValL, sensorValL; int iniSensorValR, sensorValR; #përcaktoni PIN A3 Adafruit_NeoPixel led = Adafruit_NeoPixel (68, PIN, NEO_GRB + NEO_KHZ800); int blackNum = 24; int pupilNum = 12; ngjyra uint32_t; int shkëlqim = 40; byte eyeColor; int LR = 7; kapak boolean = i rremë; int cnt = 0;
// Animacioni L & R i syrit të zi është i ziLED [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}};
// animacioni i nxënësit L&R për nxënësLED [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}, {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 animacionin qepallë = 0; int qepallëNum [8] = {0, 4, 8, 16, 24, 34, 44, 56}; qepallë int [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}; QTRSensorë Qtra analoge ((shenja pa shenjë ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); sensori int i pa firmosur Vlerat [NUM_SENSORS];
mbyllje e pavlefshme (qepallë int, int LR) {nëse (qepallë! = 8) {// Kallamar për (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66, 66, 66)); }
// Syri i zi për (uint16_t i = 0; i led.setPixelColor (e zezëLED [LR] , ngjyra);}
// nxënës për (uint16_t i = 0; i
led.setPixelColor (pupilLED [LR] , led. Color (0, 0, 66)); }
// qepallë për (int i = 0; i <qepallëNum [qepallë]; i ++) {led.setPixelColor (qepallëLED , 0); }} tjetër nëse (qepallë == 8) {led.clear (); } led.show ();}
void setup () {
Serial.fillo (115200); led.filloj (); led.setBrightness (shkëlqim); // Ndriçimi fillestar 40 led.show (); // Filloni të gjitha pikselët në "off" color = led. Color (0, 177, 55); // vonesa e ngjyrës së nxënësit (100); qtra.read (sensorVlerat); iniSensorValL = vlerat e sensorit [0]; iniSensorValR = vlerat e sensorit [1]; mbyll sytë (qepallë, LR); }
lak void () {// QTR - 1A vlera e sensorit qtra.read (sensorValues); sensorValL = sensorVlerat [0]; sensorValR = sensorVlerat [1];
rasioL dyfishtë = (dyfish) sensorValL / iniSensorValL;
rasioR dyfishtë = (dyfish) sensorValR / iniSensorValR;
Serial.print (rasioL);
Serial.print (""); Serial.println (rasioR);
if (rasioL> 0.985 && rasioR <0.985) {// e drejtë për (int i = LR; i <12; i ++) {blink (0, i); vonesa (40); LR = i; }} tjetër nëse (rasioL 0.985) {// majtas për (int i = LR; i> 2; i-) {blink (0, i); vonesa (40); LR = i; }} tjetër nëse (lid == false && rasioL <0.96 && rasioR <0.96) {// Mbyllje mbyllëse për (int i = 1; i 0.96 && rasioR> 0.96) {// Pulsim i hapur për (int i = 8; i > 0; i-) {vezullim (i, LR); vonesa (40); kapak = i rremë; }} tjetër nëse (lid == false && rasioL> 0.96 && rasioR> 0.96) {// normale // cnt ++; // qepallë = 0; nëse (LR <= 7) {për (int i = LR; i <= 7; i ++) {blink (0, i); vonesa (40); LR = i; }} tjetër {për (int i = LR; i> = 7; i-) {blink (0, i); vonesa (40); LR = i; }}}
// Rifresko vlerën fillestare nëse (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
Hapi 5: Funksionimi
Zbuloni lëvizjen majtas dhe djathtas dhe mbyllni syrin me sensorin dhe kontrolloni LED -in e syrit.
Recommended:
Ndjekja e Lëvizjes duke Përdorur MPU-6000 dhe Foton Particle: 4 Hapa
Gjurmimi i Lëvizjes duke Përdorur MPU-6000 dhe Foton Particle: MPU-6000 është një Sensor i Ndjekjes së Lëvizjes me 6 Aks, i cili ka një akselerometër 3-Boshtësh dhe një xhiroskop 3-Bosht të ngulitur në të. Ky sensor është i aftë të gjurmojë në mënyrë efikase pozicionin dhe vendndodhjen e saktë të një objekti në rrafshin 3-dimensional. Mund të punësohet në
Ndjekja e Lëvizjes duke Përdorur MPU-6000 dhe Arduino Nano: 4 Hapa
Ndjekja e Lëvizjes duke Përdorur MPU-6000 dhe Arduino Nano: MPU-6000 është një Sensor i Ndjekjes së Lëvizjes me 6 Aks, i cili ka një akselerometër me 3 boshte dhe një xhiroskop me 3 boshte të ngulitura në të. Ky sensor është i aftë të gjurmojë në mënyrë efikase pozicionin dhe vendndodhjen e saktë të një objekti në rrafshin 3-dimensional. Mund të punësohet në
Ndjekja e Lëvizjes duke Përdorur MPU-6000 dhe Raspberry Pi: 4 Hapa
Ndjekja e Lëvizjes duke Përdorur MPU-6000 dhe Raspberry Pi: MPU-6000 është një Sensor i Ndjekjes së Lëvizjes me 6 Aks, i cili ka një akselerometër 3-Bosht dhe një xhiroskop 3-Bosht të ngulitur në të. Ky sensor është i aftë të gjurmojë në mënyrë efikase pozicionin dhe vendndodhjen e saktë të një objekti në rrafshin 3-dimensional. Mund të punësohet në
Krijimi i sinjalizimeve me email për sensorin e temperaturës dhe lagështisë me valë NCD duke përdorur Nyjen-Kuqe: 22 hapa
Krijimi i paralajmërimeve me email për sensorin e temperaturës dhe lagështisë pa tel NCD duke përdorur Node-Red: Ne po përdorim këtu sensorin e temperaturës dhe lagështisë të NCD, por hapat qëndrojnë të barabartë për cilindo nga produktet ncd, kështu që nëse keni sensorë të tjerë wireless wireless, përjetoni falas vëzhgoni krahas përveç. Me anë të ndalimit të këtij teksti, ju duhet të
Automatizoni një dritë duke përdorur sensorin e lëvizjes MESH: 3 hapa (me fotografi)
Automatizoni një dritë duke përdorur sensorin e lëvizjes MESH: A harroni shpesh të fikni dritat? Alwaysshtë gjithmonë e mundur të harroni të fikni dritat kur dilni nga shtëpia ose dhoma juaj, por me Sensorin e Lëvizjes MESH, ne e zgjidhëm çështjen duke përdorur funksionet e zbulimit dhe të pazbulimit për t'ju ndihmuar të lehtësoni