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

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

        Arduino機器人第4課:智能風扇

        作者:謝作如   來源:本站原創   點擊數:  更新時間:2014年05月04日   【字體:

          為了有效避免學生對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打印機自行設計一些結構件,似乎也是一種可行的方案。
        關閉窗口

        相關文章

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