认识传感器:

热释电红外传感器在结构上引入场效应管,其目的在于完成阻抗变换。由于热释电元输出的是电荷信号,并不能直接使用,因而需要用电阻将其转换为电压形式。故引入的N沟道结型场效应管应接成共漏形式来完成阻抗变换。热释电红外传感器由传感探测元、干涉滤光片和场效应管匹配器三部分组成。设计时应将高热电材料制成一定厚度的薄片,并在它的两面镀上金属电极,然后加电对其进行极化,这样便制成了热释电探测元。

实现原理:

传感器检测到人体会输出高电平一段时间后变为低电平,通过单片机读取某一引脚的高低电平即可获取传感器的状态。

实现的关键代码:

pinMode(button1, INPUT);     //将引脚13设置为输出模式
val = digitalRead(inputPin); //读取13引脚的高低电平赋值给val变量

完整的程序代码:

/************************************* 项目:热释电红外检测+OLED* 现象:检测到人分别亮不同的颜色,并在LED显示状态***********************************/#include "U8glib.h"
#include "FastLED.h"            //程序需要使用FastLED库#define button1 13               //触摸按键接口定义
#define NUM_LEDS 8             // LED灯珠数量
#define LED_DT 2                // Arduino输出控制信号引脚
#define DATA_PIN 9              // Arduino输出控制信号引脚
#define LED_TYPE WS2812         // LED灯带型号
#define COLOR_ORDER GRB         // RGB灯珠中红色、绿色、蓝色LED的排列顺序
const int ledPin = 13;
const int inputPin = 8;
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
CRGB leds[NUM_LEDS];     // 建立光带ledsuint8_t max_bright = 128;       // LED亮度控制变量,可使用数值为 0 ~ 255, 数值越大则光带亮度越高
uint8_t openState = 0;
uint8_t c = 0;
uint8_t cishu = 0;
uint8_t val, flag=0;static unsigned char deng[] U8G_PROGMEM = {0x00,0x00,0x7E,0x3E,0x40,0x22,0x40,0x12,0x42,0x12,0x24,0x0A,0x28,0x12,0x10,0x12,
0x10,0x22,0x28,0x22,0x28,0x22,0x44,0x16,0x42,0x0A,0x01,0x02,0x00,0x02,0x00,0x02,/*"邓",0*/};
static unsigned char zhao[] U8G_PROGMEM = {0x00,0x00,0xBE,0x3F,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x29,0xBE,0x10,0x22,0x3F,
0x22,0x21,0x22,0x21,0x22,0x21,0x3E,0x3F,0x00,0x00,0x12,0x11,0x22,0x22,0x21,0x22,/*"照",1*/};
static unsigned char quan[] U8G_PROGMEM = {0x08,0x00,0xC8,0x3F,0x88,0x20,0x88,0x20,0xBF,0x20,0x08,0x11,0x0C,0x11,0x1C,0x11,
0x2A,0x0A,0x2A,0x0A,0x09,0x04,0x08,0x04,0x08,0x0A,0x08,0x11,0x88,0x20,0x68,0x40,/*"权",2*/};void button_State()
{
//Aif(digitalRead(button1)){ //检测按键是否按下delay(20); //延时去抖动if(digitalRead(button1)){//判断长短键openState++;}while(digitalRead(button1));}
}void draw0(void) {u8g.drawXBMP( 0, 16, 16, 16, deng);u8g.drawXBMP( 16, 16, 16, 16, zhao);u8g.drawXBMP( 32, 16, 16, 16, quan);u8g.setFont(u8g_font_unifont);if(val == LOW){u8g.drawStr( 0, 45, "bey");u8g.drawStr( 50, 29, "Bluck");}else{u8g.drawStr( 0, 45, "welcom");if(cishu == 1)u8g.drawStr( 50, 29, "Blue");else if(cishu == 2)u8g.drawStr( 50, 29, "Yellow");else if(cishu == 0)u8g.drawStr( 50, 29, "Red");
}//  else
//    u8g.drawStr( 50, 29, "Bluck");
//  u8g.drawStr( 0, 12, "190306238");//  u8g.setPrintPos(42,45);
//  u8g.print(c++);
}void draw1(void) {
//  u8g.drawXBMP( 0, 16, 16, 16, deng);
//  u8g.drawXBMP( 16, 16, 16, 16, zhao);
//  u8g.drawXBMP( 32, 16, 16, 16, quan);u8g.setFont(u8g_font_unifont);u8g.drawStr( 0, 45, "Numb:");u8g.setPrintPos(42,45);u8g.print(c++);
}void mode_0()
{u8g.firstPage();  do {draw0();} while( u8g.nextPage() );
}void mode_1()
{u8g.firstPage();  do {draw1();} while( u8g.nextPage() );
}void setup() {// put your setup code here, to run once:Serial.begin(115200);pinMode(button1, INPUT);pinMode(12, OUTPUT);digitalWrite(12, HIGH);LEDS.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);  // 初始化光带 FastLED.setBrightness(max_bright);                            // 设置光带亮度//将引脚13设置为输出模式
//  pinMode(ledPin, OUTPUT); //将引脚2设置为输入上拉模式//引脚2与外部按钮连接pinMode(inputPin, INPUT_PULLUP);
}void loop() {val = digitalRead(inputPin); if (val == HIGH&&flag==1){flag = 0;cishu++;if(cishu == 3)cishu = 0;if(cishu == 0){leds[0] = CRGB::Red;          // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠FastLED.show();delay(100);leds[1] = CRGB::Red;FastLED.show();}if(cishu == 1){leds[0] = CRGB::Blue;          // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠FastLED.show();delay(100);leds[1] = CRGB::Blue;FastLED.show();}if(cishu == 2){leds[0] = CRGB::Yellow;          // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠FastLED.show();delay(100);leds[1] = CRGB::Yellow;FastLED.show();}//    FastLED.show();                // 更新LED色彩}else if(val == LOW&&flag==0){flag = 1;leds[0] = CRGB::Black;          // 设置光带中第一个灯珠颜色为红色,leds[0]为第一个灯珠,leds[1]为第二个灯珠FastLED.show();                // 更新LED色彩delay(150);leds[1] = CRGB::Black;FastLED.show();}Serial.println(val);delay(100);
//  int sensorValue = analogRead(A0);
//  // print out the value you read:
//  Serial.println(sensorValue);button_State();switch (openState){case 0:
//      openState = 0;mode_0();     //break;case 1:mode_1();     //break;case 2:
//      mode_2();     //break;case 3:
//      mode_3();     //break;default:break;}if(openState == 3) openState = 0;
//  Serial.println(openState);
}

任务9 人体感应灯(arduino程序)相关推荐

  1. Arduino制作一个人体感应灯

    现在的很多家庭中都装有感应灯,人体感应灯比声控感应灯的优点是不会影响别人休息,安静. 接下来就是简单的制作过程. 1.需要的设备: 1.arduino Uno主控板一个: 2.人体红外传感器一个: 3 ...

  2. 基于Arduino UNO的楼道人体感应灯

    基于Arduino UNO的楼道人体感应灯 文章目录 前言 一.认识人体热释电红外传感器 二.模块连接图及程序 1.setup()初始化程序 2.loop()主函数 总结 前言 生活中经常看到一些自动 ...

  3. arduino人体感应灯(继电器模块和数字传感器)

    arduino人体感应灯(继电器模块和数字传感器) 所需材料:arduino控制板.继电器模块.人体热释电模块.杜邦线若干 int PIRpin=2; int RELAYpin=3;void setu ...

  4. 红外线人体感应灯arduino_第五章 自制一盏人体感应灯(人体红外传感器SR501)(Arduino边做边学:从点亮Led到物联网)...

    本系列文章为作者原创,未经作者书面同意,不得转载! 现在很多有老人的家庭都会在卫生间安装一种感应灯,当人进入卫生间时,灯就会发光,过一会儿就自动关闭了.这种灯比传统的声控灯要科学一下,尤其晚上,不会打 ...

  5. Mixly环境下Arduino实现人体感应灯

    再我们的生活中经常会有一种现象,夜晚当我们走近时灯就会亮,等我们走远时灯就熄灭了,今天我们来实现这个效果 需要用到的硬件 红外传感器.Arduino板.LED灯.跳线若干 1.物理接线示意图 2.代码 ...

  6. 和12岁小同志搞创客开发:手撕代码,做一款人体感应灯

    目录 1.传感器原理 2.代码实践 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_38106923/categ ...

  7. 单片机人体感应灯c语言,红外人体感应灯单片机方案

    近来,红外人体感应灯受到了居家人们关注和喜爱.为此,英锐恩推出了一款低成本红外人体感应灯单片机方案.红外人体感应灯可应用于走廊.床边.楼梯.衣柜等地方,提供柔和照明作用.人来即亮,人走即灭,不受强光影 ...

  8. 基于51控制的人体感应灯

    文章目录 前言 1 背景 2 可实现功能 3 制作材料 4 设计电路 5 设计原理 5.1 原理一(人体感应) 5.2 原理二(距离感应) 5.3 原理三(灯的亮度调节) 6 程序设计 7 成品模型展 ...

  9. ⑤电子产品拆解分析-人体感应灯

    ⑤电子产品拆解分析-人体感应灯 一.功能介绍 二.电路分析以及器件作用 三.原理图复现与学习 一.功能介绍 ①感应人体活动亮灯20S: ②Micro-USB进行锂电池充电: 二.电路分析以及器件作用 ...

  10. 微波感应模块电路图_关于人体感应灯,你不知道的“冷”知识

    早些年前,人体感应灯大多应用在小区楼道,公共洗手间等场所,"人来灯亮,人走灯灭",使他们在生活中极为常见. 近几年来,智能人体感应灯越来越多的应用到家庭生活中,给我们的生活带来很多 ...

最新文章

  1. PHP 实现代码复用的一个方法 traits新特性
  2. 完全卸载mongodb
  3. JQuery 总结(5) 总结各种小应用
  4. js根据应纳税所得额计算税金
  5. neo4j python 算法_图论与图学习(二):图算法
  6. matlab调用ansys-------1
  7. execve系统调用_Linux系统编程——进程替换:exec 函数族
  8. colab清理gpu缓存_安卓手机为什么会变卡?强制GPU渲染手机就能变流畅?你真的懂吗...
  9. 【python】BytesIO与串化
  10. 没了IDE,你的Java项目还能Run起来吗~
  11. 计算机网络安全防护教案,计算机网络安全基础教案.DOC
  12. 基于统计语言模型的分词方法
  13. 数据库中字段为CLOB的属性,在Java实体类中将CLOB转化为String
  14. 【转】js中forEach回调同异步问题
  15. 使用IDA静态分析解密《舰娘Collection》的lua脚本
  16. 关于SQL求同比、环比
  17. STM32 内核复位 与 系统复位 区别及程序实现
  18. 一个游戏程序员的学习资料【转】
  19. PA1--实现基础设施、表达式求值和监视点
  20. celery 停止_如何解决django-celery启动后迅速关闭

热门文章

  1. 知人知心-DISC的理解
  2. 编码规范:依据和实施办法
  3. Excel计算时间 活用 HOUR和MINUTE函数。计算出两个单元格的差,是几个小时
  4. (转)fiddler下载断点抓包解析
  5. 电子工程师,你真的了解Type-C吗?
  6. 进入华为软件 eNSP 学习的第一天
  7. CAD/CAM氧化锆义齿车床假牙雕铣加工高速精密电主轴
  8. 用友云强化人工智能AI技术,赋能中国企业
  9. 这三款不可错过的语音转文字软件你知道吗
  10. 端午节小记 捣鼓【OGame】页游