手上有一个红外发射元件,想试一下是否能够用来遥控家里的风扇。弄了半天,信号好象是发射出去了,自己做的接收能正确接收。但家里的电扇时灵时不灵,最后发现,是因为没有加上重复码,加上重复码后,控制电扇就正常了。
对了,想知道红外信号是否发射了,可把手机调到摄像模式,红外发射头对着手机镜头,看到闪光,就是信号发送了。
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)