Arduino - 連線開關

按鍵或開關連線電路中的兩個開路端子。當你按下連線到引腳 8 的按鈕開關時,此示例將點亮引腳 2 上的 LED。

連線開關

下拉電阻

下拉電阻用於電子邏輯電路,以確保在外部器件斷開或處於高阻態時,Arduino 的輸入穩定在預期的邏輯電平。由於沒有任何東西連線到輸入引腳,因此並不意味著它是邏輯零。下拉電阻連線在地和裝置上的相應引腳之間。

數位電路中的下拉電阻示例如下圖所示。按鈕開關連線在電源電壓和微控制器引腳之間。在這樣的電路中,當開關閉合時,微控制器輸入處於邏輯高值,但是當開關開啟時,下拉電阻將輸入電壓拉低至地(邏輯零值),從而防止輸入處的未定義狀態。

下拉電阻必須具有比邏輯電路的阻抗更大的電阻,否則它可能將電壓拉得太低並且引腳的輸入電壓將保持在恆定的邏輯低值,而不管開關位置如何。

下拉電阻

需要的元件

你將需要以下元件 -

  • 1×Arduino UNO 板
  • 1×330 歐姆電阻器
  • 1×4.7K 歐姆電阻(下拉)
  • 1×LED

程式

按照電路圖進行連線,如下圖所示。

電路圖的連線

草圖

在你的計算機上開啟 Arduino IDE 軟體。用 Arduino 語言編碼將控制你的電路。單擊“新建”開啟新的草圖檔案。

草圖

Arduino 程式碼

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 8; // the number of the pushbutton pin
const int ledPin = 2; // 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);
   }
}

程式碼注意

當開關開啟時,(按鈕沒有按下按鈕),按鈕的兩個端子之間沒有連線,所以引腳連線到地(通過下拉電阻),我們讀取為低電平。當開關閉合(按下按鈕)時,它在兩個端子之間建立連線,將引腳連線到 5 伏,這樣我們就讀取了一個高電平。

結果

按下按鈕時 LED 指示燈亮,釋放按鈕時指示燈熄滅。