×

适合编程新手的Music Lights Workbench

消耗积分:0 | 格式:zip | 大小:0.03 MB | 2023-02-10

吴湛

分享资料个

描述

介绍

Music and Lights Workbench (MLWB) 旨在通过提供一系列允许构建乐谱/曲调和/或灯光效果。通过使用这些命令及其应用程序,用户将开始深入了解什么是编程,并有望激发他们的进一步兴趣。

然而,它同样适用于那些更有经验的人,他们可能喜欢探索在 Arduino 上编写音乐和组合灯光效果。

所采用的方法是提供一组简单易用且逻辑应用的命令(功能),通过演奏音符和/或点亮 LED(灯)将计算机与外界联系起来。

MLWB 命令在很大程度上彼此独立,可用于仅播放音乐、仅点亮灯光或两者的组合。

MLWB 不需要使用任何其他编程功能、技术或逻辑,只需要简单的命令语句。虽然 if/then、do/while、for 循环等条件结构可以用于更高级的用途,但在适当的教学下,它们并不是从 MLWB 中立即获得结果所必需的。

任何试图掌握一门新学科的人,这里是基本的计算机编程,都可以从精通该学科的人的指导中受益。MLWB 也不例外,它的使用和应用最好是通过导师对学生的指导和指导来实现。

动机

MLWB 是为作者的孙辈设计的,旨在为他们提供一些机会来了解如何轻松创建计算机程序以在现实世界中产生效果。希望通过思考播放简单音乐和/或打开和关闭灯 (LED) 所需的逻辑步骤,这将达到顶峰并激发他们更深入探索编程潜力的愿望。

好的,在这一点上,一些引述:

告诉我,我会忘记;教我,我可能会记得;让我参与,我就会学习。- 本杰明·富兰克林
教育不是灌满锅,而是点燃火。— WB 叶芝
教育是通向未来的通行证,因为明天属于今天为之做好准备的人。– 马尔科姆 X

高尚的智慧,当然,但它们确实说明了我试图很好地表达的观点。

先决条件

“让鸭子排好队”,或者让事情井然有序和移动所需的东西:

目标受众——愿意探索计算机程序如何快速、轻松和有趣地做某事的学生,无论年龄大小,
主管 -导师,担任 MLWB 的教育者 - 导师和老师。导师应该有一定的Arduino和IDE及其编程经验,但这可以是初级水平,
如果要探索/使用 MLWB 的音乐元素,那么对导师和学生都有一些音乐知识是有帮助的,但是,同样,这可能处于初级水平——了解音符名称、音阶、音符间隔将非常有益,
硬件配置如下,
安装在 Windows PC 上的 ARDUINO IDE,
在学生使用之前,导师通过探索其命令和内置示例来彻底熟悉 MLWB。下载婴儿床单作为指南和回忆录以备不时之需,
最后,针对导师将向学生介绍的内容制定计划,逐节进行。包含的示例可以构成许多练习的基础。

关于索引引用、术语和数据输入的说明

索引参考和术语

年轻人和那些刚接触任何与计算相关的人通常会发现很难理解与计算相关的术语,并且引用可以从 0(零)开始。因此,为了让学生轻松进入计算世界,MLWB 的设计如下:

1. 避免使用技术计算术语,例如不使用术语 LED,而是使用“光”,
2. 引用从 1 开始,而不是 0。例如,在 MLWB 中,将 LED 0 称为“light1”,将 LED 1 称为“light2”,依此类推。

数据输入

为了让学生尽可能容易地输入键盘数据,MLWB 使用小写字母。下载草图后,可以看到所有命令和音乐音高常数都大部分以小写字母定义。通常可用的“pitches.h”文件包含 MLWB 中包含的所有相同音高定义,但这些都是大写的。因此,每个间距定义都已重新定义,以减少任何大写要求。例如,'note_C4',而不是'NOTE_C4',等等。这里的例外情况,如将立即发现的那样,是保留为大写以提高阅读能力的注释名称。

MLWB 命令

MLWB 命令集主要分为两组——执行音乐指令的组和执行灯光动作的组。然而,有一个命令可以连接两个“阵营”。这是重载函数的播放命令。它可以用于:

1. 在给定的持续时间内播放给定的音符,或
2. 与 1. 一样,但有一个额外的参数指定在播放音符时要点亮的灯号 (LED)。它是一个重载函数,可以以任何一种方式使用。

音乐指令

play - 将在给定的持续时间内播放给定的音符,例如 play(note_C4, minim), play(note_FS2, crot + quav) 等。
play - 命令的重载版本,该命令允许在给定音符播放时指定灯 (LED) 用于照明,例如 play(note_C4, minim, light5), play(note_FS2, crot + quav, light1),等等
休息- 在给定的持续时间内休息,在此期间保持沉默,例如休息(quav),休息(0.5)等
set_tempo - 以每分钟节拍为单位设置音乐作品的速度(速度),例如 set_tempo(allegro)、set_tempo(144) 等。四分音符的值计算为 60/tempo。然后根据该计算值确定所有其他音符持续时间。

灯光指令

