RP2-MICROPYTHON-CODE
矩阵键盘、薄膜键盘
from machine import Pin,Timer
import time
cols1=[6,4,2,0]
rows1=[8,10,12,14]#根据自己的接口来定
cols=[]
rows=[]
for i in range(4):
cols.append(Pin(cols1[i],Pin.OUT,value=1))
rows.append(Pin(rows1[i],Pin.IN,Pin.PULL_UP))
def checkButtons(a):
for i in range(4):
cols[i].value(0)
for j in range(4):
x=1-rows[j].value()
if x>0:print("S%d has pressed"%(j*4+i+1))
cols[i].value(1)
ti=Timer()
ti.init(period=100, mode=Timer.PERIODIC, callback=checkButtons)
while True:
#print("I'm running")
time.sleep(1)
红外遥控接收模块
Arduino
#include <IRremote.h>//调用红外遥控对应的库
int RECV_PIN = 3;//定义红外接口引脚
int ledpin = 10;//定义LED接口引脚
boolean ledstate = LOW;
/*利用库中的IRrecv函数创建一个红外线接收对象,用来接收红外线信号,
* 对象名称为irrecv,
* 括号中为用来接收红外信号的引脚*/
IRrecv irrecv(RECV_PIN);//创建一个红外线接收对象irrecv
decode_results results;//声明一个IRremote库函数独有的变量类型(decode_results),results存放红外解码结果,
void setup()
{
pinMode(ledpin, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver启动红外解码
}
void loop() {
if (irrecv.decode(&results)) {//核心!判断是否接收到红外码,若是,这个函数会返回true,并把红外解码的结果放在results里面
if(results.bits>0){
Serial.print("bits: ");
Serial.println(results.bits); // 红外线码元位数
Serial.print("IRCode: ");
Serial.println(results.value,HEX);/*串口监视器查看红外解码结果(HEX十六进制)
results.value 是unsigned long型,头文件有介绍*/
}
irrecv.resume(); // 在解码一个红外线信号之后,要运行resume()函数,这样才会持续接收下一组信号
}
}
micropython
from ir_rx.test import test
test(0)
这其实调用了一个demo。需要下载相应的库。
https://github.com/peterhinch/micropython_ir
将ir_rx文件夹复制到单片机里面
版权声明:本文为wmin0920原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。