ESP32(MicroPython) 矩阵键盘电子琴+RGB灯

news/2024/12/23 8:37:11/

7f9ab7447f7a4a26ac88bf19db5ee206.jpg

 本程序相比上一个矩阵键盘电子琴程序增加了一个矩阵键盘,并把三个矩阵键盘的同一行相连,扫描周期缩短到40ms。增加RGB灯带,每个周期刷新一个灯(随机颜色)。

代码如下

#导入Pin模块
from machine import Pin
import time
from machine import PWM
from neopixel import NeoPixel
import random
#扬声器接13脚和GND,矩阵键盘接线如下
# 创建行的对象
row1 = Pin(12, Pin.OUT)
row2 = Pin(14, Pin.OUT)
row3 = Pin(27, Pin.OUT)
row4 = Pin(26, Pin.OUT)
row_list = [row1, row2, row3, row4]  # 将创建的行对象放到list里面
 
# 创建列的对象
col1 = Pin(15, Pin.IN, Pin.PULL_DOWN)
col2 = Pin(2, Pin.IN, Pin.PULL_DOWN)
col3 = Pin(4, Pin.IN, Pin.PULL_DOWN)
col4 = Pin(16, Pin.IN, Pin.PULL_DOWN)
col5 = Pin(17, Pin.IN, Pin.PULL_DOWN)
col6 = Pin(5, Pin.IN, Pin.PULL_DOWN)
col7 = Pin(18, Pin.IN, Pin.PULL_DOWN)
col8 = Pin(19, Pin.IN, Pin.PULL_DOWN)
col9 = Pin(25, Pin.IN, Pin.PULL_DOWN)
col10 = Pin(33, Pin.IN, Pin.PULL_DOWN)
col11 = Pin(32, Pin.IN, Pin.PULL_DOWN)
col12 = Pin(21, Pin.IN, Pin.PULL_DOWN)
col_list = [col1, col2, col3, col4,col5, col6, col7, col8,col9, col10, col11, col12]  # 将创建的列对象放到list里面
 
pin=22
rgb_num=30
rgb_led=NeoPixel(Pin(pin,Pin.OUT),rgb_num) 
d=0
#程序入口
while True:
    e=10
    d+=1
    if d==30:
        d=0
    a=random.randint(0,255)
    b=random.randint(0,255)
    c=random.randint(0,255)
    rgb_led[d]=(a, b, c)
    rgb_led.write()
    for i, row in enumerate(row_list):  # 遍历序号和对应的值 # 目的:只让某一行通电,其他的行都是0
        for temp in row_list:  # 遍历行对象
            temp.value(0)  # 给每一个行对象赋值
        row.value(1)
        time.sleep_ms(10)  # 键盘通电后,延迟一小会
        for j, col in enumerate(col_list):  # 遍历序号和对应的值
            if col.value() == 1:   # 给每一个列对象赋值
               if i==0 and j==0:
                   e=22
               elif i==1 and j==0:
                   e=23
               elif i==2 and j==0:
                   e=24
               elif i==3 and j==0:
                   e=25
               elif i==0 and j==1:
                   e=26
               elif i==1 and j==1:
                   e=27
               elif i==2 and j==1:
                   e=31
               elif i==3 and j==1:
                   e=32
               elif i==0 and j==2:
                   e=33
               elif i==1 and j==2:
                   e=34
               elif i==2 and j==2:
                   e=35
               elif i==3 and j==2:
                   e=36
               elif i==0 and j==3:
                   e=37
               elif i==1 and j==3:
                   e=41
               elif i==2 and j==3:
                   e=42
               elif i==3 and j==3:
                   e=43
               elif i==0 and j==4:
                   e=44
               elif i==1 and j==4:
                   e=45
               elif i==2 and j==4:
                   e=46
               elif i==3 and j==4:
                   e=47
               elif i==0 and j==5:
                   e=51
               elif i==1 and j==5:
                   e=52
               elif i==2 and j==5:
                   e=53
               elif i==3 and j==5:
                   e=54
               elif i==0 and j==6:
                   e=55
               elif i==1 and j==6:
                   e=56
               elif i==2 and j==6:
                   e=57
               elif i==3 and j==6:
                   e=61
               elif i==0 and j==7:
                   e=62
               elif i==1 and j==7:
                   e=63
               elif i==2 and j==7:
                   e=64
               elif i==3 and j==7:
                   e=65
               elif i==0 and j==8:
                   e=66
               elif i==1 and j==8:
                   e=67
               elif i==2 and j==8:
                   e=71
               elif i==3 and j==8:
                   e=72
               elif i==0 and j==9:
                   e=73
               elif i==1 and j==9:
                   e=74
               elif i==2 and j==9:
                   e=75
               elif i==3 and j==9:
                   e=76
               elif i==0 and j==10:
                   e=77
               elif i==1 and j==10:
                   e=81
               elif i==2 and j==10:
                   e=82
               elif i==3 and j==10:
                   e=83
               elif i==0 and j==11:
                   e=84
               elif i==1 and j==11:
                   e=85
               elif i==2 and j==11:
                   e=86
               elif i==3 and j==11:
                   e=87        
    a=0
    t=0
    if e%10==1 :
      a=4186
    elif e%10==2 :
      a=4698
    elif e%10==3 :
      a=5274
    elif e%10==4 :
      a=5587
    elif e%10==5 :
      a=6272
    elif e%10==6 :
      a=7040
    elif e%10==7 :
      a=7901
    if e//10<9 :
      t=e//10
      f=9-t
      t=2**f
      a=round(a/t)
    if e<11 :
        a=1
    beep=PWM(Pin(13),freq=a,duty=512)
            
 


