為了有效避免學生對LED的審美疲勞,我們根據聚類的思想設計了智能風扇系列!吨悄茱L扇》是第二章《智能風扇》的第一個專題,是對第一章《LED》中的重點(按鈕和傳感器)的鞏固和深化。從物理電路的連接上,增加了帶直流電機的風扇;從編程上,增加了if結構的變式等內容。
本文主要對本次課的重難點、主要教學設計的設計意圖以及學生上課的反應做部分說明。
相關資源下載地址:http://pan.baidu.com/s/1kTqOYs3
1.RoMeo控制直流電機
由于驅動風扇需要用到直流電機,我們從這一課開始更換了板子,用的是DFRobot的新產品——RoMeo,該控制器不僅繼承Arduino328控制器所有的特性而且集成了電機驅動、鍵盤、IO擴展板、無線數據串行通訊等接口。RoMeo中電機控制針跳線,將分配用于電機控制引腳為數字口4,5,6,7。RoMeo控制電機有兩種模式:PWM模式和PLL模式,這里我們用到的是PWM模式,通過改變兩個數字IO引腳和兩個PWM引腳的PWM對直流電動機控制端口實現。引腳定義如下:
引腳
功能
4
電機1方向控制
5
電機1PWM控制
6
電機2PWM控制
7
電機2方向控制
如digitalWrite(4,HIGH)和digitalWrite(4,LOW)是控制電機1的正轉和反轉的,analogWrite(5,100)是控制電機1的轉動速度的。
2.聲控風扇
這部分主要是完成聲控風扇的制作,功能是通過聲音傳感器檢測聲音,檢測到時風扇轉動,否則停止轉動。程序如下:
void setup() {
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
}
void loop() {
int a;
a=analogRead(A0); //讀取模擬口的值
if(a>700){
digitalWrite(4,HIGH); //轉動風扇
analogWrite(5,100); //設置風扇的轉速
delay(2000);
}
else{
analogWrite(5,0);
delay(2000);
}
}
3.換擋風扇
這部分主要是完成換擋風扇的制作,這里的換擋風扇主要是通過按鈕完成換擋的功能的,程序如下:
int i=0;
bool k;
void setup() {
pinMode(2,INPUT);
pinMode(5,OUTPUT);
}
void loop() {
k=digitalRead(2);
if(k==LOW){
i++;
if(i==1){
analogWrite(5,50);
}
else if(i==2){
analogWrite(5,100);
}
else{
analogWrite(5,0);
i=0;
}
delay(50);
}
}
上述程序下載之后,學生會發現不是很靈敏,有的學生會比較感興趣。因為在之前的LED系列中拓展過消抖的知識,所以我們在這里只是提示學生這也是由于消抖引起的,讓學生自己嘗試解決的。另外在拓展中也加入了另一種選擇結構switch結構,這里也為大家提供一下程序,如下:
int i=0;
bool k=0;
bool s=1;
void setup() {
pinMode(2,INPUT);
pinMode(5,OUTPUT);
}
void loop() {
if((!digitalRead(2)) && s){
k=!k;
i++;
switch(i){
case 1:analogWrite(5,50);
break;
case 2:analogWrite(5,100);
break;
case 3:analogWrite(5,200);
break;
default:analogWrite(5,0);
i=0;
}
delay(20);
}
s=digitalRead(2);
}
下圖是學生組裝的智能風扇,包括按鈕和聲音傳感器。其中固定電機的結構件是我們用3D打印機打印出來的。在當前還沒有找到專為基礎教育優化過的Arduino套件的時候,采用3D打印機自行設計一些結構件,似乎也是一種可行的方案。