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

    基于Proteus的Arduino學習02-按鍵與LED燈的使用

    作者:我不是奔跑哥   來源:我不是奔跑哥的blog   點擊數:  更新時間:2014年06月08日   【字體:

    按鍵是重要的人機交互的工具,可以通過按鍵將數據輸入給計算機(此處為Arduino),讓Arduino按照人所想的方式工作,或者輸入Arduino的一些工作參數。LED燈可以作為程序調試過程中的指示燈,讓調試者清楚地知道程序現在運行到哪一步,從而可以很快的找出程序的問題所在。

     

    在上一節的學習筆記《Arduino UNO實驗板設計》中,我們帶著大家學會了如何使用Protues仿真軟件構建出軟件Arduino的實驗板,并在軟件Arduino UNO實驗板上驗證了閃爍燈的例子,下面我們接著第一節的學習筆記,繼續下面的學習,讓LED燈接受我們的控制,像平時我們打開和關閉房間的節能燈一樣方便。

    首先,我們需要打開上次的Arduino UNO實驗板,如圖1所示。從下圖中,我們可以看到Arduino UNO的核心ATmega328P單片機,綠色LED燈LED-GREEN,串口通訊接口COMPIM,這個構成了Arduino的最小系統。

    圖1 Arduino UNO實驗板

    下面我們要在Arduino UNO實驗板上添加按鍵,在元器件選擇框中輸入“BUTTON”,如圖2所示。選擇上面一個按鍵,并點擊OK將其添加至元器件欄中。

    圖2 "BUTTON"按鍵選擇

    從元器件欄中將按鍵放置到Arduino UNO實驗板的合適位置,這里我們選擇數字口8,所以放置在其附近,并放置一個10KΩ的電阻,如圖3所示。將按鍵的一端連接至數字口8,一端連接至+5V電源端,電阻的一端連接至數字口8,一端接至低端,構成一個下拉電阻【注】,連接之后的圖如圖4所示。

    【注】下拉電阻的一端接至低端,因而叫做下拉電阻,即將電路節點的電平向低方向(地)拉。下拉電阻的主要作用是在電路驅動器(此處為按鍵)斷開時給線路(節點)以一個固定的低電平!疚墨I1】

    圖3 在Arduino UNO實驗板上放置按鍵和電阻

     
    圖4 連接好按鍵和電阻的Arduino UNO實驗板

    最后,還需要完成Arduino軟件設計,驗證我們的設計是否可行。先打開ArduinoIDE自帶的例子,如圖5所示。

    圖5 打開Arduino IDE的BUTTON示例

    我們要對Arduino IDE自帶“BUTTON”例子進行修改,將const int buttonPin = 2;更改為const int buttonPin = 8;因為我們的按鍵連接在數字口8上面,更改之后的程序如下所示。

    // set pin numbers:

    const int buttonPin = 8;     // the number of the pushbutton pin

    const int ledPin =  13;      // the number of the LED pin

     

    // variables will change:

    int buttonState = 0;         // variable for reading the pushbutton status

     

    void setup() {

      // initialize the LED pin as an output:

      pinMode(ledPin, OUTPUT);     

      // initialize the pushbutton pin as an input:

      pinMode(buttonPin, INPUT);    

    }

     

    void loop(){

      // read the state of the pushbutton value:

      buttonState = digitalRead(buttonPin);

     

      // check if the pushbutton is pressed.

      // if it is, the buttonState is HIGH:

      if (buttonState == HIGH) {    

        // turn LED on:   

        digitalWrite(ledPin, HIGH); 

      }

      else {

        // turn LED off:

        digitalWrite(ledPin, LOW);

      }

    }

    將更改之后的程序,編譯通過之后,在Protues仿真環境中單擊ATmega328P單片機,將Arduino IDE生成的HEX文件調入到Arduino UNO實驗板中運行。

    當按鍵斷開時,LED熄滅,如圖6所示;當按鍵閉合時,LED點亮。如圖7所示。

    圖6 按鍵斷開時,LED熄滅
    圖7 按鍵閉合時,LED點亮

    我們對上面的設計進行一些更改,將按鍵和10KΩ電阻的GND和+5V交換位置,點擊GND彈出更改框為圖8所示。將GND改為+5V,+5V改為GND,實驗板即變為圖9所示。10KΩ的電阻也由下拉電阻變為上拉電阻!咀ⅰ

    【注】上拉電阻就是將不確定的信號通過一個電阻鉗位在高電平,電阻同時起限流作用!疚墨I2】

    圖8 更改電源端與地端

    圖9 更改之后的實驗板

    當我們進行仿真時,出現了與前面相反的效果:當按鍵斷開時,LED點亮,如圖10所示;當按鍵閉合時,LED熄滅,如圖10所示。這就是上拉電阻與下拉電阻的作用。

     

    圖10 當按鍵斷開時,LED點亮
     
    圖11 當按鍵閉合時,LED熄滅

    參考文獻:

    文獻1:http://baike.baidu.com/view/1546676.htm

    文獻2:http://baike.baidu.com/view/1106477.htm

    關閉窗口

    相關文章

    亚洲一区二区制服在线|在绩专区欧美自拍日韩|青春娱乐网97超碰人人射|在线观看国产网址你懂的