一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

454398 ? 來(lái)源:wv ? 2019-10-24 09:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

第1步:構(gòu)造

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

我使用了兩個(gè)傳感器QTR-1A進(jìn)行眼睛跟蹤。

組件

SparkFun Arduino Pro Mini 328-5V/16MHz

Adafruit LiIon/LiPoly背包Pro Trinket/ItsyBitsy附加組件

LiPo電池

NeoPixel條

QTR-1A反射傳感器

步驟2:NeoPixel LED眼球

使用NeoPixel LED膠帶。 LED是68個(gè)單位。

LED用雙面膠帶固定在碗上并進(jìn)行了布線。

步驟3:傳感器單元

我使用了兩個(gè)傳感器QTR-1A進(jìn)行眼睛跟蹤。將QTR-1A放在塑料片上,其間距約為眼睛的寬度。

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

第4步:Arduino代碼

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

LED眼球瞳孔的左右移動(dòng)感測(cè)到一個(gè)傳感器值的增大和減小。并控制它。閃爍時(shí),兩個(gè)傳感器的值都會(huì)減小,因此,如果兩個(gè)傳感器的值同時(shí)減小,LED眼球的眼瞼就會(huì)下降。

我使用了以下庫(kù)。

QTRsensors:https://github.com/pololu/qtr-sensors-arduino

Adafruit_NeoPixel:https://github.com/adafruit/Adafruit_NeoPixel

#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; iled.setPixelColor(i, led.Color(66, 66, 66));

}

//Black eye

for(uint16_t i=0; iled.setPixelColor(blackLED[LR][i], color);

}

//pupil

for(uint16_t i=0; iled.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;

}

}

}

//Initial value refresh

if (cnt 》 10){

iniSensorValL = sensorValL;

iniSensorValR = sensorValR;

cnt = 0;

}

}

第5步:操作

用傳感器檢測(cè)瞳孔的左右移動(dòng)和眨眼,并控制眼球LED。