http://www.ppmy.cn/news/426078.html

相关文章

电子美图高清系列漫画分享给大家欣赏!

电子漫画 搞电子的大家或多或少都会收集了电子漫画和表情到&#xff0c;小编找了一份比较全高清无码的电子美图漫画&#xff0c;供大家欣赏&#xff0c;提供下面三种下载方式&#xff01; 1、GitHub&#xff1a;https://github.com/chiphome/Electronic-Comics 2、Gitee&#x…

模拟电影胶片、梦幻系列、喜怒无常的电影胶片、Lightroom预设合集【61】

工欲善其事必先利其器&#xff01;&#xff01; 今天我们为你精选了 精选3套LR调色预设 01 模拟电影胶片Lightroom预设 精选26款高级效果 02 梦幻系列Lightroom预设 精选38款高级效果 03 喜怒无常的电影胶片LR预设 手机版LR预设 精选25款高级效果 是不是很棒的资源呢 …

实验吧-隐写-大雄和哆啦A梦 -WP

链接&#xff1a;http://ctf5.shiyanbar.com/stega/base.jpg 老套路 binwalk 发现里面有一个RAR压缩文件 通过dd命令把它分离出来 dd ifbase.jpg of1.rar bs1 skip38906 发现解压需要密码 继续找线索 用winhex打开rar文件 结合题目说 联想到 把shiyanbar 用base64加密 c2hpe…

2200p如何连接wifi打印_2200p如何连接wifi打印_惠普无线打印机如何使用 惠普无线打印机如何连接手机【详解】......

惠普 打印机 品牌目前市场销量是很不错的&#xff0c;打印机的系列也是很丰富&#xff0c;其中部分打印机还具备无线打印功能。很多家庭现如今购买的时候&#xff0c;都会选择惠普打印机。那么大家知道 惠普无线打印机怎么用 吗&#xff1f;下面来介绍一下 惠普无线打印机怎么连…

php图片美颜,Mac_Mac如何使用Photo Booth拍摄照片拍摄好玩好看的相片,  我们经常会使用美颜相机 - phpStudy...

Mac如何使用Photo Booth拍摄照片拍摄好玩好看的相片 我们经常会使用美颜相机等拍摄一些好玩好看的相片&#xff0c;在MAC系统中也有一个小工具可以帮我们实现这个想法哦&#xff0c;那就是Photo Booth&#xff0c;我们可以通过Photo Booth拍摄一些搞怪的照片。现在就和小编一起…

大雄和哆啦A梦WP(实验吧-隐写术)

前言&#xff1a; 本文是实验吧训练题库里隐写术部分的一道题&#xff1a;“大雄和哆啦A梦”的Write Up. 解题文件&#xff1a; 解题文件是一张图片 看到是图片&#xff0c;首先想到用Stegsolve查看是不是有隐藏的二维码——但是并没有发现二维码。 之后在Stegsolve中依…

【考研复习】李春葆新编C语言习题与解析(错误答案订正)持续更新

新编C语言习题与解析 做习题时发现有些错误答案&#xff0c;写篇博客进行改正记录。不对地方欢迎指正&#xff5e; 第二章 C. 其中b的表达形式错误&#xff0c;若加上0x1e2b则正确。所以C错误。 D. e后为整数。指数命名规则&#xff1a;e前有数&#xff0c;后有整数。所以D错…

js检测浏览器支持的字体

通过js检测浏览器支持的字体&#xff0c;从而显示支持的字体&#xff0c;让用户选择 轉載出處 字体函数&#xff1a; var dataFont {windows: [{ch: 宋体,en: SimSun}, {ch: 黑体,en: SimHei}, {ch: 微软雅黑,en: Microsoft Yahei}, {ch: 微软正黑体,en: Microsoft JhengHe…