色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用紅外傳感器來(lái)感知眼球運(yùn)動(dòng)并控制LED

科技觀察員 ? 來(lái)源:hackster.io ? 作者:hackster.io ? 2022-04-07 17:30 ? 次閱讀

在本項(xiàng)目中,我使用紅外傳感器來(lái)感知眼球運(yùn)動(dòng)并控制LED

NeoPixelLED眼球

我使用了NeoPixelLED作為“眼球”部分。

pYYBAGJOrwmASFivAASYK7N3dJA756.png

LED用雙面膠帶固定在“碗”背上,并按以下順序接線。

pYYBAGJOrw6AD9ajAAMwKIHn-Ko358.png

眼動(dòng)追蹤

原理圖

poYBAGJOrxSAN6k-AAKtU6jzy-Q979.png

傳感器

我使用了兩個(gè)傳感器QTR-1A進(jìn)行眼動(dòng)追蹤。QTR-1A放置在塑料片上,之間距離大約是雙眼距離。

pYYBAGJOrxmAOomoAAXqZJGzYuA738.png

傳感器部分和微控制器部分分別用夾子固定在眼鏡上。

poYBAGJOrx6AWYY3AAQ8d8mysTo119.png

Arduino代碼

當(dāng)虹膜接近一個(gè)傳感器時(shí),反射光減少,傳感器值增加。相反,當(dāng)虹膜移開(kāi)時(shí),反射光增加,光反射器的傳感器值減小。

LED眼球瞳孔的左右運(yùn)動(dòng),感知一個(gè)傳感器值的增減,并對(duì)其進(jìn)行控制。

眨眼時(shí),兩個(gè)傳感器值都會(huì)減小,所以如果兩個(gè)傳感器值同時(shí)減小,LED“眼球”的外殼部分就會(huì)往下掉。

#include

