25.碼表
本程式碼以模擬碼表的使用,把單一個按鈕放在a0腳位
#include <Wire.h> //載入I2C介面函式庫
#include <LiquidCrystal_I2C.h> //載入I2C液晶控制函式庫
LiquidCrystal_I2C lcd(0x27,16,2); // 若LCD 無法啟用,請將0X3F 改為0X27
int a,b,c,d;//宣告變數a b c d 為整數類型 (值域 -32767 ~ 32767)
unsigned long t1,t2;
int hr,mi,se,se2;
String cmd1 = "1.ready to start";
String cmd2 = "2.wait for end";
String cmd3 = "3.exit & restart";
void setup() {
Serial.begin(9600); //啟用序列埠介面,可以從序列埠視窗抓到數據
lcd.init(); //LCD初始化
lcd.backlight(); //LCD 開啟背光
lcd.clear(); // LCD清除畫面
Serial.println("A0,A1,A2,A3"); //在序列埠顯示 AO,A1,A2,A3,A4
}
void loop() {
lcd.clear();
lcd.setCursor(0,1); //設定LCD游標至第0行,第0列的位置
lcd.print(cmd1);
lcd.print(" "); //LCD在現在的游標顯示空白,這樣可以在位數縮減時,清除多的位數
do{
a = analogRead(A0); //讀取類比腳位A0,可以將0~5V 轉化成 0~1023
}while(a<500);
t1=millis();
delay(500);
lcd.clear();
lcd.setCursor(0,1); //設定LCD游標至第0行,第0列的位置
lcd.print(cmd2);
lcd.print(" "); //LCD在現在的游標顯示空白,這樣可以在位數縮減時,清除多的位數
do{
a = analogRead(A0); //讀取類比腳位A0,可以將0~5V 轉化成 0~1023
se2=(millis()-t1)%1000;
se=(millis()-t1)/1000%60;
mi=(millis()-t1)/1000/60%60;
hr=(millis()-t1)/1000/60/60;
lcd.setCursor(0,0); //設定LCD游標至第0行,第0列的位置
lcd.print(hr);
lcd.print(":");
if(mi<10){lcd.print("0"); lcd.print(mi);
}else if(mi>9){lcd.print(mi);}
lcd.print(":");
if(se<10){lcd.print("0"); lcd.print(se);
}else if(se>9){lcd.print(se);}
lcd.print(":");
if(se2<10){lcd.print("00"); lcd.print(se2);
}else if(se2>9&&se2<100){lcd.print("0"); lcd.print(se2);
}else if(se2>99){lcd.print(se2); }
}while(a<500);
t2=millis();
se2=(t2-t1)%1000;
se=(t2-t1)/1000%60;
mi=(t2-t1)/1000/60%60;
hr=(t2-t1)/1000/60/60;
lcd.setCursor(0,0); //設定LCD游標至第0行,第0列的位置
lcd.print(hr);
lcd.print(":");
if(mi<10){lcd.print("0"); lcd.print(mi);
}else if(mi>9){lcd.print(mi);}
lcd.print(":");
if(se<10){lcd.print("0"); lcd.print(se);
}else if(se>9){lcd.print(se);}
lcd.print(":");
if(se2<10){lcd.print("00"); lcd.print(se2);
}else if(se2>9&&se2<100){lcd.print("0"); lcd.print(se2);
}else if(se2>99){lcd.print(se2); }
delay(500);
lcd.setCursor(0,1); //設定LCD游標至第0行,第0列的位置
lcd.print(cmd3);
lcd.print(" "); //LCD在現在的游標顯示空白,這樣可以在位數縮減時,清除多的位數
do{
a = analogRead(A0); //讀取類比腳位A0,可以將0~5V 轉化成 0~1023
}while(a<500);
delay(500);
}