使用Arduino驱动SSD1306 OLED 显示屏工作
1、准备工作
1.1)Arduino中库的载入
#include <Adafruit_SSD1306.h>驱动128x64 and 128x32 的屏幕显示的库
#include <Adafruit_GFX.h>//Arduino的图形库
可以在arduino管理库中搜索下载,也可以自己下载库导入到arduino的libraries文件夹中。
1.2)接线
在这里使用的是arduino UNO开发板和OLED 0.96 IIC 128x64模块
Arduino | SSD1306 |
---|---|
3.3V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
图片来源于太极创客网站。
2、程序代码
2.1)文字取模
取模的软件使用的是太极创客给出的取模软件,页面如下
参数设置如网页设置即可。跳转太极创客Arduino驱动OLED屏幕
2.2)Arduino程序
#include <Adafruit_SSD1306.h>驱动128x64 and 128x32 的屏幕显示的库
#include <Adafruit_GFX.h>//Arduino的图形库
#include <Wire.h>
#include <SPI.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#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);
Serial.println("OLED FeatherWing test");//串口输出信息
display.begin(SSD1306_SWITCHCAPVCC, 0x3c);//初始化OLED并设置其IIC地址为 0x3C
display.clearDisplay();//清屏
delay(200);
display.setTextSize(1.3);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);//设置光标的位置
//绘制像素点
// display.drawPixel(64, 32, WHITE);//(x坐标,y坐标,颜色)
//绘制水平线
// display.drawFastHLine(64,32,64,SSD1306_WHITE);//(x起点,y起点,长度,颜色)
//绘制竖直线
// display.drawFastVLine(64,10,50,SSD1306_WHITE);
//绘制线
// display.drawLine(0,0,128,64,SSD1306_WHITE);//(x起,y起,x终,y终)
//绘制空心矩形
// display.drawRect(0,0,128,64,SSD1306_WHITE);//(左上角x坐标,左上角y坐标,矩形长,矩形宽)
//绘制实心矩形
//display.fillRect(20,10,88,44,SSD1306_WHITE);//同上
//点亮全屏
// display.fillScreen(SSD1306_WHITE);
//绘制空心圆
//display.drawCircle(64,32,32,SSD1306_WHITE);//(圆心x坐标,圆心y坐标,半径)
//绘制实心圆
//display.fillCircle(64,32,31,SSD1306_WHITE);
//绘制空心三角形
//display.drawTriangle(63,0, 0,63, 127,63, SSD1306_WHITE);//(第一顶点坐标[x,y],第二,第三)
//绘制实心三角形
//display.fillTriangle(63,0, 0,63, 127,63, SSD1306_WHITE);
//绘制空心圆角矩形
//display.drawRoundRect(10,5,107, 43,8, SSD1306_WHITE);//(左上角x,左上角y,矩形长,矩形宽,矩形圆角半径)
//实心圆角
//display.fillRoundRect(10,5,107,53,3, SSD1306_WHITE);
//绘制Bitmap图像
//Bimap图像数据
static const unsigned char PROGMEM feng_16x16[]={
0x00,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x08,0x80,0x08,0xBC,0x19,0x48,0x2A,0x60,
0x48,0x20,0x09,0x20,0x0A,0x2C,0x0A,0x24,0x08,0x20,0x08,0xE0,0x00,0x40,0x00,0x00,/*"你",0*/
0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x7C,0x08,0x08,0x0A,0x30,0x0A,0x20,0x76,0x3E,
0x13,0xD0,0x0C,0x10,0x04,0x10,0x0A,0x10,0x10,0x10,0x00,0x60,0x00,0x20,0x00,0x00,/*"好",1*/
};
static const unsigned char PROGMEM ni_16x16[]={
0x00,0x00,0x00,0x00,0x04,0x40,0x04,0x40,0x08,0x80,0x08,0xBC,0x19,0x48,0x2A,0x60,
0x48,0x20,0x09,0x20,0x0A,0x2C,0x0A,0x24,0x08,0x20,0x08,0xE0,0x00,0x40,0x00,0x00,/*"你",0*/
};
static const unsigned char PROGMEM hao_16x16[]={
0x00,0x00,0x00,0x00,0x08,0x00,0x08,0x7C,0x08,0x08,0x0A,0x30,0x0A,0x20,0x76,0x3E,
0x13,0xD0,0x0C,0x10,0x04,0x10,0x0A,0x10,0x10,0x10,0x00,0x60,0x00,0x20,0x00,0x00,/*"好",1*/
};
//对图片进行取模
static const unsigned char PROGMEM hand_128x64[] = {
0x00,0x00,0x00,0x00,0x00,0x00,