《创意风扇》是第二章《智能风扇》的最后一个专题,主要涉及到舵机和红外避障传感器两个器件,并通过舵机制作出摇头风扇,通过红外避障传感器制作出自动跟踪风扇。最后通过几种传感器的介绍,抛砖引玉,试图引导学生有更多的创意。
本文主要对本次课的重难点、主要教学设计的设计意图以及学生上课的反应做部分说明。
相关资源下载地址:http://pan.baidu.com/s/1kTqOYs3
1.摇头风扇
前面所学到的风扇都是面向一个方向的,正当学生产生质疑的时候,摇头风扇应运而生,学生对此还是很感兴趣的。使风扇摇头需要用到舵机,也称伺服电机。标准的舵机有3条控制线,分别是电源、地和信号线。舵机的引脚定义为:棕色线——GND,红色线——5V,橙色线——信号线,而信号线只能是数字口9或者10。我们使用的SG90舵机转动的最大角度为180°。
有了上一专题学习的红外库为基础,这一专题趁热打铁,继续引入库函数,程序如下:
#include
Servo myservo; // 创建一个伺服电机对象
int i;
void setup()
{
pinMode(5,OUTPUT);
myservo.attach(9); // 9号引脚输出电机控制信号
}
void loop()
{
analogWrite(5,100);
for(i=0;i<180;i++){
myservo.write(i); // 设定伺服电机的位置
delay(100); // 等待电机旋转到目标角度
}
for(i=179;i>=0;i--){
myservo.write(i);
delay(100);
}
}
2.自动跟踪风扇
自动跟踪风扇是通过左右两个红外数字避障传感器检测障碍物的运动方向的,若左侧传感器检测到障碍物而右侧传感器没有检测到,则舵机向左转动;若右侧传感器检测到障碍物而左侧传感器没有检测到,则舵机向右转动;若两侧传感器同时检测到障碍物或者都没检测到障碍物,则保持原来方向。总之就是,手在哪风扇就可以转向那(前提是风扇检测到手并且角度不超过180)。
用到的红外数字避障传感器输出的信号为数字信号,探测距离为3-18cm,引脚定义为:红线——5V,黄线——信号,绿线——GND。程序如下:
#include //引入lib
Servo myservo;
int left=2;
int right=12;
int i;
int j;
int n=0;
void setup() {
myservo.attach(9);
}
void loop() {
analogWrite(5,200);
i=digitalRead(left);
j=digitalRead(right);
while(i==LOW && j==HIGH){//左转
if(n<180){
n++;
myservo.write(m);
delay(100);
i=digitalRead(left);
j=digitalRead(right);
}
}
while(j==LOW && i==HIGH){//右转
if(n>0){
n--;
myservo.write(n);
delay(100);
i=digitalRead(left);
j=digitalRead(right);
}
}
}
3.创意风扇
创意风扇基本属于学生自由发挥的阶段了,我们只是提供了几种思路:定时风扇(通过按钮),温控风扇(温度传感器),倾倒自动停止风扇(倾角传感器)。然后让学生小卒讨论并尝试实现,可是由于时间关系,学生并没有完成自己的创意。所以思考以后上课的时候是否可以单独拿出一节课上创意风扇。
下图是自动跟踪风扇的实物图: