在宿舍刷剧时经常会贪在凳子上懒得调音量,看着实验室吃灰的8266,故有了想法做一个遥控控制音量的东东。
arduino比较简单,直接给出代码。
#include <Arduino.h> #include <IRremoteESP8266.h> #include <IRrecv.h> #include <IRutils.h> int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(115200); // 假如启动过程出现问题,提示用户启动失败 Serial.println("Enabling IRin"); irrecv.enableIRIn(); // Start the receiver Serial.println("Enabled IRin"); } void loop() { if (irrecv.decode(&results)) { //检查是否接收到红外遥控信号 serialPrintUint64(results.value, HEX); irrecv.resume(); //接收下一指令 } delay(100); }
其中需要安装一个红外库:
接线图如下:
其中红外左引脚为信号输出,接到8266的D4引脚
采用买套件送的红外遥控
如图所示,当收到信号后,led会闪烁。
import pyautogui #pyautogui.press('volumeup') #调大音量 import serial #导入模块 try: portx="COM6" bps=115200 #超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒) timex=None ser=serial.Serial(portx,bps,timeout=timex) #print("串口详情参数:", ser) #十六进制的发送 #result=ser.write(chr(0x06).encode("utf-8"))#写数据 #print("写总字节数:",result) #十六进制的读取 while 1: #print(ser.read().hex())#读一个字节 sign = ser.read(6) print(sign) # 读一个字节 if sign == b'FFA857': print("音量加") pyautogui.press('volumeup') if sign == b'FFE01F': print("音量减") pyautogui.press('volumedown') ser.flushInput() ser.close()#关闭串口 except Exception as e: print("---异常---:",e)
控制部分采用pyautogui,模仿真实按键按下,当收到指定信号后,调高或调低音量。
就这样。