Мазмұны:
- 1 -қадам: Конституция
- 2 -қадам: NeoPixel LED көз шары
- 3 -қадам: сенсорлық блок
- 4 -қадам: Arduino коды
- 5 -қадам: операция
Бейне: Инфрақызыл сенсор көмегімен көз қозғалысын бақылау: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Мен инфрақызыл сенсорды көздің қозғалысын сезіну және жарықдиодты басқару үшін қолдандым.
Мен NeoPixel LED таспасымен көз алмасын жасадым.
1 -қадам: Конституция
Мен көзді бақылау үшін QTR - 1A екі сенсорды қолдандым. Arduino көмегімен сезу және жарықдиодты басқару.
компоненттер
- SparkFun Arduino Pro Mini 328 - 5В/16МГц
- Adafruit LiIon/LiPoly сөмкесі Pro Trinket/ItsyBitsy үшін қосымша
- LiPo батареясы
- NeoPixel жолағы
- QTR-1A шағылысу датчигі
2 -қадам: NeoPixel LED көз шары
NeoPixel LED таспасы қолданылады. Жарық диоды - 68 бірлік.
Жарық диодты тостағанға екі жақты таспамен бекітілген және сыммен бекітілген.
3 -қадам: сенсорлық блок
Мен көзді бақылау үшін QTR - 1A екі сенсорды қолдандым. QTR - 1A пластикалық параққа көздің енінен шамамен қашықтықта орналастырылады.
Сенсор бөлігі мен микроконтроллер бөлігі көзілдірікке сәйкесінше қысқышпен бекітілген.
4 -қадам: Arduino коды
Ирис бір сенсорға жақындағанда, шағылған жарық азаяды және сенсордың мәні артады. Керісінше, ирис алыстаған кезде шағылысқан жарық жоғарылайды және фото рефлектордың сенсорлық мәні төмендейді.
Жарық диодты көз қарашығының оң және сол жақ қозғалысы сенсордың бір мәнінің өсуі мен төмендеуін сезінеді және оны басқарады. Жыпылықтаған кезде сенсордың екі мәні де төмендейді, сондықтан егер сенсордың екі мәні бір мезгілде төмендесе, жарық диодты көз алмасының қабақтары төмендейді.
Мен келесі кітапхананы қолдандым.
- QTRsensors:
- Adafruit_NeoPixel:
#қосу #қосу
#NUM_SENSORS 2 анықтаңыз // қолданылған датчиктер саны#NUM_SAMPLES_PER_SENSOR 10 анықтаңыз // орташа#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; байт көзColor; int LR = 7; логикалық қақпақ = жалған; int cnt = 0;
// Қара көз L&R анимациясы қара LED [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, 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, 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, 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, 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, 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, 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, 68}};
// оқушы L&R анимациясы оқушыларға [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 анимациясы қабаққа = 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 ((белгісіз таңба ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); қол қойылмаған int sensorValues [NUM_SENSORS];
void blink (int eyelid, int LR) {if (қабақ! = 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 (blackLED [LR] , түс);}
// оқушы (uint16_t i = 0; i
led.setPixelColor (pupilLED [LR] , led. Color (0, 0, 66)); }
// қабақ (int i = 0; i <eyelidNum [қабақ]; i ++) {led.setPixelColor (қабақLED , 0); }} else if (қабақ == 8) {led.clear (); } led.show ();}
жарамсыз орнату () {
Serial.begin (115200); led.begin (); led.setBrightness (жарықтық); // Initial Brightness 40 led.show (); // Барлық пикселдерді 'off' color = 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 = (қос) сенсорValR / iniSensorValR;
Serial.print (rasioL);
Serial.print («»); Serial.println (rasioR);
if (rasioL> 0.985 && rasioR <0.985) {// right for (int i = LR; i <12; i ++) {blink (0, i); кешіктіру (40); LR = i; }} else if (rasioL 0.985) {// for (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) {// қалыпты // cnt ++; // қабақ = 0; if (LR <= 7) {for (int i = LR; i <= 7; i ++) {blink (0, i); кешіктіру (40); LR = i; }} else {for (int i = LR; i> = 7; i-) {жыпылықтау (0, i); кешіктіру (40); LR = i; }}}
// Бастапқы мәнді жаңарту, егер (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
5 -қадам: операция
Сенсормен қарашықтың сол және оң қозғалысын және жыпылықтауын анықтаңыз және көз алмасының жарық диодын басқарыңыз.
Ұсынылған:
Адамның көз қозғалысын бақылау: 6 қадам
Адам көзінің қозғалысын бақылау: Бұл жоба адам көзінің қозғалысын түсіруге бағытталған және оның қозғалысын көздің пішінінде орналасқан жарықдиодты шамдар жиынтығында көрсетеді. Жобаның бұл түрі робототехника саласында, әсіресе гума саласында көп қолданылуы мүмкін
Raspberry Pi - TMP007 инфрақызыл термопильді сенсор Python оқулығы: 4 қадам
Raspberry Pi - TMP007 инфрақызыл термопильді сенсор Python оқулығы: TMP007 - инфрақызыл термопиль сенсоры, ол онымен байланыссыз объектінің температурасын өлшейді. Сенсорлық өрісте объекті шығаратын инфрақызыл энергия сенсорға қосылған термопилмен жұтылады. Термопиля
NodeMCU көмегімен IoT негізіндегі топырақ ылғалдылығын бақылау мен бақылау жүйесі: 6 қадам
NodeMCU көмегімен IoT негізіндегі топырақтағы ылғалдылықты бақылау мен бақылау жүйесі: Бұл оқулықта біз ESP8266 WiFi модулін, яғни NodeMCU көмегімен IoT негізіндегі топырақ ылғалдылығын бақылау мен бақылау жүйесін енгізетін боламыз. Бұл жобаға қажет компоненттер: ESP8266 WiFi модулі- Amazon (334/- INR) реле модулі- Amazon (130/- INR
SMART MAKE HATC - 4x RTL -SDR көмегімен үйдегі әуе қозғалысын басқару (50 $): 7 қадам
SMART MAKE HATC - 4x RTL -SDR көмегімен үйдегі әуе қозғалысын басқару (50 $): төмен HATC тұжырымдамасының дәлелі - Үйдегі әуе қозғалысын басқару аппараттық жүйенің тұжырымдамасын дәлелдеу бойынша ұсыныс
Сыйымдылықты сезу және жарықдиодты шығару арқылы Tfcd 3D қозғалысын бақылау: 6 қадам (суреттермен)
Tfcd 3D қозғалысын сыйымдылықты өлшеу және жарықдиодты шығару арқылы бақылау: Бұл нұсқаулықта сыйымдылық сезу принципін қолдана отырып, 3D кеңістігінде қолдың қозғалысын қалай бақылауға болатыны түсіндірілген. Алюминийден жасалған зарядталған фольга мен қол арасындағы қашықтықты өзгерту арқылы конденсатордың сыйымдылығы өзгереді