基于Arduino的技术学科教学设计
2020-08-09陈世鸥
陈世鸥
在组织高中通用技术课程中的电子控制技术模块教学时,由于该课程的实践性很强,需要理论联系实际,传统的“灌输式”教学方法显然已无法满足学生学习的需求,这就需要教师结合现代电子、电气技术的发展,适当充实教学内容、变革教学手段。
一、Arduino平台简介
众所周知,Arduino是一款便捷灵活、方便上手的开源平台,包含硬件(各种型号的Arduino板)和软件(ArduinoIDE),常用于电子电路的开发。开发者使用ArduinoIDE编写出的程序简明高效,可读性与兼容性俱佳。且由于开源平台的开放性,有数以万计的专业工程师或电子爱好者都在Arduino平台上开发电子产品,使得Arduino开发逐渐成为当今互联网、物联网时代的一种趋势。
Arduino使用类似Java、C语言的Processing/Wiring搭建开发环境,在IDE中将编写好的程序编译成二进制文件,上传写入微控制器以告诉电路板接下来要做什么。在前端使用各类传感器采样感知外部环境,经过一系列判断、控制后,最终输出至LED灯、马达或其他装置,控制其状态发生变化。简单的数行代码加上必要的扩展元件,就能够实现各种各样的电子设备(比如循迹机器人、智能浇花装置、无人机等)。
二、在高中阶段尝试应用Arduino平台进行初步开发
高中生已经具备了基本的逻辑推理能力,经过信息技术学科相应模块的学习,也有了初步的编程能力,在经过必要的学习后就可以编写出Arduino程序。在具体的任务情境中,可以先用Arduino软件进行逻辑实现,调试并模拟仿真,再结合面包板快速搭接电路实现控制目的。在这个过程中,学生变身为工程师,通过软、硬件知识的相互印证,体验到了现代电子开发的完整流程。
例如,设计一个能安装到机器人上的火焰报警器,当检测到火焰后通过蜂鸣器报警。其设计思路是:软件下达开始指令后,传感器采集红外信号并将其转化为变化的电流信号。当检测到的数据低于设定的阈值,控制器判定为附近有火焰,蜂鸣器开始报警。
将硬件部分连接好(蜂鸣器模块和火焰传感器分别连接到UNO板上的数字口8和模拟口0),并用螺钉固定到机器人扩展支架上,然后在ArduinoIDE中写入并调试以下代码:
//项目-火焰报警器
float sinVal;
int toneVal;
void setup(){
pinMode(8, OUTPUT); //蜂鳴器引脚设置
Serial.begin(9600); //设置波特率为9600 bps
}
void loop(){
int sensorValue = analogRead(0);//火焰传感器连到模拟口,并从模拟口读值
Serial.println(sensorValue);
delay(1);
if(sensorValue<1023){// 如果数据小于1023,说明有火源,蜂鸣器响
for(int x=0; x<180; x++){
//将sin函数角度转化为弧度
sinVal=(sin(x*(3.1412/180)));
//用sin函数值产生声音的频率
toneVal=2000+(int(sinVal*1000));
//给引脚8一个
tone(8,toneVal);
delay(2);
}
}
else{// 如果数据大于等于1023,没有火源,关闭蜂鸣器
noTone(8); //关闭蜂鸣器
}
}
编辑 李建军