<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> Arduino >> 瀏覽文章

        Arduino機器人第5課:變速風扇

        作者:謝作如   來源:本站原創   點擊數:  更新時間:2014年05月04日   【字體:
            《變速風扇》是第二章《智能風扇》的第二個專題,主要涉及到超聲波傳感器和紅外遙控兩個模塊,要求學生能通過超聲波傳感器制作出自動變速風扇,通過紅外遙控制作出遙控風扇。在程序的難度上,增加了庫函數的調用。
            本文主要對本次課的重難點、主要教學設計的設計意圖以及學生上課的反饋做部分說明。
           
        相關資源下載地址:http://pan.baidu.com/s/1kTqOYs3
         
            1.自動變速風扇
            自動變速風扇用到的主要是HC-SR04超聲波傳感器,在使用時,應先將其插好在電路板上再通電,避免產生高電平的誤動作,如果產生了,重新通電方可解決,引腳定義如下:
         

        引腳

        說明

        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結合還是很感興趣的。在小車的專題中,我們還設計了遙控小車這一專題,把機器人變成遙控車。

         

        下圖便是一個變速風扇加遙控風扇的組合體。



         

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