# 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;
}
```