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

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

        Arduino機器人第2課:按鈕控制的LED

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

         專題二“按鈕控制的LED”是對專題一的鞏固與深化,在學生了解了Arduino的基礎知識后,本專題從物理電路的連接上,增加了按鈕;從編程上,增加了變量、數字輸入和選擇結構等內容。

        本文主要對本次課的重難點、主要教學設計的設計意圖以及學生上課的反應做部分說明。
         

        相關資源下載地址:http://pan.baidu.com/s/1kTqOYs3

         
        1.連接按鈕
         
        這一部分,我們主要是引導學生將按鈕接到板子上,這里特別需要提醒的是按鈕是接數字口還是模擬口。按鈕有兩種狀態按下與放開,而數字口的值只有0和1,所 以教師要引導學生將按鈕接的是數字口。在連接時,會發現有的學生忘了線的接法,所以教師還要提醒學生黑線接GND,紅線接VCC,第三根線接數字口。此 外,我們還要向學生說明我們使用的DFROBOT的按鈕按下是LOW(0),放開是HIGH(1),其他廠家的按鈕可能不是這樣的。
        在這一點上,我們對Arduino教育機器人的模塊標準制訂非常有感觸,不同標準對課程的開設帶來很多不必要的影響,尤其是DFRobot的V5和V7的板子,在線序上讓我們很頭疼。
         
        2.初步嘗試按鈕控制LED——按下亮,放開滅
         
        引導學生我們將要做的第一個嘗試,即按鈕按下LED亮,放開LED滅。之后我們把程序發給學生,為學生粗略解讀程序(包括bool、“=”等),請他們下載觀察現象。與預設的情況相反,這樣便引出了用“!”來實現。在這里,學生還是比較容易接受的。
        Arduino的范例中提供了按鈕控制LED的代碼。我們之所以沒有采用這種形式,主要是希望直接讓學生對Arduino的bool變量和數字端口的值結合起來理解。

        arduino的范例:

        我們的范例:

        void loop(){
          buttonState = digitalRead(buttonPin);

        if (buttonState == HIGH) {     
            digitalWrite(ledPin, HIGH); 
          }
          else {
            digitalWrite(ledPin, LOW);
          }
        }

        void loop() {

          a=(digitalRead(2));

          digitalWrite(5,a);

        }

         
        3.進一步探究按鈕控制的LED——按下亮,延時滅

             前面的按鈕控制LED比較簡單,學生甚至覺得這和在LED接個傳統開關沒有區別,所以用具體的情境引出延時的概念。這個過程中最重要的是,首先得判斷按鈕是否按下,自然地引出選擇結構(我們用的是if結構),然后延時一段時間,再將LED滅掉。有的學生沒有認真聽講,在判斷是否按下的時候,條件判斷用的是“=”而不是“==”;此外設置完延時之后,并沒有將lED 滅掉,導致按下按鈕,LED一直亮著。
         
        4.一個按鈕控制一個LED——按下亮,再按下滅
         
        這一部分我們分為兩個步驟來完成。
        第一步,先寫代碼來判斷當按鈕按下,就改變Led的狀態。
        強調的還是先判斷按鈕是否按下,只有按鈕按下的時候才改變LED的狀態,提醒學生可引入一個變量k(k=0,LED滅,k=1,LED亮)。當學生發現問 題后(控制及其不穩定),然后思考原因,引導他們探究。通過這一探究,讓學生深刻體會到Arduino代碼中Loop部分是循環執行的。而且 Arduino的執行速度非?!
        第二步,引導學生再加入一個變量,記錄上一次的狀態。
        我們提出“按下亮,放開,再按下滅”的思路,引導學生再引入一個記錄按鈕狀態的變量s,這時,控制相對穩定許多。此時,還會有部分學生質疑沒達到百分百的穩定,我們向他們提出了拓展任務——按鈕的消抖。
         
        5.擴展任務:按鈕的消抖
         
        向學生解釋抖動現象產生的原理及解決方法(我們采用的是延時),請學生自己嘗試。但是由于本課內容量較大,時間已經來不及了,所以拓展任務并沒有開展。
        從這一課的實踐可以看出,高中的學生可以根據學生的編程能力,完成使用變量來實現一個按鈕控制一只LED。小學或者初中的學生,估計只能到第四部分的第一步,用延時完成就差不多了。下一周我們將開始初中的教學實踐了。
         
        收獲:
         
        學生在課間做了一些其他的創意嘗試,如有的學生設計了“按鈕按下一個亮,再按下這個滅,另外兩個亮”,“按鈕按下一個亮,再按下兩個亮,再按下三個亮”等,讓我們很是欣喜的。
        關閉窗口

        相關文章

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