# 5.LCD顯示器與溫度控制系統(ArduinoDemo5) ###### tags: `ArduinoDemo` **分類:LCD顯示器與溫度控制系統** **總覽:** 27-2控制LCD在第0列第3行顯示學號"0123456789",在第1列閃爍顯示電腦鍵盤輸入字元,按減號"-"鍵可以清除輸入字元。 37-2在第0行、第0列顯示字元"up counter",在第0行、第1列顯示0000~9999計數值,每秒上數加1。 46-1在第0行、第0列顯示"2013年08月05日",在第0行第1列顯示"I愛 LCD",愛心符號如圖10-16所示。 52-2控制LCD顯示兩位15~16數字字形計數00~99,每秒上數加1。 58-2使用Arduino板配合LM35溫度感測器測量環境溫度,以Serial Monitor視窗顯示環境溫度,當環境溫度大於30度C時,點亮紅色LED;當環境溫度介於20度C~30度C時,點亮黃色LED;當環境溫度小於20度C時,點亮綠色LED。 --- 27-2控制LCD在第0列第3行顯示學號"0123456789",在第1列閃爍顯示電腦鍵盤輸入字元,按減號"-"鍵可以清除輸入字元。 --- ```Arduino= #include <LiquidCrystal.h> LiquidCrystal lcd(12,11,10,5,4,3,2); int i; char key[17]=" "; int num=0; void setup() { Serial.begin(9600); lcd.begin(16,2); lcd.setCursor(3,0); lcd.write("0123456789"); lcd.setCursor(0,1); } void loop() { while(Serial.available()) { key[num]=Serial.read(); if(key[num]=='-') { lcd.setCursor(0,1); for(i=0;i<16;i++) { lcd.write(' '); key[i]=' '; } lcd.setCursor(0,1); num=0; } else { lcd.write(key[num]); num++; if(num>15) { lcd.setCursor(0,1); num=0; } } } //閃爍 //顯示 lcd.setCursor(0,1); for(i=0;i<16;i++) { lcd.write(key[i]); } lcd.setCursor(num,1); delay(500); //不顯示 lcd.setCursor(0,1); for(i=0;i<16;i++) { lcd.write(' '); } lcd.setCursor(num,1); //num=0; delay(500); } ``` --- 37-2在第0行、第0列顯示字元"up counter",在第0行、第1列顯示0000~9999計數值,每秒上數加1。 --- ```Arduino= #include <LiquidCrystal.h> LiquidCrystal lcd(12,11,10,5,4,3,2); int counts=0; void setup() { lcd.begin(16,2); lcd.setCursor(0,0); lcd.print("up counter"); } void loop() { lcd.setCursor(0,1); if(counts<10) lcd.print("000"); else if (counts<100) lcd.print("00"); else if (counts<1000) lcd.print("0"); lcd.print(counts); delay(100); counts++; if(counts==10000) counts=0; } ``` --- 46-1在第0行、第0列顯示"2013年08月05日",在第0行第1列顯示"I愛 LCD",愛心符號如圖10-16所示。 --- ```Arduino= #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11,10, 5, 4, 3, 2); byte yearChar[8]={B10000,B11111,B00010,B01111,B01010,B11111,B00010,B00000}; byte moonChar[8]={B01111,B01001,B01111,B01001,B01111,B01001,B11101,B00000}; byte dayChar[8]={B01111,B01001,B01001,B01111,B01001,B01001,B01111,B00000}; byte heartChar[8]={B00000,B01010,B11111,B11111,B01110,B00100,B00000,B00000}; byte smileChar[8]={B00000,B10001,B00000,B00000,B10001,B01110,B00000,B00000}; int years=2013; byte moons=8; byte days=5; void setup() { lcd.begin(16,2); lcd.createChar(0,yearChar); lcd.createChar(1,moonChar); lcd.createChar(2,dayChar); lcd.createChar(3,heartChar); lcd.createChar(4,smileChar); } void loop() { lcd.setCursor(0,0); lcd.print(years); lcd.write(byte(0)); lcd.print(moons); lcd.write(byte(1)); lcd.print(days); lcd.write(byte(2)); lcd.setCursor(0,1); lcd.print("I"); lcd.write(byte(3)); lcd.print("LCD"); } ``` --- 52-2控制LCD顯示兩位15~16數字字形計數00~99,每秒上數加1。 --- ```Arduino= #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11,10, 5, 4, 3, 2); byte shape[8][8]={ {B11111,B11111,B11111,B11111,B11111,B11111,B11111,B11111}, //0 {B00000,B00000,B00000,B00000,B00000,B00000,B00000,B00000}, //1 {B11111,B11111,B00000,B00000,B00000,B00000,B00000,B00000}, //2 {B00000,B00000,B00000,B00000,B00000,B00000,B11111,B11111}, //3 {B11111,B11111,B00000,B00000,B00000,B00000,B00000,B11111}, //4 {B11111,B00000,B00000,B00000,B00000,B00000,B11111,B11111}, //5 {B11111,B00000,B00000,B00000,B00000,B00000,B00000,B00000}, //6 {B00000,B00000,B00000,B00000,B00000,B00000,B00000,B11111}}; //7 const char number[10][6]={ {0,2,0,0,3,0},{1,0,1,1,0,1},{4,4,0,0,5,5},{2,4,0,3,5,0},{0,7,0,6,6,0}, {0,4,4,5,5,0},{0,4,4,0,5,0},{2,2,0,1,1,0},{0,4,0,0,5,0},{0,4,0,5,5,0}}; void setup() { lcd.begin(16,2); for(int i=0;i<8;i++) lcd.createChar(i,shape[i]); } void loop() { for(int i=0;i<100;i++) { showNumber(i/10,5); showNumber(i%10,8); delay(200); } } void showNumber(int value,int colPosition) { int i; lcd.setCursor(colPosition,0); for(i=0;i<=2;i++) lcd.write(byte(number[value][i])); lcd.setCursor(colPosition,1); for(i=3;i<=5;i++) lcd.write(byte(number[value][i])); } ``` --- 58-2使用Arduino板配合LM35溫度感測器測量環境溫度,以Serial Monitor視窗顯示環境溫度,當環境溫度大於30度C時,點亮紅色LED;當環境溫度介於20度C~30度C時,點亮黃色LED;當環境溫度小於20度C時,點亮綠色LED。 --- ```Arduino= const int lm35Vout=0; const int led[] = {8,9,13}; void setup() { Serial.begin(9600); pinMode(led,OUTPUT); digitalWrite(led,LOW); } void loop() { long degree; degree=lm35(lm35Vout); Serial.print("degrees Celsius = "); Serial.print(degree); Serial.println("C"); if(degree>=30) digitalWrite(led[2],HIGH); else if(degree<20) digitalWrite(led[0],HIGH); else digitalWrite(led[1],HIGH); delay(1000); } long lm35(int lm35Vout) { int value; long degree; value=analogRead(lm35Vout); degree=(long)value*500/1024; return degree; } ```