0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用红外传感器感应眼睛的运动并控制LED

454398 来源:wv 2019-10-24 09:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:构造

如何使用红外传感器感应眼睛的运动并控制LED

我使用了两个传感器QTR-1A进行眼睛跟踪。

组件

SparkFun Arduino Pro Mini 328-5V/16MHz

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

LiPo电池

NeoPixel条

QTR-1A反射传感器

步骤2:NeoPixel LED眼球

使用NeoPixel LED胶带。 LED是68个单位。

LED用双面胶带固定在碗上并进行了布线。

步骤3:传感器单元

我使用了两个传感器QTR-1A进行眼睛跟踪。将QTR-1A放在塑料片上,其间距约为眼睛的宽度。

分别用夹子将传感器部分和微控制器部分固定到眼镜上。

第4步:Arduino代码

当虹膜接近一个传感器时,反射光会减少,传感器值会增加。相反,当虹膜移开时,反射光增加,而光反射器的传感器值减小。

LED眼球瞳孔的左右移动感测到一个传感器值的增大和减小。并控制它。闪烁时,两个传感器的值都会减小,因此,如果两个传感器的值同时减小,LED眼球的眼睑就会下降。

我使用了以下库。

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步:操作

用传感器检测瞳孔的左右移动和眨眼,并控制眼球LED。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    243

    文章

    24434

    浏览量

    687362
  • 红外传感器
    +关注

    关注

    9

    文章

    560

    浏览量

    49121
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ‌STHS34PF80红外传感器技术解析与应用指南

    STMicroelectronics STHS34PF80高灵敏度红外传感器是一款非制冷、出厂校准的红外传感器,工作波长范围为5µm至20µm。STHS34PF80传感器设计用于精确检测其视场内物体的绝对温度。该信息由ASIC进
    的头像 发表于 10-29 14:47 282次阅读
    ‌STHS34PF80<b class='flag-5'>红外传感器</b>技术解析与应用指南

    红外传感器技术:微测辐射热计解析

    微测辐射热计(Microbolometer)是一种基于MEMS工艺制造的非制冷型红外传感器,通过探测物体辐射的红外线实现温度测量与热成像。其核心原理是利用热敏材料(如氧化钒、多晶硅)的电阻随温度变化的特性,将红外辐射能转换为电信
    的头像 发表于 10-22 09:11 671次阅读
    <b class='flag-5'>红外传感器</b>技术:微测辐射热计解析

    QXRS012 热释电红外人体感应处理

    一、QXRS012 是一款低功耗的热释电红外传感信号处理芯片,可与红外传感器单元配合实现对负 载的简单感应 ON/OFF 和延时功能控制;同时芯片内置高精度稳定 LDO 2.6V 或
    的头像 发表于 09-19 15:36 309次阅读
    QXRS012 热释电<b class='flag-5'>红外</b>人体<b class='flag-5'>感应</b>处理<b class='flag-5'>器</b>

    #从“吹干”到“恒温”:一颗红外传感器如何重新定义高速电吹风?

    红外传感器
    iczoom
    发布于 :2025年09月04日 17:12:39

    #红外传感器卡脖子在哪?工程师如何破局?都在卷什么?

    红外传感器
    iczoom
    发布于 :2025年09月03日 17:33:37

    #红外传感器葵花宝典:热模型“收敛”,测温才能准

    红外传感器
    iczoom
    发布于 :2025年09月02日 17:15:26

    雷达传感器红外传感器的区别

    雷达传感器红外传感器都可以进行测距,能够辅助设备进行“感知世界”的行为,虽然说功能看起来是一样的,但是实现的方式却是大有不同,红外测距是通过发射红外线,雷达测距是通过发射电磁波,从本
    的头像 发表于 08-28 17:48 726次阅读

    华盛昌高精度红外校正源在红外传感器领域的应用

    红外传感器技术正迈向更高精度与可靠性的新纪元,其中高精度红外校正源扮演着关键角色。作为红外焦平面阵列(IRFPA)性能保障的核心,其应用已成为突破现有探测极限、实现精准测量的革命性进展。以下将探讨华
    的头像 发表于 07-31 10:23 651次阅读

    揭秘中波红外传感器:穿透迷雾的“热力之眼”

    )宛如一颗独特的星辰,其辐射特性与物质相互作用时产生的奇妙现象,孕育出中波红外传感器这一科技瑰宝。它如同人类感知世界的“热力之眼”,在军事侦察、工业检测、环境监测等领域发挥着不可替代的作用。 一、技术内核:光电与
    的头像 发表于 05-11 16:53 542次阅读
    揭秘中波<b class='flag-5'>红外传感器</b>:穿透迷雾的“热力之眼”

    迪米科技·温奶/摇奶红外传感器测温应用--爱不“触碰”,温更精准

    使用迪米科技非接触式红外传感器可实现高精度测温、实时反馈以及智能温控等功能,为温奶/摇奶注入了全新的智能化温控解决方案。
    的头像 发表于 05-09 16:41 573次阅读
    迪米科技·温奶<b class='flag-5'>器</b>/摇奶<b class='flag-5'>器</b><b class='flag-5'>红外传感器</b>测温应用--爱不“触碰”,温更精准

    冷媒(制冷剂)泄漏监测中热导传感器(TCD)与非分散红外传感器(NDIR)的对比分析

    冷媒泄漏监测的传感器到底是选择热导原理,还是红外原理的?在冷媒泄漏监测中,选择热导气体传感器(TCD)还是红外传感器(NDIR)通常基于成本、环境适应性、维护需求等实际因素。冷媒泄漏监
    的头像 发表于 05-07 14:17 937次阅读
    冷媒(制冷剂)泄漏监测中热导<b class='flag-5'>传感器</b>(TCD)与非分散<b class='flag-5'>红外传感器</b>(NDIR)的对比分析

    红外传感器技术分类:热释电、热电堆与微测辐射热计详解

    上一篇文章讲了红外传感器的工作原理及应用,红外传感器利用入射红外辐射引起传感器的温度变化,进而使某些物理参数变化来进行目标探测。红外传感器
    的头像 发表于 03-18 17:00 1258次阅读
    <b class='flag-5'>红外传感器</b>技术分类:热释电、热电堆与微测辐射热计详解

    热释电红外传感器探测物体的工作原理及适应性应用

    热释电红外传感器凭借其独特的工作原理和广泛的应用领域,成为了智能技术中不可或缺的一部分广泛应用于安全监控、自动化控制和环境管理等领域。其核心原理是通过探测物体发射的红外辐射来识别温度变化,从而实现对环境的感知和响应。
    的头像 发表于 03-14 17:22 1188次阅读
    热释电<b class='flag-5'>红外传感器</b>探测物体的工作原理及适应性应用

    2025年红外传感器发展现状:科技创新与市场扩展的交汇点

    红外传感器,作为一种重要的光电检测器件,近年来在全球范围内得到了广泛的应用和推广。随着科技的持续进步,红外传感器技术也在不断突破,推动了市场的快速发展。在2025年,这一领域的发展现状展现出
    的头像 发表于 02-20 18:13 1313次阅读

    红外传感器原理与应用

    红外传感器作为现代科技的重要组成部分,凭借其非接触式测量、高灵敏度以及广泛的应用领域,在多个行业发挥着关键作用。本文将深入探讨红外传感器的核心原理、多样化的分类、丰富的应用场景以及科学的选型技巧,为
    的头像 发表于 01-23 18:02 1970次阅读
    <b class='flag-5'>红外传感器</b>原理与应用