聲明:本文內(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

    文章

    23834

    瀏覽量

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

    關(guān)注

    9

    文章

    544

    瀏覽量

    48358
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    紅外傳感器技術(shù)分類(lèi):熱釋電、熱電堆與微測(cè)輻射熱計(jì)詳解

    上一篇文章講了紅外傳感器的工作原理及應(yīng)用,紅外傳感器利用入射紅外輻射引起傳感器的溫度變化,進(jìn)而使某些物理參數(shù)變化來(lái)進(jìn)行目標(biāo)探測(cè)。紅外傳感器
    的頭像 發(fā)表于 03-18 17:00 ?691次閱讀
    <b class='flag-5'>紅外傳感器</b>技術(shù)分類(lèi):熱釋電、熱電堆與微測(cè)輻射熱計(jì)詳解

    紅外傳感器原理與應(yīng)用

    紅外傳感器作為現(xiàn)代科技的重要組成部分,憑借其非接觸式測(cè)量、高靈敏度以及廣泛的應(yīng)用領(lǐng)域,在多個(gè)行業(yè)發(fā)揮著關(guān)鍵作用。本文將深入探討紅外傳感器的核心原理、多樣化的分類(lèi)、豐富的應(yīng)用場(chǎng)景以及科學(xué)的選型技巧,為
    的頭像 發(fā)表于 01-23 18:02 ?1297次閱讀
    <b class='flag-5'>紅外傳感器</b>原理與應(yīng)用

    CW32模塊使用 人體紅外傳感器

    人體紅外感應(yīng)模塊使用的是熱釋電紅外傳感器,它是利用溫度變化的特征來(lái)探測(cè)紅外線的輻射,利用雙靈敏元互補(bǔ)的方法抑制溫度變化產(chǎn)生的干擾,提高了傳感器的工作穩(wěn)定性。產(chǎn)品應(yīng)用廣泛,例如:保險(xiǎn)裝置
    的頭像 發(fā)表于 12-05 15:09 ?632次閱讀
    CW32模塊使用 人體<b class='flag-5'>紅外傳感器</b>

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

    紅外傳感器的工作原理 紅外傳感器的工作原理基于紅外輻射的特性。紅外輻射是電磁波譜中波長(zhǎng)介于可見(jiàn)光和微波之間的部分,通常在700納米至1毫米之間。所有物體都會(huì)根據(jù)其溫度發(fā)射
    的頭像 發(fā)表于 11-19 15:30 ?3434次閱讀

    物聯(lián)網(wǎng)系統(tǒng)中常見(jiàn)的非接觸人體感應(yīng)方案_紅外傳感器詳解

    物聯(lián)網(wǎng)系統(tǒng)中為什么要使用 紅外傳感器 物聯(lián)網(wǎng)系統(tǒng)中使用紅外傳感器的原因主要基于紅外傳感器的獨(dú)特優(yōu)勢(shì)及其在多個(gè)應(yīng)用場(chǎng)景中的實(shí)用性。以下是詳細(xì)的分析: 紅外傳感器的獨(dú)特優(yōu)勢(shì) 非接觸式測(cè)量:
    的頭像 發(fā)表于 09-24 11:38 ?1194次閱讀
    物聯(lián)網(wǎng)系統(tǒng)中常見(jiàn)的非接觸人體<b class='flag-5'>感應(yīng)</b>方案_<b class='flag-5'>紅外傳感器</b>詳解

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

    是基于物體輻射的紅外能量來(lái)檢測(cè)物體的存在和特性。所有物體都會(huì)根據(jù)其溫度發(fā)射紅外輻射,紅外傳感器通過(guò)檢測(cè)這種輻射來(lái)感知物體。 被動(dòng)紅外傳感器 :這類(lèi)
    的頭像 發(fā)表于 09-19 16:44 ?2886次閱讀

    熱釋電紅外傳感器的基本特性和應(yīng)用領(lǐng)域

    熱釋電紅外傳感器是一種基于熱釋電效應(yīng)的紅外傳感器。熱釋電效應(yīng)是指某些晶體在溫度變化時(shí),其內(nèi)部的正負(fù)電荷中心會(huì)發(fā)生相對(duì)位移,從而產(chǎn)生電勢(shì)差或電流的現(xiàn)象。這種效應(yīng)是熱釋電紅外傳感器工作的
    的頭像 發(fā)表于 08-27 16:24 ?3973次閱讀

    紅外傳感器的主要優(yōu)點(diǎn)有哪些

    一、引言 紅外傳感器是一種利用紅外輻射進(jìn)行檢測(cè)的傳感器,它們可以檢測(cè)物體發(fā)出的紅外輻射,或者反射的紅外輻射。
    的頭像 發(fā)表于 08-20 09:31 ?2068次閱讀

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

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

    人體紅外傳感器的數(shù)據(jù)屬于什么量

    人體紅外傳感器的數(shù)據(jù)主要屬于 開(kāi)關(guān)量 。下面將從幾個(gè)方面介紹。 一、人體紅外傳感器的工作原理 人體紅外傳感器是一種利用紅外感應(yīng)原理來(lái)檢測(cè)人
    的頭像 發(fā)表于 08-20 09:28 ?1342次閱讀

    人體紅外傳感器的數(shù)據(jù)類(lèi)型及工作原理

    紅外傳感器可以測(cè)量人體表面的溫度。人體表面的溫度與人體內(nèi)部的溫度有一定的關(guān)系,因此可以通過(guò)測(cè)量人體表面的溫度來(lái)推斷人體內(nèi)部的溫度。溫度數(shù)據(jù)通常以攝氏度(℃)或華氏度(℉)為單位。 1.2 運(yùn)動(dòng)數(shù)據(jù) 人體紅外傳感器可以檢測(cè)人
    的頭像 發(fā)表于 08-20 09:18 ?2319次閱讀

    人體紅外傳感器的作用是什么

    人體紅外傳感器是一種利用人體發(fā)出的紅外輻射來(lái)檢測(cè)人體存在的傳感器。它在許多領(lǐng)域都有廣泛的應(yīng)用,如安全監(jiān)控、智能照明、自動(dòng)門(mén)禁等。以下是關(guān)于人體紅外傳感器的介紹: 人體
    的頭像 發(fā)表于 08-20 09:16 ?2912次閱讀

    人體紅外傳感器能穿透玻璃嗎為什么

    人體紅外傳感器是一種利用紅外輻射原理來(lái)檢測(cè)人體存在與否的傳感器。它通過(guò)檢測(cè)人體發(fā)出的紅外輻射來(lái)實(shí)現(xiàn)對(duì)人體的檢測(cè)。然而,人體紅外傳感器并不能穿
    的頭像 發(fā)表于 08-20 09:15 ?3525次閱讀

    可以檢測(cè)人體存在和移動(dòng)的紅外傳感器來(lái)了

    MEMS熱絕緣柵,通過(guò)意法半導(dǎo)體先進(jìn)的MEMS技術(shù)實(shí)現(xiàn)。本次M5Stack推出的TMOSPIRUNIT紅外傳感器采用STHS34PF80方案,可以通過(guò)感應(yīng)物體的紅
    的頭像 發(fā)表于 07-27 08:31 ?1902次閱讀
    可以檢測(cè)人體存在和移動(dòng)的<b class='flag-5'>紅外傳感器</b>來(lái)了

    紅外傳感器技術(shù)深度解析:原理、分類(lèi)、應(yīng)用與選型策略

    ? 紅外傳感器作為現(xiàn)代科技的重要組成部分,憑借其非接觸式測(cè)量、高靈敏度以及廣泛的應(yīng)用領(lǐng)域,在多個(gè)行業(yè)發(fā)揮著關(guān)鍵作用。本文將深入探討紅外傳感器的核心原理、多樣化的分類(lèi)、豐富的應(yīng)用場(chǎng)景以及科學(xué)的選型
    的頭像 發(fā)表于 07-25 08:45 ?3458次閱讀
    <b class='flag-5'>紅外傳感器</b>技術(shù)深度解析:原理、分類(lèi)、應(yīng)用與選型策略