一、器材
HT16K33 16*8点阵
arduino uno
二、接线
HT16K33 | arduino uno |
vcc | 5V |
gnd | gnd |
SCL | A5 |
SDA | A4 |
三、库文件
arduino 库,首先把库放到arduino的library下
https://gitee.com/zhou-linjun123/Adafruit_LED_Backpack
四、显示字符
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度
matrix.clear();//清屏
matrix.setCursor(0,0);//从0行0列开始显示
matrix.print("?");//显示?
matrix.writeDisplay();//显示生效
}
效果
调节旋转角度
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(0);//设置旋转角度
matrix.clear();//清屏
matrix.setCursor(0,0);//从0行0列开始显示
matrix.print("?");//显示?
matrix.writeDisplay();//显示生效
while(1);
}
效果
调节字符显示位置
显示从0行1列开始
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度
matrix.clear();//清屏
matrix.setCursor(1,0);//从0行1列开始显示
matrix.print("?");//显示?
matrix.writeDisplay();//显示生效
while(1);
}
效果
显示从1行0列开始
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度
matrix.clear();//清屏
matrix.setCursor(0,1);//从1行0列开始显示
matrix.print("?");//显示?
matrix.writeDisplay();//显示生效
while(1);
}
效果
滚动显示字符
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度为90度
for (int8_t x=7; x>=-60; x--) {
matrix.clear();//清除显示
matrix.setCursor(x,0);//显示从0行,x列开始
matrix.print("Hello World");//显示要显示的字符
matrix.writeDisplay();//显示生效
delay(100);//延时0.1S
}
}
效果
滚动显示hello world
需要注意的是这里的x设置
matrix.setRotation(1);//设置旋转角度为90度
for (int8_t x=7; x>=-60; x--) {
matrix.clear();//清除显示
matrix.setCursor(x,0);//显示从0行,x列开始
matrix.print("Hello World");//显示要显示的字符
matrix.writeDisplay();//显示生效
delay(100);//延时0.1S
}
这里的效果是从0行7列开始,后面的那个x>=60里面的60是算出来的,比如需要显示6个字符,一个字符就是36,然后减去前面的7加一,就是30,其他的也是以此类推
显示图片
完整代码
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
static const uint8_t PROGMEM
smile_bmp[] =
{ B00111100,
B01000010,
B10100101,
B10000001,
B10100101,
B10011001,
B01000010,
B00111100
};
void loop() {
matrix.setRotation(1);//设置旋转角度为90度
matrix.clear();//清屏
matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON);//在0行0列开始显示图片,图片大小为8*8
matrix.writeDisplay();//显示生效
}
效果
画点
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度为90度
matrix.clear(); // 清除显示
matrix.drawPixel(0, 0, LED_ON); //在0行0列画点
matrix.writeDisplay(); // 显示生效
}
效果
画线
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度为90度
matrix.clear(); // 清除显示
matrix.drawLine(0,0, 15,7, LED_ON); //从0行0列开始,到7行15列为止
matrix.writeDisplay(); // 显示生效
}
效果
画空心矩形
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度为90度
matrix.clear(); // 清除显示
matrix.drawRect(0,0, 16,8, LED_ON);//画矩形,左上角为0,0,右下角为8,16
matrix.writeDisplay(); // 显示生效
}
效果
画实心矩形
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度为90度
matrix.clear(); // 清除显示
matrix.fillRect(0,0, 16,8, LED_ON);//画实心矩形,左上角为0,0,右下角为8,16
matrix.writeDisplay(); // 显示生效
while(1);
}
效果
画圆
完整程序
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_8x16matrix matrix = Adafruit_8x16matrix();
void setup() {
matrix.begin(0x70); //初始化
}
void loop() {
matrix.setRotation(1);//设置旋转角度为90度
matrix.clear(); // 清除显示
matrix.drawCircle(4,4, 3, LED_ON);//画圆,圆心为4,4,半径为3
matrix.writeDisplay(); // 显示生效
while(1);
}
效果