上拉下拉的開關


 
一個普通的開關,在電子世界裏卻分為上拉 (Pull-Up) 和下拉 (Pull-Down) 設計。

上拉的意思是指單板機的接口由一個電阻接到+5V, 另一方則通過一個開關接地,閉合後下拉到接地。這樣,開關敝開 (Open) 時接口的狀態為HIGH,開關閉合 (Close) 時接口狀態變為LOW。其實上拉是指那枚電阻 (Pull-up resistor)。但一般我們會用它形容整個開關電路設計,稱為上拉開關設計 (Pull-up Button)

這個實驗是實作上拉,下拉及Arduino內部下拉的線路示範。







上圖籃色部份 (S1) 是上拉設計,綠色部份 (S2) 是下拉設計,橙色部份 (S3) 是內部上拉設計,其實即是無需電阻,由 Audrino 內部自行安排一個合適的電阻。

以下是實驗的 Arduino 編程及視頻示範:


/** Pull-Up and Pull-Down Buttons
* Kevin Lee 08 Aug 2018
*
*/

#define PUB 2 // Pull-up button
#define PDB 3 // Pull-down button
#define IUB 4 // Internal Pull-up button

#define PUL 5 // Pull-up LED
#define PDL 6 // Pull-down LED
#define IUL 7 // Internal Pull-up LED

void setup() {
  pinMode(PUB, INPUT);
  pinMode(PDB, INPUT);
  pinMode(IUB, INPUT_PULLUP);

  pinMode(PUL, OUTPUT);
  pinMode(PDL, OUTPUT);
  pinMode(IUL, OUTPUT);

  // Make Sure all LED are OFF at start
  digitalWrite(PUL, LOW);
  digitalWrite(PDL, LOW);
  digitalWrite(IUL, LOW);
}

void loop() {
  // Press Pull-up button gives LOW
  if (digitalRead(PUB) == LOW)
    digitalWrite(PUL, HIGH); // Lit LED
  else
    digitalWrite(PUL, LOW); // Turn Off LED
  // Press Pull-down button gives HIGH
  if (digitalRead(PDB) == HIGH)
    digitalWrite(PDL, HIGH);
  else
    digitalWrite(PDL, LOW);
  // Internal Pull-up = Pull-up button, except the resistor is not needed
  if (digitalRead(IUB) == LOW)
    digitalWrite(IUL, HIGH);
  else
    digitalWrite(IUL, LOW);
}





留言

這個網誌中的熱門文章

東山再蝕風雲篇