中学Arduino创客活动设计与实验剖析 浅谈未来教室高效课堂构建
技术拾萃 上一版 下一版

《江苏科技报·教育周刊》(双周刊,国内统一刊号CN32-0019),是江苏省唯一以社会立场透析当代中国教育的报纸。秉承“科技推动教育,教育改变人生”的理念,《江苏科技报·教育周刊》一直注意保持与教育前沿工作的密切联系,定位于教育宏观研究,兼顾微观探讨,注重教育文化生态的构建与引导,时刻关注鲜活的教育实态,着眼于教育文化的深层构建,努力赋予教育以深厚的文化内涵,致力打造中国最好的教育媒体。

国内统一刊号:CN32—0019
编辑部地址:江苏省南京市鼓楼区中山路55号新华大厦48楼

第300期 总第5153期 2015年12月08日 星期二
返回首页
作者 内容  上一期  当前第300期  下一期
中学Arduino创客活动设计与实验剖析
来源:江苏省南通田家炳中学 作者:曹刚 发布日期:2015-12-10 20:42:35

    Arduino诞生于2005年,包括一块线路板和一整套的开发软件。之所以得到广泛应用是因为它不需要专门的电子知识,只需要一点点编程基础就能快速开发出一些小作品。在Arduino的世界中,只要你想得出、找得到,通过头脑思考、动手实践就能制作出具有创意的作品,而这正是“创客”思想的初衷。中学信息技术课程中,Arduino的应用主要是在机器人和物联网两块教学内容中,而对于更多知识点的讲授可能是在社团活动中,但这并不影响同学和老师的热情。那么,要做这些该如何起步呢? 
    一、Arduino入门——初识ArduBlock
    Arduino IDE是Arduino的集成开发环境,所使用的编程语言为C/C++,不管是C还是C++,对于初学者而言掌握起来都是有困难的。比如,变量的定义、函数的引用、程序结构的使用等等,这些在编程的时候都是比较繁琐的。ArduBlock是一款图形化编程软件,区别于Arduino IDE的文本式编程,在ArduBlock的编程环境中,常用的程序步骤都以图形化积木的形式呈现,设计者所要做的仅是通过鼠标的拖动将这些积木组装起来,这样就可以完成一个程序,让Arduino动起来,其可视化和交互性强,编程门槛低。
    实验一:点亮Arduino板上13号引脚的LED灯。图1为源程序文本代码,图2为使用ArduBlock的图形化程序,两者实现的功能一样。

                                      图1
    图1程序代码中涉及四个函数setup()、loop()、pinMode()、digitalWrite(),要了解这些函数的功能以及使用方法对于初学者而言是比较困难的,何况这个实验还是Arduino应用中最简单的。而图2的图形化程序就相对简单且容易理解——13号引脚输入高电平信号点亮LED灯。             ArduBlock除了图形化编程以外,其实也可以作为学习Arduino程序代码编写的工具,因为所有的图形化程序在下载到Arduino板以后,都会转换成文本代码出现在Arduino IDE中,这样我们就可以依葫芦画瓢,学会某些功能代码的编写。

                                   图2
    二、Arduino基础——数字信号输入与判断
    Arduino可以处理的数据分为数字信号和模拟信号。数字信号为计算机处理数据最主要的形式,以逻辑量“0”“1”两种状态存在,在Arduino中“0”表示“低”,对应低电平,“1”表示“高”,对应高电平。Arduino板上共有14个数字引脚:D0~D13,可用于数字信号的输入和输出,不过建议D0、D1、D13不要使用,因为这三个引脚已有他用。Arduino对输入的数字信号进行处理,再根据处理结果输出数字信号去控制一些外围的执行器。
    实验二:按钮控制LED灯的亮灭。图3为ArduBlock的图形化程序。

                           图3
    这个实验是将按钮接在数字引脚3上,LED灯接在数字引脚12上,实现的功能是当按钮处于按下状态时点亮LED灯,松开按钮时LED灯熄灭。有了实验作铺垫,那么图3中的图形化程序应该也是不难理解的。需要注意的是,Arduino所接按钮有个电气特性就是松开时输出高电平,按下时输出低电平,所以根据程序中逻辑判断的特点,需要将按钮输入Arduino的数字信号取反。
    选择这个实验作为基础中的核心实验,主要原因有二:①利于拓展,比如,后续实验“通过按钮切换LED灯的亮灭”,即按钮的一次操作(先按下再松开)改变LED灯亮灭的状态,这样就加大了程序的难度,包括需要设置一个用于存储LED灯状态的变量以及要给按钮增加一段去抖动代码;②接收按钮信号再去控制LED灯看似简单,但这可以归纳为——Arduino接收外部信号后通过内部处理再去驱动执行器工作,这样的原理适用于很多实验。
    三、Arduino进阶——模拟信号输入与输出
    数字信号是离散的,模拟信号是连续的,模拟信号类似于一些波形,比如,正弦波、方波等。       Arduino一些外围设备因为电压模拟量的不一样,而表现出来的状态也是不一样的,比如,LED灯不同的电压所表现出来的亮度是不一样的。Arduino并不能直接处理模拟信号,需要通过模数转换再处理,同时通过数模转换输出模拟信号。虽然我们不必知道它是如何转换的,但是我们要清楚它们是以怎样的形式存在的。
    实验三:LED灯亮度调节。图4为线路连接图。

                        图4
    在Arduino的实验中,LED灯使用的频率比较高,原因是LED灯在实现Arduino功能时所能反映的状态是最明显的。本实验实现的功能是通过调节电位器上的旋钮来控制LED灯的亮度。如图4所示,本校所采用的Arduino设备为方便教学及使用均进行了改良,比如,外围设备(LED灯、电位器等)为集成化模块形式;Arduino板上增加了一块盾板(即图4中最上面一块板子),这块盾板的作用主要是使外围设备可以通过杜邦线直接与Arduino板相连,避免了面包线杂乱的连接,使连线变得简单与美观。Arduino板上有A0~A5六个模拟输入引脚,还有六个模拟输出引脚与数字引脚共用的,分别是D3、D5、D6、D9、D10、D11,电位器接输入引脚A0,LED灯接输出引脚D3。
    PWM(脉冲宽度调整)是本实验的核心技术,利用该技术控制LED灯的亮灭,对于PWM的理解很多人觉得很抽象,其实如果加入“视觉暂留”的概念就容易理解了。比如,在极短的单位时间内点亮LED灯的时间为原来的1/4,那么亮度也只有正常情况的25%,这样就起到调节亮度的作用了。PWM技术不仅可以控制强度物理量,比如,亮度、音量等,还可以用于其他装置,比如,机器人中电机的转速。
    四、Arduino拓展——伺服电机的使用
    通过前面三块内容的学习,绝大多数Arduino实验我们已能完成,学生还能根据具体要求创作一些作品,比如,红外线感应灯、火焰报警器、温馨水杯等等。但是如果要学习遥控飞机和机器人的话,我们还得掌握一个设备的使用——伺服电机(即舵机)。利用舵机,我们可以控制飞机舵面的变化,也可以调整机器人各个关节的动作。舵机的种类不少,教学中我们大多选用一种别名为“9g舵机”的舵机,顾名思义舵机很轻,但是设计很好,能驱动相当大的力,完全满足我们应用的需要,旋转的角度范围是0°~180°。
    舵机的控制原理也是利用PWM信号的变化来进行控制,但是在实际的编程过程中我们并不需要了解这些,如果直接写代码我们只需赋值角度值给函数myservo.write()(其中myservo为定义的舵机变量)。如果使用ArduBlock编程就更简单了,因为它有现成的“舵机”图形模块。这里需要注意的是,如果在代码的编写过程中使用了库servo.h,那么输出到舵机上的引脚可以不使用模拟引脚(PWM),因为该库提供了舵机需要的PWM信号,不需要模拟引脚再产生PWM信号。舵机的使用属于Arduino学习的高阶部分,这里不实验举例进行过多讲解。
    “创客”这些年在各个领域都得到推崇,各种各样的活动也如火如荼地开展着。其实在笔者看来,“创客”并不是轰轰烈烈的形式,“创客”是一种精神,一种从无到有敢为人先的信仰,一种不畏艰难险阻勇往直前的意志,一种将这些思想转换为行动的习惯。只有这样才能实现真正的创新,只有这样创客运动才能真正影响到互联网+与工业4.0,也只有这样我们的创客教育才有了意义。

 

发表评论
评论标题:
评论内容:
(500字符)
验证码: 看不清楚,请点击我
    
本网站所有内容属《江苏科技报·教育周刊》所有,未经许可不得转载
编辑部地址:江苏省南京市鼓楼区中山路55号新华大厦48楼
ICP备案编号:ICP备案编号:苏ICP备05076602号