文档章节

TurnipBit - DIY音乐盒

bodasisiter
 bodasisiter
发布于 2017/07/18 17:07
字数 875
阅读 85
收藏 0

  一款可以自己DIY的音乐盒,要什么曲子,就自己谱曲啦!为他(她)制作一首他喜欢的音乐,来代表您的心意,也可以让他自己来制作他最爱的音乐哦!更可以带孩子一起体验谱写欢快的音乐。

  最近发现一很好玩的中国式BBCmicrobit开发板--TurnipBit开发板,既可以拖拽,也可以用micropython来编写,既有可视化编程页面,也有代码编写页面,属于孩子家长的神器,只需这一个开发板外加随便一个纸盒即可DIY一个简易的音乐盒,还能随便切换音乐哦!我们可以随便用一个纸盒来当做音乐盒外形跟框架,然后我们用这个板子加一个耳机或者一个外放就能播放我们自己谱写的音乐啦!下面我们开始DIY我们的音乐盒!

  首先材料准备,我们所需材料很简单只需要:

  1.TurnipBit开发板(我这个是朋友送的,可以从某宝上购买),给大家爆个照

  2.随便找个匹配大小的纸盒就行

  3.需要一个外放,耳机喇叭都行

  4.一条电源线

  材料准备好了,就开始搞吧!

  先上个成品图(孩子还给画了上一曲,下一曲以及显示屏的图标,虽然有点丑,但是不想打击孩子的积极性,挺萌的哈),micropython代码是我写的,显示屏的图形是孩子拖拽的,一起动手把开发板在盒子里面固定,数据线连接到电脑上,写好我们要编写的程序,将程序写进板子里,就直接可以播放啦,注意那个显示屏是动态的哦,简单吧,那就动手做起来吧!!!

  因为孩子比较喜欢两只老虎,就特意给他编了两只老虎,还有生日快乐的音乐,这个开发板类库中带很多孩子喜欢的图形还有音乐,也可以自己编译,如果要编译的话,请参考:

  https://en.wikipedia.org/wiki/Scientific_pitch_notation#Table_of_note_frequencies

  可以DIY乐谱哦!

  下面分享一下两种源码,可以在

  http://turnipbit.tpyboard.com/PythonEditor/editor.html#

  将我们的程序写入,放入我们TurnipBit开发板里面就行。

  1.简单的音乐程序

from microbit import *
import music

# DIY两只老虎乐谱
tiger= ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4",
        "E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"]

while not False:
    display.show(Image.MUSIC_QUAVER)
    if button_a.is_pressed():
        music.play(tiger, wait=False, loop=True)
    elif button_b.is_pressed():
        music.play(music.BIRTHDAY, wait=False, loop=True)

  2.稍微复杂一点程序,带动态图像的

from microbit import *
import music
pix = [(5,0,0,0,5),(5,5,0,5,5),(0,9,0,9,0),(7,0,8,0,7),(0,9,9,9,0)]

#   diy两只老虎乐谱
tiger= ["C4:4", "D4:4", "E4:4", "C4:4", "C4:4", "D4:4", "E4:4", "C4:4",
        "E4:4", "F4:4", "G4:8", "E4:4", "F4:4", "G4:8"]

while not False:
    display.show(Image.MUSIC_QUAVER)
    if button_a.is_pressed():
        music.play(tiger, wait=False, loop=True)
        
        for down in range(0,5):
            for y in range(0,5):
                for x in range(0,5):
                    if y-down<0:
                        display.set_pixel(x,y,0)
                    else:
                        display.set_pixel(x,y,pix[y-down][x])
            sleep(300)
            
        for right in range(0,5):
            for y in range(0,5):
                for x in range(0,5):
                    if x-right<0:
                        display.set_pixel(x,y,0)
                    else:
                        display.set_pixel(x,y,pix[y][x-right])
            sleep(300)
            
        for up in range(0,5):
            for y in range(0,5):
                for x in range(0,5):
                    if y+up>4:
                        display.set_pixel(x,y,0)
                    else:
                        display.set_pixel(x,y,pix[y+up][x])
            sleep(300)
            
        for left in range(0,5):
            for y in range(0,5):
                for x in range(0,5):
                    if x+left>4:
                        display.set_pixel(x,y,0)
                    else:
                        display.set_pixel(x,y,pix[y][x+left])
            sleep(300)
            
        sleep(1000)
    elif button_b.is_pressed():
        music.play(music.BIRTHDAY, wait=False, loop=True)

 

