據筆者經驗,由把玩Arduino轉而發展Arduino操控智能式機械人,最大的難度在於難以debug。
以往Arduino接上電腦,必要時可以打開serial監視器,在各個if
case入面加上Serial.println()
。就可以將程式運行到那裡顯示出來。例如光敏電阻A讀得的電壓大於500
時,就把LED B亮起,而同時,只要加多一句Serial.println("light LED B")
,就可以知道是進入了這個case之內(因有時有幾個case都會亮起LED B,難以知道是那一個case)。
而轉了操控智能機械人後,由於難以接著USB線走動,debug變得有一定難度,如果sensor本身有指示燈還好點,是自己焊製的sensor、沒有指示燈,有時難以知道是sensor有問題、收不到,還是program本身有問題,這時候,在機械人上加一個LCD Display就會易於debug。
用4條I2C接線,連接Arduino並顯示文字。
x1//YWROBOT
2//Compatible with the Arduino IDE 1.0
3//Library version:1.1
4#include <Wire.h>
5#include <LiquidCrystal_I2C.h>
6
7LiquidCrystal_I2C lcd(0x27, 16, 2);
8// set the LCD address to 0x27 for a 16 chars and 2 line display
9
10void setup()
11{
12 lcd.begin();
13 lcd.backlight();
14}
15
16void loop()
17{
18 lcd.setCursor(0, 0);
19 lcd.print("Hello, world!");
20 lcd.setCursor(0, 1);
21 lcd.print("I <3 IS");
22}
LiquidCrystal_I2C lcd(0x27, 16, 2);
: 宣告一個lcd,slave終身編號是0x27
(這個是16進制,即0010 0111
),這個編號是LCD的解讀器固定的,如果要修改,就要焊接解讀器的跳線。16, 2
是指LCD橫有16個字符寬,直有2個字符高。
lcd.begin();
lcd.backlight();
初始化LCD和開LCD背光燈。
lcd.setCursor(0, 0);
lcd.print("Hello, world!");
設定在LCD的座標(0, 0)打上Hello, world!
。(x座標由左至右,y座標由上而下)
lcd.setCursor(0, 1);
lcd.print("I <3 IS");
在LCD座標(0,1)打上I <3 IS。