按鈕開關常用接法(低態動作)


實驗板4×4陣列開關(低態動作)


pinMode(pb, INPUT_PULLUP); // 宣告pb為輸入腳,並啟用內部拉上電阻
pinMode(pb, INPUT); // 宣告pb為輸入腳,使用外部拉上電阻
數位讀入(digitalRead)
buttonState = digitalRead(pb); // pb為按鈕開關接腳,讀取狀態(僅有 HIGH 或 LOW)後儲存於buttonState
if else 條件判斷: if 參考說明,else 參考說明。
if(條件式)
程式敘述;
else
程式敘述;
if(digitalRead(pb) == LOW)
digitalWrite(LED[0],LOW);
else
digitalWrite(LED[0],HIGH);
if(條件式)
{
//程式區塊
}
else
{
//程式區塊
}
if(digitalRead(pb) == LOW)
{
digitalWrite(LED[0],LOW);
digitalWrite(LED[7],HIGH);
}
else
{
digitalWrite(LED[0],HIGH);
digitalWrite(LED[7],LOW);
}
if(條件式)
{
//程式區塊
}
else if(條件式)
{
//程式區塊
}
else
{
//程式區塊
}
if(count == 1)
{
Serial.println("case 1.");
}
else if(count == 2)
{
Serial.println("case 2.");
}
else if(count == 3)
{
Serial.println("case 3.");
}
else if(count == 4)
{
Serial.println("case 4.");
}
else if(count == 5)
{
Serial.println("case 5.");
}
else // 以上皆非
{
Serial.println("case else.");
}
參考範例:
const int LED[8] = {15, 16, 17, 18, 19, 21, 22, 23}; // 宣告LED為整數陣列,儲存8個LED接腳位置
const int pb = 25; // 宣告pb為整數,儲存按鈕開關接腳
int count = 0; // 宣告count為整數變數,儲存按鈕被按下的次數
bool lastButtonState = HIGH; // 宣告lastButtonState為布林變數,儲存按鈕開關上一次的狀態
void setup() {
Serial.begin(9600); // 啟用串列埠監看視窗
pinMode(pb, INPUT); // 宣告pb為輸入腳,並使用外部拉上電阻
for (int i = 0; i <= 7; i++)
{
pinMode(LED[i], OUTPUT); // 宣告LED[0]~LED[7]其對應的接腳為輸出腳
digitalWrite(LED[i], HIGH); // 設定LED[0]~LED[7]其對應的接腳為HIGH
}
}
void loop() {
bool buttonState = digitalRead(pb); // 讀取當前按鈕狀態:未按下(HIGH),按下(LOW)
// 若按鈕從未按下(HIGH)到按下(LOW)
if(lastButtonState == HIGH && buttonState == LOW)
{
Serial.println("Button pressed.");
count++; // 按鈕次數加1
Serial.print("Button pressed count: ");
Serial.println(count);
}
// 若按鈕從按下(LOW)到未按下(HIGH)
else if(lastButtonState == LOW && buttonState == HIGH)
{
Serial.println("Button released.");
}
lastButtonState = buttonState; // 更新按鈕狀態
delay(30); // 小延遲,避免按鈕重複讀取 (防止抖動)
}
作業練習:
- 開機後,8個LED燈全亮,1秒後全滅。
- 每按一下按鈕開關,依序循環顯示下列狀態:
- 單個LED,左去,右回。
- 單個LED,右去,左回。
- 3個LED連在一起,左去,右回。
- 3個LED連在一起,右去,左回。
- 偶數編號的4個LED燈亮。
- 奇數編號的4個LED燈亮。
- 8個LED燈全亮。
- 8個LED燈全滅。
- 每個動作的狀態必須搭配文字說明顯示在監看視窗上。
- 在Wokwi網站上進行模擬,並完成實體接線。