物联网开发笔记(40)- 使用Micropython开发ESP32开发板之控制PS2摇杆操作8*8点阵屏移动LED灯

一、目的

        这一节我们学习如何使用我们的ESP32开发板来控制PS2摇杆移动点阵屏中的LED灯。

二、环境

        ESP32 + PS2摇杆 + 8x8点阵屏(1088AS) + Thonny IDE + 十几根杜邦线 + 200-300欧姆的电阻8个

大家学习此节前请先看一下上一节和24节。

接线方法:

三、代码

from machine import Pin, ADC
import time


# 点阵对应引脚,为每一行对象创建
row_1 = Pin(32, Pin.OUT)
row_2 = Pin(33, Pin.OUT)
row_3 = Pin(25, Pin.OUT)
row_4 = Pin(26, Pin.OUT)
row_5 = Pin(27, Pin.OUT)
row_6 = Pin(14, Pin.OUT)
row_7 = Pin(12, Pin.OUT)
row_8 = Pin(13, Pin.OUT)
row_list = [row_1, row_2, row_3, row_4, row_5, row_6, row_7, row_8]

# 点阵对应引脚,为每一列对象创建
col_1 = Pin(21, Pin.OUT)
col_2 = Pin(19, Pin.OUT)
col_3 = Pin(18, Pin.OUT)
col_4 = Pin(5, Pin.OUT)
col_5 = Pin(17, Pin.OUT)
col_6 = Pin(16, Pin.OUT)
col_7 = Pin(4, Pin.OUT)
col_8 = Pin(2, Pin.OUT)
col_list = [col_1, col_2, col_3, col_4, col_5, col_6, col_7, col_8]

# 设置行的高低电平
def set_power_row(i):
    for row in row_list:
        row.value(1)
    if 0 <= i <= 7:
        row_list[i].value(0)

# 设置列的高低电平
def set_earth_col(i):
    for col in col_list:
        col.value(0)
    if 0 <= i <= 7:
        col_list[i].value(1)

# 点亮对应坐标的LED
def set_col_row_led_light(row, col):  
    set_power_row(row)
    set_earth_col(col)


# PS2摇杆引脚
ps2_y = ADC(Pin(34))
ps2_y.atten(ADC.ATTN_11DB)  # 这里配置测量量程为3.3V
ps2_x = ADC(Pin(35))
ps2_x.atten(ADC.ATTN_11DB)  # 这里配置测量量程为3.3V

# PS2按下引脚
btn = Pin(15, Pin.IN)

# 默认点亮的LED灯
x = 0
y = 0

# 程序主循环
while True:
    val_y = ps2_y.read()  # 0-4095
    val_x = ps2_x.read()  # 0-4095
    # print("x:{} y:{} btn:{}".format(val_x, val_y, btn.value()))
    if val_y < 1600:
        y -= 1
        if y < 0:
            y = 0
    elif val_y > 2000:
        y += 1
        if y > 7:
            y = 7

    if val_x > 2000:
        x -= 1
        if x < 0:
            x = 0
    elif val_x < 1600:
        x += 1
        if x > 7:
            x = 7
    
    if(btn.value() == 0):  # 按键按下
        x = 0
        y = 0
        print("按键按下")
        set_col_row_led_light(x, y)  # 复位LED到左上角0,0
        
    print(x, y)  # 打印出坐标
    set_col_row_led_light(x, y)  # 点亮对应坐标的LED灯

    time.sleep(0.1)
    

四、演示效果

 

 

五、点阵屏和电阻购买

        我在淘宝搜到和我一样的点阵屏,链接如下:

https://item.taobao.com/item.htm?spm=a230r.1.14.1.4ca7349e6cad97&id=10359950033&ns=1&abbucket=8#detail

 

电阻购买链接:

 

https://detail.tmall.com/item.htm?spm=a1z10.3-b.w4011-23212844728.17.7cbe31e5hPmgtD&id=657132951345&rn=360c3233e50097727271922e9fd5eb81&abbucket=8

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都飘雪

您的1毛奖励是我创作的源源动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值