《創意風扇》是第二章《智能風扇》的最后一個專題,主要涉及到舵機和紅外避障傳感器兩個器件,并通過舵機制作出搖頭風扇,通過紅外避障傳感器制作出自動跟蹤風扇。最后通過幾種傳感器的介紹,拋磚引玉,試圖引導學生有更多的創意。
本文主要對本次課的重難點、主要教學設計的設計意圖以及學生上課的反應做部分說明。
相關資源下載地址: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.創意風扇
創意風扇基本屬于學生自由發揮的階段了,我們只是提供了幾種思路:定時風扇(通過按鈕),溫控風扇(溫度傳感器),傾倒自動停止風扇(傾角傳感器)。然后讓學生小卒討論并嘗試實現,可是由于時間關系,學生并沒有完成自己的創意。所以思考以后上課的時候是否可以單獨拿出一節課上創意風扇。
下圖是自動跟蹤風扇的實物圖: