# 学习笔记,大家共勉!
所需要用到的库
Wire、Adafruit_GFX、Adafruit_SSD1306
可以通过Arduino IDE的“管理库”中搜索下载。
所需要用到的函数
1. Adafruit_SSD1306 Name(width, height, &Wire, Reset); //声明OLED屏
Name:换成自己想要的名称;
宽度和高度填写自己OLED的对应参数;“&Wire”这个不要改动
Reset:默认填-1.
Adafruit_SSD1306 Oled(128, 64, &Wire, -1);
2. name.begin(switchvcc, i2caddr); //OLED初始化,
name:承接上文的设定;
switchvcc默认SSD1306_SWITCHCAPVCC,插3.3V;
i2caddr:OLED通信默认地址0x3C/0x3D,型号可以问厂家或者自己用I2C的scanner获取。
Oled.begin(SSD1306_SWITCHCAPVCC, 0x3c);
3. name.clearDisplay():清屏函数;
4. name.Dispaly():显示函数;
5. name.setTextSize(s):设置字体大小;
6. name.setCursor(x,y):设置光标位置,参数为坐标;
7. name.drawBitmap(x,y,Bitmap,w,h,c):显示图像。汉字和图片都需要用这个。
8...文字和图片显示要这些就足够了。
显示英文
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 Oled(128, 64, &Wire, -1);
void setup() {
Oled.begin(SSD1306_SWITCHCAPVCC, 0x3c);
}
void loop() {
Oled.clearDisplay();//清屏
Oled.setTextSize(2);//设置字体大小
Oled.setTextColor(1);//设置字体颜色,因为OLED不能改颜色,所以默认填1
Oled.setCursor(0,0);//起始位置
Oled.print("hello");
Oled.display();//显示
delay(1000);
}
显示汉字和图片
汉字和图片放在一起,是因为要用到软件将 汉字 与 图片转换一下,本质是一样的。
菜单栏里 “模式” 处可选 “字符模式” 与 “ 图形模式”,字符模式用于汉字转换,图形模式用于图片转换(这里的图片最好是简单的图片,如简笔画,过于复杂的呈现效果不容易好)。图形模式打开的图片是.bmp格式的文件,可以通过电脑自带的“画图”软件另存(注意像素大小,不要超过OLED)。
先选择模式后,点“选项”,按照如图所示更改参数(字符模式与图形模式下都是这样修改的)
选择好后,字符模式的话,输入想输的汉字,然后点“生成字模”,复制到程序里即可;
图形模式的话,打开位图,再点“生成字模”,复制即可。
这里要说明一下复制到程序的哪里:
static const unsigned char PROGMEM Zhong[] = { //这里除了"Zhong"是自己的命名,其余不要改动
//复制到这里,如下文是个“中”字
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,/*"中",0*/
};
程序:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 Oled(128, 64, &Wire, -1);
static const unsigned char PROGMEM Zhong[] = {
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,
0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,/*"中",0*/
};
void setup() {
Oled.begin(SSD1306_SWITCHCAPVCC, 0x3c);
}
void loop() {
Oled.clearDisplay();//清屏
Oled.drawBitmap(0, 0, Zhong, 16, 16, 1); //中文字符以图像形式显示,每个字大小为16x16
Oled.display();//显示
delay(1000);
}
类似的,如果要显示图片,替换
static const unsigned char PROGMEM Zhong[] = {
};
这部分内容即可
显示动画
动画即是多张图片连续快速播放得到的。可以到网上下载一个动图,然后在https://uutool.cn/gif2img/
通过这个链接里的GIF拆分功能获取动图里的各帧。对各帧图片进行上一节的操作,获取每一帧的字模。
例如,可以运行一下以下程序:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 Oled(128, 64, &