引脚 |
说明 |
VCC |
电源+5V输入 |
GND |
电源地线 |
Echo |
超声波接收端 |
Trig |
超声波发射端 |
自动变速风扇则是根据超声波测到的其与障碍物的距离自动改变风扇转动的速度。在为学生讲述完超声波测距的原理之后,我们发给学生一个超声波测距的函数,然后让学生参考此函数编写自动变速风扇的程序。我发现,大部分学生都能够通过小组两人的合作将程序编写出来。程序如下:
int supersonic(int trigpin,int echopin){
int s;
digitalWrite(trigpin,LOW);
delayMicroseconds(2);
digitalWrite(trigpin,HIGH);
delayMicroseconds(10);
digitalWrite(trigpin,LOW);
s=pulseIn(echopin,HIGH);
s=s/58;
return(s);
}
void setup() {
pinMode(5,OUTPUT);
pinMode(10,OUTPUT);//Trig
pinMode(9,INPUT);//Echo
}
void loop() {
int s;
s=supersonic(10,9);
if(s<100){
analogWrite(5,map(s,2,450,40,255));
}
else{
digitalWrite(5,LOW);
}
}
这部分,我主要是想让学生知道,Arduino也是可以进行函数的引用的,如超声波测距的函数。
注意:Ardublock中提供了超声波的函数,低年级的学生,用Ardublock可以做这个范例。
2.遥控风扇
遥控风扇主要使用的是红外遥控套件,包括红外接收头和红外遥控器。红外接收头的接线顺序为:D接数字口,VCC接5V,GND接GND。红外遥控器有21个按键,并有对应的键值,在使用时,通过键值对遥控器进行解码,我们用到的红外遥控器的键值(十进制的数值),将红外遥控器键值附表发给学生,并将红外遥控的库发给学生,让学生将库放到Arduino的库中。
然后,我将最简单的一种遥控风扇的程序发给学生,让他们下载程序并察看现象。有的学生则根据我的程序改编成更加复杂多样的遥控,比如有遥控换挡风扇。我发给学生的参考程序如下:
#include
IRrecv irrecv(11);//红外接收头
decode_results results;
void setup() {
irrecv.enableIRIn();
pinMode(5,OUTPUT);
}
void loop() {
if(irrecv.decode(&results)){
long remote=results.value;
if(remote==16580863){//红色键
analogWrite(5,100);
}
else if(remote==16597183){//STOP
analogWrite(5,0);
}
irrecv.resume();//等待下一次
}
}
在这部分,我试图让学生接触并理解Arduino的库函数,从课堂实际教学看来,通过本节课,学生对库函数已经有了初步认识。
注意:目前Ardublock还没有支持遥控套件,但是Ardublock的开发者已经在写新的版本,请各位拭目以待。我发现学生对遥控和Arduino结合还是很感兴趣的。在小车的专题中,我们还设计了遥控小车这一专题,把机器人变成遥控车。
下图便是一个变速风扇加遥控风扇的组合体。