RP2-MICROPYTHON-CODE

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版权协议,转载请附上原文出处链接和本声明。