这是一个快速项目,展示了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
如果你喜欢,你可以添加音频文件而不是广播电台,来制作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")