light_on - 打开给定的灯 (LED)。例如 light_on(light1)、light_on(7) 等。
light_off - 关闭给定的灯 (LED),例如 light_off(light1)、light_off(7) 等。
all_lights_on - 打开所有八个灯。例如 all_lights_on()。
all_lights_off - 关闭所有八盏灯。例如 all_lights_off()。
flash_light - 在给定的闪光间隔内闪烁给定的灯,直到灯被另一个命令重新定义,例如 flash_light(light3, 0.5),闪光频率为 1 秒 - 0.5 秒亮,0.5 秒关。该命令由微控制器的定时器 1 通过中断服务程序 (ISR) 控制。这样,即使在 flash_light 命令之后可能会执行其他命令,闪光序列也会继续运行。闪烁一直持续到对同一灯 (LED) 执行另一个命令为止。
strobe_all_lights - 此命令将在给定的周期内按给定的方向(向前或向后/向后)频闪所有八个灯,每个灯在给定的时间内点亮。例如 strobe_all_lights(forwards, 10, 0.1)。控制权由命令保留,直到它完成给定的循环次数。
wait - 等待给定的持续时间(秒)停止除继续运行的现有 flash_light 命令之外的任何处理。例如 wait(5.5),等待 5.5 秒。

MLWB布局

MLWB 软件是用 Arduino C++ 编写的,包含六个选项卡。这些选项卡是:

music_and_lights_workbench - 此选项卡提供了 MLWB 的概述,与本文的大部分内容相呼应。
functions_lights - 此选项卡定义支持 MLWB 命令的功能,这些命令处理灯光 (LED) 控制,请参见上文。
functions_tones - 此选项卡定义支持处理音乐/音调控制的 MLWB 命令的功能。此外,此选项卡还定义了 setup() 函数,请参见上文。
main_work_area - 这是应该插入学生编码的地方,是教学、探索和巩固思想的中心焦点。
xample_lights - MLWB 开箱即用 (OOTB),带有几个现成的示例,演示了如何使用控制灯 (LED) 的命令。这些可以用作导师和学生之间的教学示例,见下文。
xample_tunes - MLWB 还提供了 OOTB 以及其他几个现成的示例,演示了在连接的扬声器/蜂鸣器上播放音调(音乐)的命令的使用。同样,这些可以用作导师和学生之间的教学示例,见下文。

收缩包装示例

首先,包含两个选项卡,提供音乐旋律/曲调和照明序列的示例。使用这些来查看每个本机命令(函数)如何单独和一起使用。事实上,这些也可以用作导师和学生之间的教学指南。

音乐示例选项卡称为“xample_tunes”,包含以下教学示例:

middle_C - 演奏 C 大调音阶,先是向上,然后再向下。作为建议,为什么不让学生将其他音阶和琶音提交到 MLWB 中?
twinkle_twinkle - 播放非常著名的儿歌 Twinkle, Twinkle, Little Star。
jingle_bells - 线索就在名字里!
happy_birthday - 生日庆祝活动!
ditty_1 - 播放它,您一定能认出它。除了播放旋律外,该示例还会在播放时点亮前七个灯。
door_bell_1 & door_bell_2 - 叮,当!两个门铃示例在播放时也会点亮灯光。
ode_to_joy - 贝多芬第 9 交响曲(合唱),最后的乐章。

(还有一个额外的音乐示例。我想提供一些标志性的、流行的和我真正喜欢的曲调 - Penny Lane、Lennon 和 McCartney。我确实完成了将这首音乐的 G Major 乐谱提交到MLWB(在我女儿的帮助下)运行得很漂亮。然而,我决定不发表它,因为我不想侵犯版权。这对我来说不是白费力气,虽然,因为我从阅读中学到了很多东西一个分数)。

灯光示例选项卡称为“xample_lights”,包含以下说明示例:

sweep_lights - 八盏灯从每一端扫到中心,然后再扫回来。
chasing_lights - 灯光从一端到另一端遵循追逐效果。
marching_lights - 灯光在所有八盏灯中形成行进模式。
flash_all_lights - 以不同的频率闪烁八盏灯中的每盏灯。请注意,闪烁会一直持续到执行另一个发光命令为止。
sos_morse_code - 在一个 sos 周期内闪烁所有八个灯,即破折号、破折号、破折号、点、点、点。为什么不在灯光和音乐音调方面进一步探索摩尔斯电码呢?
traffic_lights - 执行两条道路从红/绿到绿/红的照明转换(一个周期)。这是一个有用的练习,可以让学生扩展到相反的(原始)状态设置(绿色/红色到红色/绿色)。请注意,逻辑可能会有点混乱,使用过渡状态表来规划灯的顺序及其时间会很有帮助。

电路设计与布局

该项目的组件不复杂,随时可用并以简单直接的方式配置 - 请参见下面的原理图。(警告:不要将扬声器/蜂鸣器输出引脚直接连接到音频输入,因为这可能会损坏您的微控制器。)

虽然可以使用任何颜色的灯 (LED),但如果配置多个不同颜色的灯,对于学生来说可能会带来更丰富多彩的体验。如果要使用交通灯示例,则将您的灯安排为

灯 1 - 红色,灯 2 - 琥珀色,灯 3 - 绿色,灯 4 - 任何(道路 1)
灯 5 - 红色,灯 6 - 琥珀色,灯 7 - 绿色,灯 8 - 任何(道路 2)。

床单

婴儿床表记录了可供 MLWB 使用的所有预设值和命令。 下载此作为助手回忆录,并随身携带以备参考。

最后

我觉得我需要声明我的音乐知识、技能和实力几乎为零——我认为邮箱更有音乐天赋!

我在所有音乐方面的方法都是机械化的,大量使用互联网来构建这个工作台的音乐元素,所以我向任何可能因不恰当的条款或实施而受到冒犯的人道歉。我的辩护是它似乎按我的预期工作,我的孙子们似乎很开心,其中一个比我更了解音乐。

我希望你喜欢你的经历。

进一步阅读

您可能还会发现同一作者的这些贡献有趣且有用:

  • 外部中断,支持并发异步多中断的通用框架。配置多个具有不同特性的外部中断并添加代码以提供中断后异步处理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !