基于Arduino的oled1306调试(4线IIC),用于省实赛物流运送小车
1. 资料
软件生成汉字,图片16进制数据链接:https://pan.baidu.com/s/10BYPIo9MSy8sn0Qadv6wyg 提取码:al2z
2.注意事项
- stepone:设置字模软件参数,生成字符16进制代码(记得点击左下角的确认按键,保存设置)
- steptwo:输入你想要的汉字字母或者数字,点击生成字模,复制代码文件
- 接线
- 不同的arduino板子的IIC引脚是不同的,注意接线要接对
3. 代码实现
- 示例一
/*
OLED显示汉字
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
//取16X16汉字字模 逐行式 顺向高位在前
static const unsigned char PROGMEM da[] =
{
0x10,0x00,0x10,0x00,0x13,0xFE,0x10,0x20,0xFC,0x20,0x10,0x20,0x10,0x20,0x14,0x20,
0x18,0x20,0x30,0x20,0xD0,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x50,0xA0,0x20,0x40
};
static const unsigned char PROGMEM kai[] =
{
0x00,0x00,0x7F,0xFC,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0xFF,0xFE,
0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x40,0x20
};
static const unsigned char PROGMEM yi[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
static const unsigned char PROGMEM er[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00
};
static const unsigned char PROGMEM hao[] =
{
0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x00,0x00,0xFF,0xFE,
0x08,0x00,0x10,0x00,0x1F,0xF0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xA0,0x00,0x40
};
static const unsigned char PROGMEM cang[] =
{
0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x30,0x18,0xC0,0x06,0x0F,0xE0,
0x08,0x20,0x08,0x20,0x08,0xA0,0x08,0x44,0x08,0x04,0x08,0x04,0x07,0xFC,0x00,0x00
};
static const unsigned char PROGMEM men[] =
{
0x20,0x00,0x13,0xFC,0x10,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,
0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x14,0x40,0x08
};
static const unsigned char PROGMEM yun[] =
{
0x00,0x00,0x23,0xF8,0x10,0x00,0x10,0x00,0x00,0x00,0x07,0xFC,0xF0,0x40,0x10,0x80,
0x11,0x10,0x12,0x08,0x17,0xFC,0x12,0x04,0x10,0x00,0x28,0x00,0x47,0xFE,0x00,0x00
};
static const unsigned char PROGMEM song[] =
{
0x02,0x08,0x21,0x08,0x11,0x10,0x17,0xFC,0x00,0x40,0x00,0x40,0xF0,0x40,0x17,0xFE,
0x10,0x40,0x10,0xA0,0x10,0x90,0x11,0x08,0x12,0x08,0x28,0x00,0x47,0xFE,0x00,0x00
};
static const unsigned char PROGMEM zhi[] =
{
0x00,0x00,0x7F,0xFC,0x02,0x00,0x04,0x00,0x08,0x20,0x10,0x10,0x3F,0xF8,0x00,0x08,
0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00
};
static const unsigned char PROGMEM di[] =
{
0x10,0x20,0x10,0x20,0x10,0x20,0x11,0x20,0x11,0x2C,0xFD,0x34,0x11,0x64,0x13,0xA4,
0x11,0x24,0x11,0x34,0x11,0x28,0x1D,0x22,0xE1,0x22,0x41,0x02,0x00,0xFE,0x00,0x00
};
static const unsigned char PROGMEM dian[] =
{
0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xFC,0x02,0x00,0x02,0x00,0x3F,0xF0,0x20,0x10,
0x20,0x10,0x20,0x10,0x3F,0xF0,0x00,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x80,0x04
};
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE);//开像素点发光
display.clearDisplay();//清屏
display.setTextSize(1); //设置字体大小
//display.setCursor(35, 5);//设置显示位置
//display.println("-TonyCode-");//输出字符
display.drawBitmap(1, 1, da, 16, 16, 1); //打开一号仓门
display.drawBitmap(16, 1, kai, 16, 16, 1);
display.drawBitmap(32, 1, yi, 16, 16, 1);
display.drawBitmap(48, 1, hao, 16, 16, 1);
display.drawBitmap(64, 1, cang, 16, 16, 1);
display.drawBitmap(80, 1, men, 16, 16, 1);
delay(2000);
display.clearDisplay();//清屏
display.drawBitmap(1, 1, da, 16, 16, 1); //打开二号仓门
display.drawBitmap(16, 1, kai, 16, 16, 1);
display.drawBitmap(32, 1,er, 16, 16, 1);
display.drawBitmap(48, 1, hao, 16, 16, 1);
display.drawBitmap(64, 1, cang, 16, 16, 1);
display.drawBitmap(80, 1, men, 16, 16, 1);
delay(2000);
display.clearDisplay();//清屏
display.drawBitmap(1, 1, yun, 16, 16, 1); //运送至地点一
display.drawBitmap(16, 1, song, 16, 16, 1);
display.drawBitmap(32, 1, zhi, 16, 16, 1);
display.drawBitmap(48, 1, di, 16, 16, 1);
display.drawBitmap(64, 1, dian, 16, 16, 1);
display.drawBitmap(80, 1, yi, 16, 16, 1);
delay(2000);
display.clearDisplay();//清屏
display.drawBitmap(1, 1, yun, 16, 16, 1); //运送至地点二
display.drawBitmap(16, 1, song, 16, 16, 1);
display.drawBitmap(32, 1, zhi, 16, 16, 1);
display.drawBitmap(48, 1, di, 16, 16, 1);
display.drawBitmap(64, 1, dian, 16, 16, 1);
display.drawBitmap(80, 1, er, 16, 16, 1);
delay(2000);
// display.drawBitmap(48, 32, str2, 16, 16, 1); //画出字符对应点阵数据
// display.drawBitmap(64, 32, str3, 16, 16, 1); //画出字符对应点阵数据
// display.drawBitmap(80, 32, str4, 16, 16, 1); //画出字符对应点阵数据
display.display();//开显示
}
void loop() {
}
- 示例二(本示例需要在同一文件夹下新建一个arduino工程文件以及一个text.h的字符文件)
//arudino部分
#include <Wire.h>
#include "text.h"
// 引入驱动OLED0.96所需的库
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // 设置OLED宽度,单位:像素
#define SCREEN_HEIGHT 64 // 设置OLED高度,单位:像素
// 自定义重置引脚,虽然教程未使用,但却是Adafruit_SSD1306库文件所必需的
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup()
{
// 初始化OLED并设置其IIC地址为 0x3C
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
void loop()
{
hans_display_1();
hans_display_2();
hans_display_3();
hans_display_4();
}
void hans_display_1(void)//打开一号仓门
{
display.clearDisplay();
display.drawBitmap(1, 1, da, 16, 16, 1);
display.drawBitmap(16, 1, kai, 16, 16, 1);
display.drawBitmap(32, 1, yi, 16, 16, 1);
display.drawBitmap(48, 1, hao, 16, 16, 1);
display.drawBitmap(64, 1, cang, 16, 16, 1);
display.drawBitmap(80, 1, men, 16, 16, 1);
//显示图形
display.display();
delay(3000);
}
void hans_display_2(void)//打开二号仓门
{
display.clearDisplay();
display.drawBitmap(1, 1, da, 16, 16, 1);
display.drawBitmap(16, 1, kai, 16, 16, 1);
display.drawBitmap(32, 1, er, 16, 16, 1);
display.drawBitmap(48, 1, hao, 16, 16, 1);
display.drawBitmap(64, 1, cang, 16, 16, 1);
display.drawBitmap(80, 1, men, 16, 16, 1);
//显示图形
display.display();
delay(3000);
}
void hans_display_3(void)//运送到地点一
{
display.clearDisplay();//清屏
display.drawBitmap(1, 1, yun, 16, 16, 1);
display.drawBitmap(16, 1, song, 16, 16, 1);
display.drawBitmap(32, 1, zhi, 16, 16, 1);
display.drawBitmap(48, 1, di, 16, 16, 1);
display.drawBitmap(64, 1, dian, 16, 16, 1);
display.drawBitmap(80, 1, yi, 16, 16, 1);
//显示图形
display.display();
delay(3000);
}
void hans_display_4(void)//运送到地点二
{
display.clearDisplay();//清屏
display.drawBitmap(1, 1, yun, 16, 16, 1);
display.drawBitmap(16, 1, song, 16, 16, 1);
display.drawBitmap(32, 1, zhi, 16, 16, 1);
display.drawBitmap(48, 1, di, 16, 16, 1);
display.drawBitmap(64, 1, dian, 16, 16, 1);
display.drawBitmap(80, 1, er, 16, 16, 1);
//显示图形
display.display();
delay(3000);
}
//text.h文件部分
static const unsigned char PROGMEM da[] =
{
0x10,0x00,0x10,0x00,0x13,0xFE,0x10,0x20,0xFC,0x20,0x10,0x20,0x10,0x20,0x14,0x20,
0x18,0x20,0x30,0x20,0xD0,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0x50,0xA0,0x20,0x40
};
static const unsigned char PROGMEM kai[] =
{
0x00,0x00,0x7F,0xFC,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0xFF,0xFE,
0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x10,0x20,0x20,0x20,0x40,0x20
};
static const unsigned char PROGMEM yi[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
static const unsigned char PROGMEM er[] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00
};
static const unsigned char PROGMEM hao[] =
{
0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x00,0x00,0xFF,0xFE,
0x08,0x00,0x10,0x00,0x1F,0xF0,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0xA0,0x00,0x40
};
static const unsigned char PROGMEM cang[] =
{
0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x30,0x18,0xC0,0x06,0x0F,0xE0,
0x08,0x20,0x08,0x20,0x08,0xA0,0x08,0x44,0x08,0x04,0x08,0x04,0x07,0xFC,0x00,0x00
};
static const unsigned char PROGMEM men[] =
{
0x20,0x00,0x13,0xFC,0x10,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,
0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x14,0x40,0x08
};
static const unsigned char PROGMEM yun[] =
{
0x00,0x00,0x23,0xF8,0x10,0x00,0x10,0x00,0x00,0x00,0x07,0xFC,0xF0,0x40,0x10,0x80,
0x11,0x10,0x12,0x08,0x17,0xFC,0x12,0x04,0x10,0x00,0x28,0x00,0x47,0xFE,0x00,0x00
};
static const unsigned char PROGMEM song[] =
{
0x02,0x08,0x21,0x08,0x11,0x10,0x17,0xFC,0x00,0x40,0x00,0x40,0xF0,0x40,0x17,0xFE,
0x10,0x40,0x10,0xA0,0x10,0x90,0x11,0x08,0x12,0x08,0x28,0x00,0x47,0xFE,0x00,0x00
};
static const unsigned char PROGMEM zhi[] =
{
0x00,0x00,0x7F,0xFC,0x02,0x00,0x04,0x00,0x08,0x20,0x10,0x10,0x3F,0xF8,0x00,0x08,
0x01,0x00,0x01,0x00,0x3F,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00
};
static const unsigned char PROGMEM di[] =
{
0x10,0x20,0x10,0x20,0x10,0x20,0x11,0x20,0x11,0x2C,0xFD,0x34,0x11,0x64,0x13,0xA4,
0x11,0x24,0x11,0x34,0x11,0x28,0x1D,0x22,0xE1,0x22,0x41,0x02,0x00,0xFE,0x00,0x00
};
static const unsigned char PROGMEM dian[] =
{
0x02,0x00,0x02,0x00,0x02,0x00,0x03,0xFC,0x02,0x00,0x02,0x00,0x3F,0xF0,0x20,0x10,
0x20,0x10,0x20,0x10,0x3F,0xF0,0x00,0x00,0x24,0x88,0x22,0x44,0x42,0x44,0x80,0x04
};
- 比较推荐示例二
- 生成字符text.h文件要注意格式(注意有个逗号,我在这里卡住过)