“红外接收”的版本间的差异

来自Labplus盛思维基百科
跳转至: 导航搜索
(创建页面,内容为“ == 概述 == UART通讯,接收红外遥控信号,能解析NEC协议数据。有效距离8米,波特率115200bps == 技术参数 == * 工作电压:3.3V or 5…”)
 
第1行: 第1行:
 
+
[[文件:黑色传感器最终版12.20-35.png|350px|缩略图|右]]
 
== 概述 ==
 
== 概述 ==
UART通讯,接收红外遥控信号,能解析NEC协议数据。有效距离8米,波特率115200bps
+
接收红外遥控信号,能解析NEC协议数据并UART输出数据。有效距离8米,波特率115200bps。
  
 
== 技术参数 ==
 
== 技术参数 ==
 
* 工作电压:3.3V or 5V
 
* 工作电压:3.3V or 5V
* I2C数字信号输出
+
* 通讯方式:UART
* 温度测量范围:-40~125℃
+
* 输出字节长度:1字节
* 温度测量精度:±0.3℃
+
* 有效距离:8米
* 湿度测量范围:0~100%RH
 
* 湿度测量精度:±3%RH
 
 
* 模块尺寸:24x46x7.5mm
 
* 模块尺寸:24x46x7.5mm
  
第17行: 第15行:
 
| <small>VCC</small> || <small>电源</small>
 
| <small>VCC</small> || <small>电源</small>
 
|-
 
|-
| <small>SDA</small> || <small>I2C数据</small>
+
| <small>RXD</small> || <small>串口接收</small>
 
|-
 
|-
| <small>SCL</small> || <small>I2C时钟</small>
+
| <small>TXD</small> || <small>串口发送</small>
 
|-
 
|-
 
| <small>GND</small> || <small>地</small>
 
| <small>GND</small> || <small>地</small>
第25行: 第23行:
  
 
== 使用教程 ==
 
== 使用教程 ==
=== <small>连接示意图</small> ===
 
 
=== <small>Arduino示例</small> ===
 
=== <small>Arduino示例</small> ===
 
=== <small>MicroPython示例</small> ===
 
=== <small>MicroPython示例</small> ===
 +
红外接收模块接收,数码管模块显示数据
 
<pre style="color:blue">
 
<pre style="color:blue">
 
from microbit import *
 
from microbit import *
  
def getTemp():
+
_TubeTab = [
   i2c.write(0x40,bytearray([0xE3]))
+
    0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,
   sleep(85)
+
    0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x00, 0x40]
   t=i2c.read(0x40,2)
+
 
   return -46.86+175.72*(t[0]*256+t[1])/65535
+
def tm1650Init():
 
+
   i2c.write(0x24, bytearray([0x01]))
    
+
def tm1650DisplayUint(x):
def getHumi():
+
  charTemp = [0, 0, 0, 0]
  i2c.write(0x40,bytearray([0xE5]))
+
   x = (x if x < 10000 else 9999)
   sleep(40)
+
   charTemp[3] = x%10
   t=i2c.read(0x40,2)
+
  charTemp[2] = (x//10)%10
  return -6+125*(t[0]*256+t[1])/65536
+
   charTemp[1] = (x//100)%10
 
+
  charTemp[0] = (x//1000)%10
 +
  if x < 1000:
 +
    charTemp[0] = 0x10
 +
    if x < 100:
 +
      charTemp[1] = 0x10
 +
      if x < 10:
 +
        charTemp[2] = 0x10
 +
   for i in range(0, 4):
 +
    i2c.write(0x34+i, bytearray([_TubeTab[charTemp[i]]]))
 +
def tm1650DisplayInt(x):
 +
  x = round(x)
 +
   if x >= 0:
 +
    tm1650DisplayUint(x)
 +
   else:
 +
    temp = (x if x > -999 else -999)
 +
    temp = abs(temp)
 +
    tm1650DisplayUint(temp)
 +
    if temp < 10:
 +
      i2c.write(0x36, bytearray([_TubeTab[0x11]]))
 +
    elif temp < 100:
 +
      i2c.write(0x35, bytearray([_TubeTab[0x11]]))
 +
    elif temp < 1000:
 +
      i2c.write(0x34, bytearray([_TubeTab[0x11]]))
 +
 
 +
display.off()
 +
tm1650Init()
 +
uart.init(baudrate=115200, bits=8, parity=None, stop=1, tx=pin1, rx=pin0)
 
while True:
 
while True:
     print('TEMP:',getTemp())  #获取温度并打印出来
+
     if uart.any():
    print('HUMi:',getHumi())  #获取湿度并打印出来
+
        _word=uart.read()
    sleep(500)
+
       
 +
        tm1650DisplayInt(_word[0])
 +
 
 +
 
 
</pre>
 
</pre>
  
 
=== <small>图形化示例</small> ===
 
=== <small>图形化示例</small> ===

2017年12月25日 (一) 09:58的版本

黑色传感器最终版12.20-35.png

概述

接收红外遥控信号,能解析NEC协议数据并UART输出数据。有效距离8米,波特率115200bps。

技术参数

  • 工作电压:3.3V or 5V
  • 通讯方式:UART
  • 输出字节长度:1字节
  • 有效距离:8米
  • 模块尺寸:24x46x7.5mm

引脚定义

VCC 电源
RXD 串口接收
TXD 串口发送
GND

使用教程

Arduino示例

MicroPython示例

红外接收模块接收,数码管模块显示数据

from microbit import *

_TubeTab = [
    0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 
    0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71, 0x00, 0x40]

def tm1650Init():
  i2c.write(0x24, bytearray([0x01]))
def tm1650DisplayUint(x):
  charTemp = [0, 0, 0, 0]
  x = (x if x < 10000 else 9999)
  charTemp[3] = x%10
  charTemp[2] = (x//10)%10
  charTemp[1] = (x//100)%10
  charTemp[0] = (x//1000)%10
  if x < 1000:
    charTemp[0] = 0x10
    if x < 100:
      charTemp[1] = 0x10
      if x < 10:
        charTemp[2] = 0x10
  for i in range(0, 4):
    i2c.write(0x34+i, bytearray([_TubeTab[charTemp[i]]]))
def tm1650DisplayInt(x):
  x = round(x)
  if x >= 0:
    tm1650DisplayUint(x)
  else:
    temp = (x if x > -999 else -999)
    temp = abs(temp)
    tm1650DisplayUint(temp)
    if temp < 10:
      i2c.write(0x36, bytearray([_TubeTab[0x11]]))
    elif temp < 100:
      i2c.write(0x35, bytearray([_TubeTab[0x11]]))
    elif temp < 1000:
      i2c.write(0x34, bytearray([_TubeTab[0x11]]))

display.off()
tm1650Init()
uart.init(baudrate=115200, bits=8, parity=None, stop=1, tx=pin1, rx=pin0)
while True:
    if uart.any():
        _word=uart.read()
        
        tm1650DisplayInt(_word[0])
   

图形化示例