專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> Arduino >> 瀏覽文章

Arduino機(jī)器人第5課:變速風(fēng)扇

作者:謝作如   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年05月04日   【字體:
    《變速風(fēng)扇》是第二章《智能風(fēng)扇》的第二個(gè)專題,主要涉及到超聲波傳感器和紅外遙控兩個(gè)模塊,要求學(xué)生能通過(guò)超聲波傳感器制作出自動(dòng)變速風(fēng)扇,通過(guò)紅外遙控制作出遙控風(fēng)扇。在程序的難度上,增加了庫(kù)函數(shù)的調(diào)用。
    本文主要對(duì)本次課的重難點(diǎn)、主要教學(xué)設(shè)計(jì)的設(shè)計(jì)意圖以及學(xué)生上課的反饋?zhàn)霾糠终f(shuō)明。
   
相關(guān)資源下載地址:http://pan.baidu.com/s/1kTqOYs3
 
    1.自動(dòng)變速風(fēng)扇
    自動(dòng)變速風(fēng)扇用到的主要是HC-SR04超聲波傳感器,在使用時(shí),應(yīng)先將其插好在電路板上再通電,避免產(chǎn)生高電平的誤動(dòng)作,如果產(chǎn)生了,重新通電方可解決,引腳定義如下:
 

引腳

說(shuō)明

VCC

電源+5V輸入

GND

電源地線

Echo

超聲波接收端

Trig

超聲波發(fā)射端

 

自動(dòng)變速風(fēng)扇則是根據(jù)超聲波測(cè)到的其與障礙物的距離自動(dòng)改變風(fēng)扇轉(zhuǎn)動(dòng)的速度。在為學(xué)生講述完超聲波測(cè)距的原理之后,我們發(fā)給學(xué)生一個(gè)超聲波測(cè)距的函數(shù),然后讓學(xué)生參考此函數(shù)編寫自動(dòng)變速風(fēng)扇的程序。我發(fā)現(xiàn),大部分學(xué)生都能夠通過(guò)小組兩人的合作將程序編寫出來(lái)。程序如下:

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);

  }

}

這部分,我主要是想讓學(xué)生知道,Arduino也是可以進(jìn)行函數(shù)的引用的,如超聲波測(cè)距的函數(shù)。

注意:Ardublock中提供了超聲波的函數(shù),低年級(jí)的學(xué)生,用Ardublock可以做這個(gè)范例。

 

2.遙控風(fēng)扇

 

遙控風(fēng)扇主要使用的是紅外遙控套件,包括紅外接收頭和紅外遙控器。紅外接收頭的接線順序?yàn)椋篋接數(shù)字口,VCC接5V,GND接GND。紅外遙控器有21個(gè)按鍵,并有對(duì)應(yīng)的鍵值,在使用時(shí),通過(guò)鍵值對(duì)遙控器進(jìn)行解碼,我們用到的紅外遙控器的鍵值(十進(jìn)制的數(shù)值),將紅外遙控器鍵值附表發(fā)給學(xué)生,并將紅外遙控的庫(kù)發(fā)給學(xué)生,讓學(xué)生將庫(kù)放到Arduino的庫(kù)中。

然后,我將最簡(jiǎn)單的一種遙控風(fēng)扇的程序發(fā)給學(xué)生,讓他們下載程序并察看現(xiàn)象。有的學(xué)生則根據(jù)我的程序改編成更加復(fù)雜多樣的遙控,比如有遙控?fù)Q擋風(fēng)扇。我發(fā)給學(xué)生的參考程序如下:

#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();//等待下一次

  }

}

在這部分,我試圖讓學(xué)生接觸并理解Arduino的庫(kù)函數(shù),從課堂實(shí)際教學(xué)看來(lái),通過(guò)本節(jié)課,學(xué)生對(duì)庫(kù)函數(shù)已經(jīng)有了初步認(rèn)識(shí)。

 

注意:目前Ardublock還沒(méi)有支持遙控套件,但是Ardublock的開(kāi)發(fā)者已經(jīng)在寫新的版本,請(qǐng)各位拭目以待。我發(fā)現(xiàn)學(xué)生對(duì)遙控和Arduino結(jié)合還是很感興趣的。在小車的專題中,我們還設(shè)計(jì)了遙控小車這一專題,把機(jī)器人變成遙控車。

 

下圖便是一個(gè)變速風(fēng)扇加遙控風(fēng)扇的組合體。



 

關(guān)閉窗口

相關(guān)文章