© 著作权归作者所有

共有 人打赏支持
bodasisiter
粉丝 18
博文 164
码字总数 147890
作品 0
潍坊
让我们一起摇摆 Turnipbit体感遥控车

相信大家对Microbit是非常熟悉的,而今天我们做的这个小玩具所用的核心板是Turnipbit,是基于 Microbit开发的一块适合儿童适用的板卡。基本使用原理是一样的,这里就不多介绍了,代码这方面我...

bodasisiter
02/24
0
0
[详细实例]MicroPython拼插编程实战:DIY一台会思考的壁障车

(转载请注明文章来源,更多教程可自助参考www.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇) 在日常生活中,大家会经常见到各种各样的遥控车,它需要我们人为的操作...

bodasisiter
09/08
0
0
MicroPython实战之TurnipBit开发板DIY电子时钟

一、 实验目的: ?学习在PC机系统中扩展简单I/O 接口的方法 ?学习TurnipBit拼插编程 ?学习TurnipBit扩展板与DS3231时钟模块连接接线方式 ?学习时钟模块的使用 二、所需原器件: ?TurnipBit一...

bodasisiter
06/26
0
0
MicroPython实例:TurnipBit开发板DIY自动浇水系统

1.实验目的: ?学习在PC机系统中扩展简单I/O 接口的方法 ?学习TurnipBit拼插编程 ?学习土壤传感器的工作原理以及使用方法 2.所需原器件: TurnipBit一块 TurnipBit扩展板一块 usb 数据线一条...

bodasisiter
07/03
0
0
MicroPython实战:DIY一台会思考的避障车

  * 本文作者:bodasister,本文属FreeBuf原创奖励计划,未经许可禁止转载   1、什么是会思考的避障车?   在日常生活中,大家会经常见到各种各样的遥控车,它需要我们人为的操作,控制...

FreeBuf
07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

gson1.7.1线程并发导致空指针问题

java.lang.NullPointerExceptionat com.google.gson.FieldAttributes.getAnnotationFromArray(FieldAttributes.java:231)at com.google.gson.FieldAttributes.getAnnotation(FieldAttribut......

东风125
35分钟前
1
0
以太坊RPC接口使用

以太坊RPC接口文档: https://github.com/ethereum/wiki/wiki/JSON-RPC#web3_clientversion 使用方式: 比如我要调用某个合约的balanceOf(address _owner)方法。 因为没有改变合约的状态,所以...

王坤charlie
今天
2
0
C#下的一个好用的日历库(sxtwl_cpp),支持农历转公历,和公历转农历等功能

sxtwl_cpp是寿星天文历的C++版本实现。支持多种语言的绑定 代码首页 懒人包 懒人包使用方法 1、右链工程中的引用-》添加引用-》浏览-》选中dotnet目录下的sxtwl.net.dll 2、生成解决方案-》找...

元谷
今天
1
0
C++基础知识

链接:https://zhuanlan.zhihu.com/p/38399566 本文主要提一下以下三个区别: 引用必须初始化,而指针可以不初始化。 我们在定义一个引用的时候必须为其指定一个初始值,但是指针却不需要。 ...

悲催的古灵武士
今天
1
0
Oracle备份脚本,保留10天数据

@echo off echo 删除10天前的备分文件和日志forfiles /p "D:\oracleback\backfile" /m *.dmp /d -10 /c "cmd /c del @path" forfiles /p "D:\oracleback\backfile" /m *.log /d -10......

lyle_luo
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部