【人体红外】
红外热释电运动传感器能检测运动的人或动物身上发出的红外线,输出开关信号,可以应用于各种需要检测运动人体的场合。传统的热释电红外传感器需要人体热释电红外探头、专用芯片和复杂的外围电路来实现,体积略大,电路复杂,可靠性略低。我们新推出的这款红外热释电运动传感器,专为Arduino设计,采用数字一体化集****体热释电红外探头,具有体积小、可靠性高、功耗低、外围电路简单等特点。
【引脚】
LED接扩展板D11,人体红外接扩展板D2。
【人体感应灯】
uPyCraft 程序
-
-
- #硬件平台:FireBeetle-ESP32
- #实验效果:按钮按下led灯点亮,按钮松开led灯熄灭。
- #硬件连接:本实验需要在IO27外接一个按钮模块,IO25外接一个LED模块。
- #下面的信息显示,对于当前版本,digitalRead是可用的。
- # button:IO2 IO4 IO5 IO10 IO12~19 IO23 IO25~27 IO34~36 IO39
- # led: IO0 IO4 IO10 IO12~19 IO21~23 IO25~27
-
-
- from machine import Pin
- import time
-
- button = Pin(25, Pin.IN) #将IO25/D2引脚定义为输入
- led = Pin(16, Pin.OUT) #将IO16/D11引脚定义为输出
-
- while True:
- led.value(button.value()) #获取按钮状态并赋给led引脚
- print(button.value())
- time.sleep(0.1)
复制代码
演示视频:
【人体感应音乐】
增加“带功放喇叭模块”,接在扩展板D10引脚。
带功放喇叭模块,基于高保真8002功放芯片制作,在输出音乐的同时,能够确保输出音频不失真。支持音量调节功能,可通过电位器调解输出音量大小。支持宽电压输入,模块可以工作在2~5.5V电压环境下,兼容3.3V和5V Arduino主控器。
uPyCraft程序代码:
-
- #硬件平台:FireBeetle-ESP32
- #实验效果:按钮按下led灯点亮,按钮松开led灯熄灭。
- #硬件连接:本实验需要在IO27外接一个按钮模块,IO25外接一个LED模块。
- #下面的信息显示,对于当前版本,digitalRead是可用的。
- # button:IO2 IO4 IO5 IO10 IO12~19 IO23 IO25~27 IO34~36 IO39
- # led: IO0 IO4 IO10 IO12~19 IO21~23 IO25~27
-
-
-
- from machine import DAC, Pin, PWM
- import math
- import time
- button = Pin(26, Pin.IN) #将IO26/D3引脚定义为输入
- led = Pin(16, Pin.OUT) #将IO16/D11引脚定义为输出
- #创建音乐旋律列表
- melody = [
- 330, 330, 330, 262, 330, 392, 196, 262, 196, 165, 220, 247, 233, 220, 196, 330, 392,
- 440, 349, 392, 330, 262, 294, 247, 262, 196, 165, 220, 247, 233, 220, 196, 330, 392,
- 440, 349, 392, 330, 262, 294, 247, 392, 370, 330, 311, 330, 208, 220, 262, 220, 262,
- 294, 392, 370, 330, 311, 330, 523, 523, 523, 392, 370, 330, 311, 330, 208, 220, 262,
- 220, 262, 294, 311, 294, 262, 262, 262, 262, 262, 294, 330, 262, 220, 196, 262, 262,
- 262, 262, 294, 330, 262, 262, 262, 262, 294, 330, 262, 220, 196]
-
- #创建音调持续时间列表
- noteDurations = [
- 8,4,4,8,4,2,2,
- 3,3,3,4,4,8,4,8,8,8,4,8,4,3,8,8,3,
- 3,3,3,4,4,8,4,8,8,8,4,8,4,3,8,8,2,
- 8,8,8,4,4,8,8,4,8,8,3,8,8,8,4,4,4,8,2,
- 8,8,8,4,4,8,8,4,8,8,3,3,3,1,
- 8,4,4,8,4,8,4,8,2,8,4,4,8,4,1,
- 8,4,4,8,4,8,4,8,2
- ]
-
-
- def mario(melody,noteDurations):
- music=PWM(Pin(17)) # 支持PWM的引脚 Pin(0)、Pin(2)、Pin(4)、Pin(5)、Pin(10)、Pin(12~19)、Pin(21)、Pin(22)、Pin(23)、Pin(25~27)
- music.duty(512) #占空比 0 ≤ duty ≤ 0x03FF (十进制:0 ≤ duty ≤ 1023)
- for i in range(len(melody)): #计算melody列表元素的数量并执行循环
- noteDuration = 800/noteDurations[i]
- music.freq(melody[i]*2) #频率
- time.sleep_ms(int(noteDuration * 1.30)) #为每个音调设定时间
- music.duty(0) #占空比
- music.deinit()
- while True:
- val=button.value()#获取按钮状态
-
- if val:
- led.value(1) #赋给led引脚
- mario(melody,noteDurations)
- else:
- led.value(0) #赋给led引脚
- time.sleep(0.1)
复制代码
演示视频:
|