用microbit控制广播和MP3播放器

micro:bit编程、教学、展示
STEM
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

用microbit控制广播和MP3播放器

#1

帖子 shaoziyang »

翻译自:http://www.suppertime.co.uk/blog ... t-controlled-radio/

这是一个快速项目,展示了David Whale的bitio Python库的强大功能。这使得Python可以在Raspberry Pi,Mac或Windows PC上访问BBC micro:bit上的传感器。您可以使用micro:bit的按钮,触摸和加速传感器控制计算机上的程序,也可以使用micro:bit的显示。

可以用它做收音机吗?在这里,答案是肯定的,而且只有大约10分钟的时间!

该程序允许使用micro:bit上的A和B按钮来上下切换电台,通过向右倾斜来增大音量,向左倾斜来降低音量,触摸GND和micro:bit上的pin0退出。它可以像MP3播放器一样地工作,它不是只能播放互联网广播流。micr:bit在屏幕上显示播放列表序号。

如果你想尝试这个,这是你需要的:
  • 一台计算机,如安装了Python的Raspberry Pi。
  • 此外,电脑需要一个音频播放器安装和配置一些电台的URL或MP3文件。我在树莓派上使用mpc / mpd - 见下文。
  • 在电脑上下载bitio库。
  • micro:bit和USB线。
  • 音频播放设备,如电视、耳机或者有源音响。

首先在Raspberry Pi上安装mpc和mpd播放无线广播或mp3文件:

sudo apt-get install mpc mpd

(在Mac上,您可以使用afplay,或在任何计算机上用VLC执行相同的操作)。

如果你之前没有使用mpc,像这样用nano打开mpd配置文件:

图片

然后编辑这些行以删除一些#符号(取消注释),并将mixer_type从硬件更改为软件,如下所示:

audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0" # optional
mixer_type "software" # optional
mixer_device "default" # optional
mixer_control "PCM" # optional
mixer_index "0" # optional
}

现在使用mpc add命令添加一些广播电台的URL 。我添加了BBC 6music,BBC世界服务新闻,FIP和Radio 4。例如添加FIP使用下面命令:

代码: 全选

mpc add http://chai5she.cdn.dvmr.fr/fip-midfi.mp3
你可以在我的列表上找到BBC广播网址。

如果你喜欢,你可以添加音频文件而不是广播电台,来制作MP3播放器。

我只添加了4个电台,但是可以添加更多或更少的电台,只需调整 stationNumber 和相关行即可。他们按顺序添加,但您可以通过键入来检查您的播放列表或MP3文件
mpc playlist

您可以使用 move 命令更改顺序,例如,将电台4移至预设2,只需键入:
mpc move 4 2

然后我下载了一个ZIP格式的bitio文件,解压缩它们,并将Python程序放在同一个文件夹,并使用IDLE运行它 - 也可以从命令行运行它。它会在micro:bit上显示'radio rocks!',然后开始播放1号台。使用A和B按钮改变频道,向左和向右倾斜以控制音量,触摸引脚0退出程序。

第一次使用bitio的micro:bit时,需要将一个特殊的.HEX文件拖动到micro:bit并按照一些步骤来定位设备 - 这只需要拔掉并重新插入它,然后它会记住你的设备正在使用它。

如果你使用这个或有想法改进它,请让我知道!

代码: 全选

# micro:bit-controlled radio by Giles Booth @blogmywiki
# Requires bitio https://github.com/whaleygeek/bitio
# Also requires mpc/mpd installing and some audio files or URLs adding

import microbit
import time
import os

stationNumber = 1

running = True

microbit.display.scroll("radio rocks!")
os.system("mpc play 1")
microbit.display.show("1")

while running:
    x = microbit.accelerometer.get_x()

    if x < -300:
        print("left - volume down")
        os.system("mpc volume -10")
    elif x > 300:
        os.system("mpc volume +10")
        print("right - volume up")

    if microbit.button_a.was_pressed():
        print("Button A pressed - station down")
        stationNumber -= 1
        if stationNumber <1:
            stationNumber = 4
        os.system("mpc play "+str(stationNumber))
        microbit.display.show(str(stationNumber))     

    if microbit.button_b.was_pressed():
        print("Button B pressed - station up")
        stationNumber += 1
        if stationNumber >4:
            stationNumber = 1
        os.system("mpc play "+str(stationNumber))
        # you could use 'mpc next' if you don't know how many tracks/URLs are loaded
        microbit.display.show(str(stationNumber))

    if microbit.pin0.is_touched():
        print("Pin 0 touched")
        microbit.display.scroll("bye")
        running = False

    time.sleep(0.5)

os.system("mpc stop")
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章