在這個專案中,您將學習使用digitalRead()函數從數位I/O腳位讀取數據。
Arduino Uno板上的數位I/O腳位通常位於USB連接埠一側並可能在腳位上有標示為數位的標籤,就像我的情況一樣:
這些腳位的編號從0到13,但除非沒有足夠的腳位,否則您幾乎不會使用腳位0和1,因為它們用於串列通信(請參閱印刷在腳位上的rx和tx標籤)。
首先,我們將建立電路,然後轉到電腦上的Arduino IDE。
這個電路非常簡單。我們將使用一個按鈕,其中一個引腳連接到Arduino的GND,另一個引腳連接到數位腳位#3(任何其他數位腳位均可)。
我們將每秒檢測腳位#3的電壓水平。我們將定義腳位號碼為常數以避免在代碼中使用神奇數字:
#define BUTTON_PIN 3 在setup()函數中,我們呼叫pinMode()將此腳位設置為輸入腳位,並使用INPUT_PULLUP選項:
pinMode(BUTTON_PIN, INPUT_PULLUP); 需要使用INPUT_PULLUP選項,因為默認情況下,如果沒有任何東西連接到腳位上(如果按鈕未點擊,電路是斷開的,就像沒有任何東西連接到腳位上),輸入腳位是浮動的,這意味著它容易受到干擾,可能會隨機選擇0或1。
在電路中,我們可以添加上拉電阻或下拉電阻,但更簡單的方法是將INPUT_PULLUP標誌傳遞給Arduino。如果沒有連接任何東西,它將默認為1。
然後,在loop()函數中,我們使用digitalRead()函數獲取輸入腳位的值:
int value = digitalRead(BUTTON_PIN); 這個值可以是0或1,取決於輸入。
如果按下按鈕,Arduino將檢測到0。
如果未按下按鈕,Arduino將檢測到1。
您也可以使用常數LOW(對應0)和HIGH(對應1)。
這個值可以打印到串行輸出上,就像在這個程式中一樣:
#define BUTTON_PIN 3 void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); Serial.begin(9600); } void loop() { int value = digitalRead(BUTTON_PIN); Serial.print(value); delay(1000); } 保存並上傳程式到Arduino,然後在Arduino IDE中點擊右上角的“Serial Monitor”按鈕:
它將顯示串行接口監視器。請確保底部調整到9600波特率,您應該會看到一堆1,直到您按下按鈕一秒鐘,此時您應該會得到一個0。
我们还可以点亮一个LED。我们可以将LED添加到电路中,但我们也可以使用Arduino Uno板上的內建LED,它映射到数字I/O腳位#13。我们可以这样编写程序:
#define BUTTON_PIN 3 void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(13, OUTPUT); digitalWrite(13, LOW); } void loop() { int value = digitalRead(BUTTON_PIN); digitalWrite(13, value); } 实时反映按钮输入值,无需等待1秒。之前我们这样做是为了避免向串行接口写入过多的值,使其难以管理。...