#include
#define NUM_SENSORS 2 // number of sensors used
#define NUM_SAMPLES_PER_SENSOR 10 // averaging
#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 color;
int brightness = 40;
byte eyeColor;
int LR =7;
boolean lid = false;
int cnt = 0;
//Black eye L&R animation
int 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 animation
int 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 animation
int eyelid = 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((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){
//Pewter
for(uint16_t i=0; i led.setPixelColor(i, led.Color(66, 66, 66));
}
//Black eye
for(uint16_t i=0; i led.setPixelColor(blackLED[LR][i], color);
}
//pupil
for(uint16_t i=0; i led.setPixelColor(pupilLED[LR][i], led.Color(0, 0, 66));
}
//eyelid
for(int i=0; i < eyelidNum[eyelid]; i++) {
led.setPixelColor(eyelidLED[i], 0);
}
} else if (eyelid == 8){
led.clear();
}
led.show();
}
void setup() {
Serial.begin(115200);
led.begin();
led.setBrightness(brightness); // Initial Brightness 40
led.show(); // Initialize all pixels to 'off'
color = led.Color(0, 177, 55); //pupil color
delay(100);
qtra.read(sensorValues);
iniSensorValL = sensorValues[0];
iniSensorValR = sensorValues[1];
blink(eyelid, LR);
}
void loop() {
//QTR - 1A sensor value
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){ //right
for(int i = LR; i < 12; i++){
blink(0, i);
delay(40);
LR = i;
}
}else if(rasioL < 0.985 && rasioR > 0.985){ //left
for(int i=LR; i>2; i--){
blink(0, i);
delay(40);
LR = i;
}
}else if(lid == false && rasioL < 0.96 && rasioR < 0.96){ //Blinking close
for(int i = 1; i < 9; i++){
blink(i, LR);
delay(40);
lid = true;
}
}else if(lid == true && rasioL > 0.96 && rasioR > 0.96){ //Blinking open
for(int i = 8; i > 0; i--){
blink(i, LR);
delay(40);
lid = false;
}
}else if(lid == false && rasioL > 0.96 && rasioR > 0.96) { //normal
//cnt++;
//eyelid = 0;
if(LR <= 7){
for(int i=LR; i<=7; i++){
blink(0, i);
delay(40);
LR = i;
}
}else {
for(int i=LR; i>=7; i--){
blink(0, i);
delay(40);
LR = i;
}
}
Serial.println("通常時(shí)");
}
//Initial value refresh
if (cnt > 10){
iniSensorValL = sensorValL;
iniSensorValR = sensorValR;
cnt = 0;
}
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    242

    文章

    23252

    瀏覽量

    660574
  • 紅外傳感器
    +關(guān)注

    關(guān)注

    9

    文章

    519

    瀏覽量

    47559
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    紅外傳感器介紹

    整個(gè)系統(tǒng)癱瘓。本傳感器的優(yōu)點(diǎn)在于能夠設(shè)置多點(diǎn)采集,對(duì)射管陣列的間距和陣列數(shù)量可根據(jù)需求選取。紅外技術(shù)已經(jīng)眾所周知,這項(xiàng)技術(shù)在現(xiàn)代科技、國(guó)防科技和工農(nóng)業(yè)科技等領(lǐng)域得到了廣泛的應(yīng)用。紅外傳感系統(tǒng)是用
    發(fā)表于 03-02 12:27

    紅外傳感器分類、原理和安裝注意事項(xiàng)

    的窗口。  ·傳感器監(jiān)視區(qū)域內(nèi)應(yīng)避免出現(xiàn)小動(dòng)物,如不可避免,應(yīng)選用防小動(dòng)物透鏡。  微波、紅外雙鑒傳感器  微波、紅外雙鑒傳感器是被動(dòng)式
    發(fā)表于 11-08 15:43

    紅外傳感器的制作原理是什么?紅外傳感器主要有哪些應(yīng)用?

    紅外傳感器的制作原理是什么?紅外傳感器有哪些核心技術(shù)?紅外傳感器主要有哪些應(yīng)用?
    發(fā)表于 06-18 07:51

    使用被動(dòng)紅外傳感器進(jìn)行運(yùn)動(dòng)探測(cè)的設(shè)計(jì)考慮

    本文檔內(nèi)容介紹了使用被動(dòng)紅外傳感器進(jìn)行運(yùn)動(dòng)探測(cè)的設(shè)計(jì)考慮。
    發(fā)表于 09-14 18:39 ?2次下載
    使用被動(dòng)<b class='flag-5'>紅外傳感器</b>進(jìn)行<b class='flag-5'>運(yùn)動(dòng)</b>探測(cè)<b class='flag-5'>器</b>的設(shè)計(jì)考慮

    紅外傳感器工作原理_紅外傳感器的應(yīng)用

    本文首先介紹了紅外傳感器工作原理,其次介紹了紅外傳感器的種類,最后介紹了紅外傳感器的應(yīng)用。
    發(fā)表于 09-17 08:58 ?2.8w次閱讀

    如何使用紅外傳感器感應(yīng)眼睛的運(yùn)動(dòng)控制LED

    傳感器檢測(cè)瞳孔的左右移動(dòng)和眨眼,控制眼球LED
    的頭像 發(fā)表于 10-24 09:37 ?5635次閱讀
    如何使用<b class='flag-5'>紅外傳感器</b>感應(yīng)眼睛的<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>并</b><b class='flag-5'>控制</b><b class='flag-5'>LED</b>

    使用Arduino來(lái)控制來(lái)自運(yùn)動(dòng)傳感器LED

    電子發(fā)燒友網(wǎng)站提供《使用Arduino來(lái)控制來(lái)自運(yùn)動(dòng)傳感器LED.zip》資料免費(fèi)下載
    發(fā)表于 07-21 11:00 ?1次下載
    使用Arduino<b class='flag-5'>來(lái)</b><b class='flag-5'>控制</b>來(lái)自<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>傳感器</b>的<b class='flag-5'>LED</b>

    全面搞懂紅外傳感器紅外傳感器的原理、分類、構(gòu)造、應(yīng)用)

    導(dǎo)讀:紅外傳感器是很常用的一類傳感器,例如檢測(cè)溫度,很多時(shí)候就用紅外傳感器來(lái)測(cè)量。本內(nèi)容共113頁(yè)P(yáng)PT,包括了紅外傳感器的原理、分類、構(gòu)造
    的頭像 發(fā)表于 06-06 15:27 ?2.9w次閱讀
    全面搞懂<b class='flag-5'>紅外傳感器</b>(<b class='flag-5'>紅外傳感器</b>的原理、分類、構(gòu)造、應(yīng)用)

    一文讀懂紅外傳感器

    一文讀懂紅外傳感器 紅外傳感器是利用紅外熱成像技術(shù)感知測(cè)量物體表面溫度分布的傳感器。它能夠?qū)?/div>
    的頭像 發(fā)表于 04-07 15:21 ?2139次閱讀
    一文讀懂<b class='flag-5'>紅外傳感器</b>

    傳感器主要類型有哪些 紅外傳感器結(jié)構(gòu)及測(cè)量原理

    紅外傳感器傳感器中常見(jiàn)的一類,由于紅外傳感器是檢測(cè)紅外輻射的一類傳感器,而自然界中任何物體只要其穩(wěn)定高于絕對(duì)零度都將對(duì)外輻射
    發(fā)表于 08-05 09:29 ?3134次閱讀
    熱<b class='flag-5'>傳感器</b>主要類型有哪些 <b class='flag-5'>紅外傳感器</b>結(jié)構(gòu)及測(cè)量原理

    紅外傳感器的類型及應(yīng)用

    紅外傳感器是一類常用于檢測(cè)、測(cè)量和感應(yīng)目標(biāo)的電子器件,通過(guò)接收目標(biāo)發(fā)射的紅外輻射來(lái)實(shí)現(xiàn)各種功能。根據(jù)其工作原理和應(yīng)用領(lǐng)域的不同,紅外傳感器可以分為幾種主要類型。本文將對(duì)紅外傳感器的常見(jiàn)
    的頭像 發(fā)表于 11-21 18:12 ?4271次閱讀

    紅外傳感器的應(yīng)用場(chǎng)景有哪些

    紅外傳感器,可以實(shí)時(shí)監(jiān)測(cè)區(qū)域內(nèi)的人員活動(dòng),當(dāng)有人或物體進(jìn)入被監(jiān)控區(qū)域時(shí),傳感器會(huì)檢測(cè)到其體溫和運(yùn)動(dòng)通過(guò)警報(bào)或其他方式提醒安防人員。 自動(dòng)化控制
    的頭像 發(fā)表于 01-12 14:42 ?4334次閱讀

    紅外傳感器種類及功能

    的工作原理基于物體的紅外輻射。所有物體都會(huì)向周圍空間發(fā)射一定程度的熱能,其中包括紅外光譜范圍內(nèi)的輻射。傳感器利用紅外輻射的能量來(lái)感測(cè)物體的存
    的頭像 發(fā)表于 01-15 16:15 ?2266次閱讀

    人體紅外傳感器輸出信號(hào)有哪些

    人體紅外傳感器是一種廣泛應(yīng)用于安防、監(jiān)控、智能家居等領(lǐng)域的傳感器,其主要功能是檢測(cè)人體的存在和運(yùn)動(dòng)。本文將介紹人體紅外傳感器的輸出信號(hào)及其應(yīng)用。 人體
    的頭像 發(fā)表于 08-20 09:30 ?828次閱讀

    紅外傳感器和超聲波傳感器有什么區(qū)別

    是基于物體輻射的紅外能量來(lái)檢測(cè)物體的存在和特性。所有物體都會(huì)根據(jù)其溫度發(fā)射紅外輻射,紅外傳感器通過(guò)檢測(cè)這種輻射來(lái)感知物體。 被動(dòng)
    的頭像 發(fā)表于 09-19 16:44 ?1215次閱讀
    主站蜘蛛池模板: 日韩人妻少妇一区二区三区| 各种场合肉H校园1V1| 免费在线伦理片| 91女神娇喘| 暖暖视频 免费 高清 日本8| av在线观看地址| 日本精品卡一卡2卡3卡四卡三卡| 憋尿调教绝望之岛| 三级网址在线播放| 国产精品成人A蜜柚在线观看| 午夜日韩久久影院| 国产偷国产偷亚洲高清app| 亚洲另类中文字幕| 久久久97人妻无码精品蜜桃| 《乳色吐息》无删减版在线观看 | 亚洲人美女肛交真人全程| 经典WC女厕所里TV| 欲香欲色天天综合和网| 麻豆高清区在线| JAPANRCEP老熟妇乱子伦视频| 日本无码人妻丰满熟妇5G影院| 俄罗斯6一9泑女网站| 同桌上课把奶露出来给我玩| 国产视频a在线观看v| 一本到道免费线观看| 麻豆成人啪啪色婷婷久久| 9久高清在线不卡免费无吗视频| 青青草原成人| 国产精品禁18久久久夂久| 亚洲精品在看在线观看| 久久综合电影| ZZoo兽2皇| 午夜福利影院私人爽爽| 久久91精品国产91久久户| 最新影音先锋av资源台| 全免费午夜一级毛片| 国产精品人妻系列21P| 亚洲视频在线观看地址| 秘密影院久久综合亚洲综合| 趁老师睡着吃她的奶水| 小SAO货水真多把你CAO烂|