掌控板红外发射驱动——NEC编码

MicroPython相关代码、库、软件、工具
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

掌控板红外发射驱动——NEC编码

#1

帖子 shaoziyang »

原帖作者:chpczx 发表于 2019-7-24

手上有一个红外发射元件,想试一下是否能够用来遥控家里的风扇。弄了半天,信号好象是发射出去了,自己做的接收能正确接收。但家里的电扇时灵时不灵,最后发现,是因为没有加上重复码,加上重复码后,控制电扇就正常了。

对了,想知道红外信号是否发射了,可把手机调到摄像模式,红外发射头对着手机镜头,看到闪光,就是信号发送了。

Code: Select all

from mpython import *
from machine import *
import time


class IRsender:
    def __init__(self, pin):
        self.pwm = MPythonPin(pin, PinMode.PWM).pwm
        self.pwm.freq(38000)
        self.pwm.duty(0)

    def getbchar(self, num):
        cstring=bin(num)[2:]
        clen=len(cstring)
        cstring="0"*(8-clen)+cstring
        return cstring

    # 将信息转成信号时间的长短
    def lock(self, numlist):
        vlist = [[9000, 4500]]
        tlist = []
        for num in numlist:
            tlist +=list(self.getbchar(num))[::-1]
            tlist +=list(self.getbchar(255-num))[::-1]

        for i in range(len(tlist)):
            if tlist[i] == "0":
                vlist += [[560, 560]]
            else:
                vlist += [[560, 1690]]
        # 重复码
        vlist +=[[9000,2250],[560,9000],[2250,560],[9000,2250],[560,9000],[2250,560]]
        return vlist

    def send(self, numlist):
        vlist = self.lock(numlist)
        #print(vlist)
        for t in vlist:
           self.pwm.duty(600)
           time.sleep_us(t[0])
           self.pwm.duty(0)
           time.sleep_us(t[1])


if __name__ == "__main__":
    s = IRsender(1)
    while 1:
        # 调节家里美的电风扇风速
        s.send([1,7,7])
        sleep(2000)
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章