和孩子一起学python(5)

博主与孩子一起使用树莓派和LED按钮制作了一个2x4的打地鼠游戏,通过Python实现软硬件交互。尽管遇到GPIO响应速度慢、音乐播放问题和蓝牙音箱兼容性等困难,但最终完成了游戏的基本功能。然而,由于缺乏屏幕和声音,游戏体验不足,孩子们兴趣不高。下一步计划改进系统并解决音频问题。
摘要由CSDN通过智能技术生成

小c来做客, 打算用树莓派做打地鼠游戏陪她玩。

和小M一起用8组LED和按钮在一块50x30cm的厚纸板上做了2x4的方阵,LED输出和按钮输入分时复用, 对孩子有点复杂,所以她画图我焊接。刚开始担心PI的驱动能力不够, 试了下亮度足够,而且因为没有散射膜,LED正前的亮度对孩子太刺眼, 需要做PWM。  

先用scratch实现, 发现scratch GPIO链接硬件特别慢(在0.1s),改成最低延时也无法实现扫描。

改用python,很快写好,用查询方式, 软件PWM控制LED亮度。

底层代码比较难理解,我直接写好, 打算让小M改上层表现。 

贴下code:

import RPi.GPIO as GPIO
import time,random
def rat_in(pp,tt=1.0):
    """

   Para:pp: 点亮的地鼠, tt:时间

   return:1 suc, 0:miss, -1:wait
    GPIO7 is common cathode.gmap is 8 anodes.
    """
    GPIO.setup(7,GPIO.OUT,initial=GPIO.LOW)
    gmap =[20,21,16,12,26,19,13,6]
    pp = gmap[pp]
    for k in gmap:
        GPIO.setup(k,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
        
    GPIO.output(7,GPIO.HIGH)
    time.sleep(0.001)
    if GPIO.input(pp) == GPIO.HIGH:
        return -1
    st = time.time()
    while(time.time()-st<tt):
        GPIO.output(7,GPIO.LOW)
        GPIO.setup(pp,GPIO.OUT,initial=GPIO.HIGH)
        time.sleep(0.0001)
        GPIO.setup(pp,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
        GPIO.output(7,GPIO.HIGH)
        time.sleep(0.005)
        if GPIO.input(pp) == GPIO.HIGH:
            return 1
    return 0

    
if __name__ == "__main__":
    rank,total = 0,0
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    while 1:
        pp = random.randint(0,7)
        tt = random.random()+3
        delay = random.random()
        dd = rat_in(pp,tt)
        if dd<0:
            continue
        if dd:
            rank +=1
        total += 1
        print(total,rank)
        time.sleep(delay)  
 

地鼠功能ok,用报纸做了个锤子,小C和小M试玩下, 没有屏幕,没有声音, 两人都不喜欢玩。 

用pyaudio加音乐,用天猫精灵做蓝牙音箱, 第一次播放有声音,各种warning,安装pulseaudio,系统就没音了,在网上找各种解决方案,raspyberry对蓝牙音箱支持不是很稳定,花了几个晚上也没搞通,比当年win32上装声卡还折腾。

下一步要重装系统了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值