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);

}