第五章 基礎專題2
在這個章節,你將會學會:
- 良好的程式寫作習慣。
- 如何找出程式碼的錯誤,減少失誤。
CH5-1 程式語法之寫作習慣
1. setup( ), loop( )區塊先寫好
void setep()
{
}
void loop()
{
}
2. 利用TAB鍵對程式碼排版
void loop()
{
for(int i=0; i<5; i++)
{
a = a - 5;
if(i==1)
{
b += 3;
}
}
}
3. 對齊括號
void loop()
{
for(int i=0; i<5; i++)
{
a = a - 5;
if(i==1)
{
b += 3;
}
}
}
4. 註解的使用
\/*
Project:
Arthur:
*\/
int led = 12; \/\/宣告變數led,初始化為1
常見的錯誤
忘記加分號。
漏掉右括號。
忘記宣告變數,就直接使用。
所有行為都要在setup( ), loop( ) 括號內。
CH5-2 LCD 1602實驗
實習清單
實驗名稱 | LCD1602應用 |
---|---|
預期實驗結果 | 使用LCD顯示指定的文字 |
實驗目的 | 瞭解LCD 1602的基本操作 |
材料清單 | Ø Arduino*1 Ø LCD1602*1 Ø 50K可變電阻*1 |
元件介紹
1602液晶在應用中非常廣泛,最初的1602液晶使用的是HD44780控制器,現在各個廠家的1602模組基本上都是採用了與之相容的IC,所以特性上基本都是一致的。
1602LCD主要技術參數
顯示容量為16×2個字元;
晶片工作電壓為4.5~5.5V;
工作電流為2.0mA(5.0V);
模組最佳工作電壓為5.0V;
字元尺寸為2.95×4.35(W×H)mm。
1602液晶介面引腳定義
介面說明:
1、兩組電源 一組是模組的電源 一組是背光板的電源 一般均使用5V供電。本次試驗背光使用3.3V供電也可以工作。
2、VL是調節對比度的引腳,串聯不大於5KΩ的電位器進行調節。本次實驗使用1KΩ的電阻來設定對比度。其連接分高電位與低電位接法,本次使用低電位接法,串聯1KΩ電阻後接GND。
3、RS 是很多液晶上都有的引腳 是命令\/資料選擇引腳 該腳電平為高時表示將進行資料操作;為低時表示進行命令操作。
4、RW 也是很多液晶上都有的引腳 是讀寫選擇端 該腳電平為高是表示要對液晶進行讀操作;為低時表示要進行寫操作。
5、E 同樣很多液晶模組有此引腳 通常在匯流排上信號穩定後給一正脈衝通知把資料讀走,在此腳為高電平的時候匯流排不允許變化。
6、D0—D7 8 位雙向平行匯流排,用來傳送命令和資料。
7、BLA是背光源正極,BLK是背光源負極。
1602液晶的基本操作分以下四種:
實習步驟與說明
LCD 1602使用一般接線法時,會佔據太多的PIN腳,導致如果需要增加感測器時腳位不足的困擾,所以LCD1602有四線接法,所謂的四線接法,是指D0~D7的資料線只接D4~D7的資料線,原本八條資料線會一次傳送8位元的資料,而接4條資料線則是一次傳送4位元資料傳送兩次。
.
電路實作
佈線圖
Arduino程式實作
完整程式碼
01 #include <LiquidCrystal.h> \/\/調用arduino自帶的LiquidCrystal庫 02 LiquidCrystal lcd(7,8,9,10,11,12);\/\/設置接口 03 04 void setup() 05 { 06 lcd.begin(16, 2); \/\/初始化LCD 07 delay(1000); \/\/延時1000ms 08 } 09 10 void loop () 11 { 12 \/\/-----------lcd設定-------------------- 13 14 lcd.clear(); \/\/清屏 15 lcd.setCursor(0,0); \/\/設定指標從第一行第一個位置開始 16 17 for( int numb=0 ; numb<10; numb++) \/\/lcd顯示0~9 18 { 19 lcd.print(numb); 20 delay(300); \/\/每個數字停留0.3秒 21 } 22 23 delay(500); \/\/當0~9全物顯示時停留0.5秒 24 } 25 |
---|
隨堂作業
1、 第一行依序顯示0~9、第二行依序顯示9~0,請使用FOR迴圈
2、 請在第一行顯示自己的英文名,第二行顯示手機號碼
CH5-3 程式語法之外部函式庫使用
在這個章節,你將會學會:
Ø 外部函式庫的使用
什麼是外部函式庫?
Arduino內建許多函數,例如你常用的DigitalWrite(),DigitalRead(),但事實上,Arduino還有數以百計的元件可以搭配使用,可是假如有個最新的元件,有自己的函式庫,提供我們方便使用,那到底我們要怎麼樣去呼叫使用呢?
外部函數的使用
以LCD實習為例,LCD的廠商,自己設計了許多函數,包括清除畫面、設定游標等等大大小小的功能,我們如果想使用,要注意兩個部分:
宣告標頭檔,如第1行。
查詢使用手冊,得知此函式庫可提供的功能。如第6行,LCD有初始化的函數begin()。
01 #include <LiquidCrystal.h> \/\/調用arduino自帶的LiquidCrystal庫
02 LiquidCrystal lcd(7,8,9,10,11,12); \/\/宣告LCD的pin腳
03
04 void setup()
05 {
06 lcd.begin(16, 2); \/\/初始化LCD
07 delay(1000); \/\/延時1000ms
08 }
09
10 void loop ()
11 {
12 lcd.clear(); \/\/清除畫面
13 lcd.setCursor(0, 0) ; \/\/設置游標位置為第一行第一個位置
14 lcd.print("Hello Arduino"); \/\/LCD顯示文字
15 }
以上就是外部函式庫的使用,尤其注意標頭檔的宣告,Arduino才會知道,你要使用的函數,是來自於外部函式庫的喔,請使用各式各樣的新電子元件練習看看吧。
CH5-4 LCD 溫度警報器
實習清單
實驗名稱 | 溫度警報器 |
---|---|
預期實驗結果 | 使LCD可以顯示溫度 ,超過一定溫度蜂鳴器發出聲響警告 |
實驗目的 | 利用多種元件做出實用的功能 |
材料清單 | Ø Arduino*1 Ø LCD1602*1 Ø LM35DZ*1 Ø 無源蜂鳴器*1 Ø 50K可變電阻*1 |
電路實作
佈線圖
Arduino程式實作
完整程式碼
#include <LiquidCrystal.h> \/\/調用arduino自帶的LiquidCrystal庫 LiquidCrystal lcd(7,8,9,10,11,12);\/\/設置接口 03 04 void setup() 05 { 06 lcd.begin(16, 2); \/\/初始化LCD 07 delay(1000); \/\/延時1000ms 08 } 09 10 void loop () 11 { 12 13 \/\/以下為LM35DZ溫度感應器的數值讀取 14 15 int n= analogRead(A0); \/\/讀取A0口的電壓值 16 float temp = n * (5.0 \/ 1024.0*100); \/\/使用浮點數存儲溫度數據,溫度數據由電壓值換算得到 17 18 19 \/\/-----------lcd設定-------------------- 20 21 lcd.clear(); \/\/清屏 22 lcd.setCursor(0, 0) ; \/\/設置光標位置為第一行第一個位置 23 lcd.print("temp="); \/\/使屏幕顯示文字temp= 24 lcd.print(temp); \/\/顯示目前溫度 25 lcd.print("C"); \/\/使屏幕顯示文字C 26 27 28 \/\/-----------如果溫度超過31.5度則螢幕顯示Warning並且警報器響起-------------------- 29 if(temp>31.50) 30 31 { 32 lcd.setCursor(0, 1) ; \/\/設置光標位置為第2行第一個位置 33 lcd.print("Warning"); \/\/使屏幕顯示文字Warning 34 tone(2,500,100); \/\/警報器以500HZ 響100毫秒 35 36 } 37 delay(100); \/\/延時0.1秒,這裡也就是刷新速度。 38 39 } |
---|