Arduino:四位數七段顯示器顯示按鈕按下的計數值
Arduino 開發板:UNO
完整程式碼
while(!digitalRead(pushButtonPin)){ /* 若偵測到第 4 腳低準位 */
countHundredsDigit = remainder/100; /* 找出計數值的百位數值 */
程式碼說明
const int scanPin[] = {5, 6, 7, 8};
int dataOut[] = {0, 0, 0, 0};
void loop() {
while(begin){
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, MSBFIRST, sevenSegCode[0]);
digitalWrite(latchPin, 1);
digitalWrite(scanPin[0], 0);
delay(1);
digitalWrite(scanPin[0], 1);
push_button_detection();
}
.................
}
數位輸出指令:digitalWrite(pin, value)
void loop(){
while(begin){
..........
}
if(!begin){
push_button_detection();
calCountDigit();
for (int i = 0; i < scanDigitNum;i++){
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, MSBFIRST, sevenSegCode[dataOut[i]]);
digitalWrite(latchPin, 1);
digitalWrite(scanPin[i], 0);
delay(1);
digitalWrite(scanPin[i], 1);
}
}
}
void push_button_detection(){
while(!digitalRead(pushButtonPin)){
previous_time = millis();
while(!digitalRead(pushButtonPin));
now_time = millis();
if ((now_time-previous_time)>=50 ){
count++;
if (count >9999)
count = 0;
begin = false;
}
}
if(!digitalRead(resetButtonPin))
count = 0;
}
測試按鈕防彈跳效果程式碼
void push_button_detection();
pinMode(push_button,INPUT);
void loop() {
push_button_detection();
void push_button_detection(){
while(!digitalRead(push_button)){ // 偵測到 "0"
previous_time = millis();
now_time = millis();
count++;
Serial.print("按鈕按下第 ");
}
}
讀取數位輸入指令:digitalRead(pin)
void calCountDigit(){
countThousndsDigit = count/1000;
remainder = count%1000;
countHundredsDigit = remainder/100;
remainder = remainder%100;
countTenthsDigit = remainder/10;
remainder = remainder%10;
countUnitsDigit = remainder;
dataOut[3] = countThousndsDigit;
dataOut[2] = countHundredsDigit;
dataOut[1] = countTenthsDigit;
dataOut[0] = countUnitsDigit;
if (countThousndsDigit != 0)
scanDigitNum = 4;
else if (countHundredsDigit != 0)
scanDigitNum = 3;
else if (countTenthsDigit != 0)
scanDigitNum = 2;
else
scanDigitNum = 1;
}











留言
張貼留言