2022年7月3日 星期日

【Arduino】 0.96 SSD1306 單色 OLED

本篇使用Arduino UNO 連接SSD1306 0.96 OLED

市面上OLED常見的0.96吋屬於SSD1306晶片規格。

OLED接線很簡單,使用I2C介面,所以只有4條線,SDA、SCL接到Arduino Uno板上的A4、A5,VCC接到5V,GND接GND。


Step 1. 安裝函式庫,本篇選用Adafruit提供的函式庫Adafruit SSD1306函式庫;而這個函式庫還要Adafruit GFX Library函式庫來配合,所以請一併安裝。


Step 2. 撰寫程式
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // OLED 寬度像素
#define SCREEN_HEIGHT 64 // OLED 高度像素

// 設定OLED
#define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  Serial.begin(9600);

  // 偵測是否安裝好OLED了
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 一般1306 OLED的位址都是0x3C
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
  display.display();   // 顯示Adafruit的LOGO,算是開機畫面
  delay(1000); // 停1秒
  display.clearDisplay();  // 清除畫面
  testdrawstyles();    // 測試文字
  testdrawbitmap();    // 顯示圖形
}

void testdrawstyles(void) {
  display.clearDisplay();
  display.setTextSize(2);             // 設定文字大小
  display.setTextColor(1);        // 1:OLED預設的顏色(這個會依該OLED的顏色來決定)
  display.setCursor(0,0);             // 設定起始座標
  display.print("Hello world!");        // 要顯示的字串
  display.display();                  // 要有這行才會把文字顯示出來
  delay(1000);
}

void testdrawbitmap(void) {
  //display.clearDisplay();
  //顯示圖形,x,y,圖形文字,寬,高,1:OLED預設的顏色(這個會依該OLED的顏色來決定)
display.drawLine(0, 0, 127, 20, WHITE); //畫直線
  display.display();  // 要有這行才會把文字顯示出來
  delay(1000);
}


畫矩形
display.drawRect(10, 10, 50, 30, WHITE);
//drawRect(X, Y, 寬, 高, color);

填滿的圖型
display.drawRect(10, 10, 50, 30, WHITE);

畫圓形
display.drawCircle(64, 32, 10, WHITE);
//drawCircle(X, Y, 直徑, 顏色);




沒有留言:

張貼留言

【Arduino】 RS485 實現Modbus Slave

 這次使用Arduino UNO + RS485 的模組,來實現Modbus Slave 的通訊 Pin Name Pin Description VCC 5V A Non-inverting Receiver Input Non-Inverting Driver Output ...