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,進入後搜尋下列兩個函示庫,並安裝。

[安裝函示庫]

[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要顯示的文字太多,無法一次全部顯示出來,要如何處理?