1、编程知识点(循环逻辑、变量)
2、模块知识点(蜂鸣器模块)
3、科学知识点(声音的奥秘)
环境:网络及手机/电脑
准备:小龟小车主控板
第一节:认识蜂鸣器和声音频率(约15分钟)
【课程内容】
1、认识蜂鸣器和图形编程蜂鸣器模块
2、声音频率的基础知识和实际体验对应的频率
1、认识蜂鸣器和图形编程蜂鸣器模块
首先来认识一下,主控板上红圈圈出来的位置就是蜂鸣器。
小龟还在网上找了其他蜂鸣器的样式,小伙伴们也可以认识一下。
2、声音频率的基础知识和实际体验对应的频率
大家都知道声音的频率越高越尖,越低越低沉。正好我们用图形编程来验证一下!
前面是频率,后面是播放时长赫兹(hz),赫兹是频率的单位。
频率和播放时长都是可以修改的~
我们先来验证一下800赫兹的声音!
<xml xmlns="https://developers.google.com/blockly/xml"><block type="buzzer_play" id=",|UcfMZL?sS.Qd4U7=E;" x="69" y="156"><value name="hz"><shadow type="math_number" id="(;wXUfj%O6O$90tNSYP5"><field name="NUM">800</field></shadow></value><value name="time"><shadow type="math_number" id="@Q$2!0TcX|Q@Q`qG;!gQ"><field name="NUM">1</field></shadow></value></block></xml>
小伙伴们可以随意输入一些数值,体验一下不同频率蜂鸣器发出声音的高低。
【趣味挑战】
人类的听力极限,探索人类能听到的声音的上限和下限!
第二节:认识音乐音阶和播放简谱(约20分钟)
【课程内容】
1、音乐简谱与声音频率的基础知识
2、体验图形编程简谱模块
1、音乐简谱与声音频率的基础知识
我们知道音乐里的音阶其实就是固定频率的声音,那么我们尝试一下用蜂鸣器来模仿音乐音阶。
感兴趣的小伙伴还可以去百度搜索一下,各个音阶对应的频率。
<xml xmlns="https://developers.google.com/blockly/xml"><block type="buzzer_play" id="ex1Pu(]S?q)5x.gJel@F" x="62" y="128"><value name="hz"><shadow type="math_number" id="8N_{rwLy9JYmfD17#*=n"><field name="NUM">800</field></shadow></value><value name="time"><shadow type="math_number" id="b*#V,%S|u2kkrjrN!rD$"><field name="NUM">1</field></shadow></value></block></xml>
2、体验图形编程简谱模块
我们网站图形编程中已经有了一部分简谱,点击执行蜂鸣器就可以开始播放歌曲了,小伙伴们可以体验一下!
<xml xmlns="https://developers.google.com/blockly/xml"><block type="buzzer_music_item" id="zPl],gjbSP16{0~oDu*y" x="16" y="447"><field name="music">5_5_ | 6 5 1' | 7 0 5_5_ | 6 5 2' | 1' - 5_5_ | 5' 3' 1'| 7 0</field></block></xml>
还可以点击这个积木块,可以按照自己的想法修改里面的内容~
<xml xmlns="https://developers.google.com/blockly/xml"><block type="buzzer_music" id="Iok4JXy7Ro]79y+0O}4j" x="16" y="60"><field name="music">1=2=3=4=5=6=7=</field></block></xml>
【趣味挑战】
百度自己喜欢的歌曲的简谱,参考小龟给出的语法,挑战一下自己。
第三节:图形编程实现警报效果(约25分钟)
【课程内容】
图形编程使用递增FOR循环和变量
我们在这一节,将会学习递增FOR循环和变量。
点击下方视频,我们可以先来听一下警报效果。可以听出来他是重复一段“逐渐上扬+逐渐降低”的音效来达到的。
现在我们来看一下这个外星人语音的图形编程。
小伙伴们可以执行这段图形编程体验一下。
<xml xmlns="https://developers.google.com/blockly/xml"><variables><variable id="Nyp[NV(ulaRe*2wK!/1S">i</variable></variables><block type="controls_repeat_ext" id="tz2tGM`mxoVD}nlZ_FKi" x="16" y="102"><value name="TIMES"><shadow type="math_number" id="gPQGEhN]th-i}c)7P#,t"><field name="NUM">10</field></shadow></value><statement name="DO"><block type="controls_for" id="iUK:j(4x|$h$]g};D;)3"><field name="VAR" id="Nyp[NV(ulaRe*2wK!/1S">i</field><value name="FROM"><shadow type="math_number" id="HrhCnecTdX:87PBlxHaK"><field name="NUM">650</field></shadow></value><value name="TO"><shadow type="math_number" id="p[|cOZ|Bf_fChfj/C|2T"><field name="NUM">750</field></shadow></value><value name="BY"><shadow type="math_number" id="?b=R#+q!=0$ymPi10C#3"><field name="NUM">1</field></shadow></value><statement name="DO"><block type="buzzer_play" id="3?/3YBu,Bv)_?+n;VE*{"><value name="hz"><shadow type="math_number" id="XpbWcL0$wq:O3K{cPF+r"><field name="NUM">800</field></shadow><block type="variables_get" id="f8T{`z_ewx!j{):ybn_i"><field name="VAR" id="Nyp[NV(ulaRe*2wK!/1S">i</field></block></value><value name="time"><shadow type="math_number" id="{sSU^bluc]VJA*Kw,g0U"><field name="NUM">0.01</field></shadow></value><next><block type="sleep_var" id="BHWS!vp46Jz,f[!fTn]%"><value name="keep"><shadow type="math_number" id="+yFJHq%JwH%~|BsPdNEs"><field name="NUM">0.01</field></shadow></value></block></next></block></statement><next><block type="controls_for" id="6W;!K22=K_,WZtS|^r2d"><field name="VAR" id="Nyp[NV(ulaRe*2wK!/1S">i</field><value name="FROM"><shadow type="math_number" id="!0Wtb;J*?^?uZ[z$i(YI"><field name="NUM">750</field></shadow></value><value name="TO"><shadow type="math_number" id="-$`uK|5c:^ET_KF,+Sl?"><field name="NUM">650</field></shadow></value><value name="BY"><shadow type="math_number" id="(8j!FXA`Y%rLw:-yle(o"><field name="NUM">-1</field></shadow></value><statement name="DO"><block type="buzzer_play" id=";o/a@YZ$cis!;B7!fKkJ"><value name="hz"><shadow type="math_number"><field name="NUM">800</field></shadow><block type="variables_get" id="~e9#/HAJW?[tW,/r|*/k"><field name="VAR" id="Nyp[NV(ulaRe*2wK!/1S">i</field></block></value><value name="time"><shadow type="math_number" id="au=OT1oSro~B4y/@L32,"><field name="NUM">0.01</field></shadow></value><next><block type="sleep_var" id="}mS+-V|4.6WkTp.eSrzG"><value name="keep"><shadow type="math_number" id="MEAeM|O.I~iV7p}|q8Pa"><field name="NUM">0.01</field></shadow></value></block></next></block></statement></block></next></block></statement></block></xml>
我们首先来编写上扬部分的图形编程。
1、首先需要创建一个变量i,把他的范围设置在650-750。由于上扬部分的音是循序渐进的,因此每次增加设置为1。
2、接着拖入这个模块,把变量i拖入到这个地方,单位是赫兹,那么变量i就代表了声音的频率。由于这段音效频率变化特别快才能达到警报的效果,因此我们在后面的位置设置为0.01秒。
3、在下方还需设置间隔0.01s,如果不设置这个,由于切换过快,人耳会无法识别。
设置好了上扬部分,降低部分的图形编程只需反着来就可以了。
1、手机端长按复制上扬部分模块(电脑端鼠标右键复制),把变量i的范围设置在750-650,每次增加设置为-1。
2、其他参数保持不变,将上扬模块和降低模块衔接在一起。
最后拖入重复10次模块,点击执行,蜂鸣器就可以发出警报了。
今天的课程到这里就已经结束了!
小龟强烈建议小伙伴们整理一下思路,按照自己的逻辑把所有的图形编程手动编写一遍,会更加印象深刻~