Lab8.a
LCD 螢幕顯示
[材料]
Arduino主板 x 1
麵包板 x 1
Led x 1
可變電阻 x 1
OLed (0.96吋、128x64、含有i2c的晶片) x 1 (ps. i2c使用Arduino UNO的A4、A5,可連接多個其他電子零件)
[函式庫] 選擇上方欄位Sketch -> Include Library -> Manage Libraries,進入後搜尋下列兩個函示庫,並安裝。
Adafruit SSD1306
Adafruit GFX Library
[安裝函示庫]
[OLed 腳位]
VCC --> arduino 3.3V 或5V
GND --> arduino GND
SCL --> arduino A5
SDA --> arduino A4
/* Lab8.a OLed 程式碼 */
/* OLed 接線方式
VCC --> arduino 3.3V or 5V
GND --> arduino GND
SCL --> arduino A5
SDA --> arduino A4
*/
#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>
#define CREEN_WIDTH 128 //設定OLED螢幕的寬度像素
#define CREEN_HEIGHT 64 //設定OLED螢幕的寬度像素
#define OLED_RESET -1 //Reset pin如果OLED上沒有RESET腳位,將它設置為-1
Adafruit_SSD1306 display(CREEN_WIDTH, CREEN_HEIGHT, &Wire, OLED_RESET); //OLED顯示器使用2C連線並宣告名為display物件
bool OLEDStatus = true;
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC,0x3c);
}
void loop() {
display.clearDisplay(); //清除緩衝區資料
display.setCursor(0, 0); //設定起始點位置(0,0)
//顯示文字
display.setTextSize(1); //設定文字尺寸為1,1:6x8,2:12x16,3:18x24...etc
display.setTextColor(WHITE); //白字
display.println("Hello World");
display.setTextColor(BLACK, WHITE); //黑字白底
display.println("123456789012345678901234567890");
//畫圖
display.drawRect(0, 32, 40, 30, WHITE);
//display.drawCircle(40, 40, 20, WHITE); (StartX, StartY, Width in Pixels, Height in Pixels, WHITE);
//display.drawLine(StartX, StartY, EndX, EndY, WHITE);
//display.drawRect(StartX, StartY, Width in Pixels, Height in Pixels, WHITE);
//display.drawCircle(CenterX, CenterY, Radius in Pixels, WHITE);
//display.drawTriangle(FirstX , FirstY, SecondX, SecondY, ThirdX, ThirdY, WHITE);
display.display();
delay(1000);
display.clearDisplay();
}
[解釋]
函式庫可以讓我們直接使用他人完成的程式碼,簡化我們撰寫程式的難度。
#include <Wire.h> --> 這是i2c的函式庫
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h> --> 這兩行是OLed的函式庫
[基本問題]
1. 一行可以輸入多少的數字?可否輸入中文?
2. 改變要顯示的資料(文字或數字),位置。
3. 顯示其他感測器的資料。
(例如:顯示Lab5中"可變電阻"的數值)
[挑戰問題]
1. 如果LCD要顯示的文字太多,無法一次全部顯示出來,要如何處理?