1.点击Sketch
2.点击include library
3.点击manage Libraries
4.在搜索框中搜WS2812FX
5.点击IN STALLED安装
#ifdefU8X8_HAVE_HW_SPI
#include<SPI.h>
#endif
#ifdefU8X8_HAVE_HW_I2C
#include<Wire.h>
#endif
#defineLED_COUNT1
#defineLED_PIN2
#defineSDA_PIN5
#defineSCL_PIN6
WS2812FX ws2812fx =WS2812FX(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);
U8G2_SSD1306_72X40_ER_F_HW_I2Cu8g2(U8G2_R0,/* reset=*/U8X8_PIN_NONE);// EastRising 0.42" OLED
voidu8g2_prepare(void){
u8g2.setFont(u8g2_font_6x10_tf);
u8g2.setFontRefHeightExtendedText();
u8g2.setDrawColor(1);
u8g2.setFontPosTop();
u8g2.setFontDirection(0);
}
voidu8g2_box_frame(uint8_ta){
u8g2.drawStr(0,0,"drawBox");
u8g2.drawBox(5,10,20,10);
u8g2.drawBox(10+a,15,30,7);
u8g2.drawStr(0,30,"drawFrame");
u8g2.drawFrame(5,10+30,20,10);
u8g2.drawFrame(10+a,15+30,30,7);
}
voidu8g2_disc_circle(uint8_ta){
u8g2.drawStr(0,0,"drawDisc");
u8g2.drawDisc(10,18,9);
u8g2.drawDisc(24+a,16,7);
u8g2.drawStr(0,30,"drawCircle");
u8g2.drawCircle(10,18+30,9);
u8g2.drawCircle(24+a,16+30,7);
}
voidu8g2_r_frame(uint8_ta){
u8g2.drawStr(0,0,"drawRFrame/Box");
u8g2.drawRFrame(5,10,40,30, a+1);
u8g2.drawRBox(50,10,25,40, a+1);
}
voidu8g2_string(uint8_ta){
u8g2.setFontDirection(0);
u8g2.drawStr(30+a,31," 0");
u8g2.setFontDirection(1);
u8g2.drawStr(30,31+a," 90");
u8g2.setFontDirection(2);
u8g2.drawStr(30-a,31," 180");
u8g2.setFontDirection(3);
u8g2.drawStr(30,31-a," 270");
}
voidu8g2_line(uint8_ta){
u8g2.drawStr(0,0,"drawLine");
u8g2.drawLine(7+a,10,40,55);
u8g2.drawLine(7+a*2,10,60,55);
u8g2.drawLine(7+a*3,10,80,55);
u8g2.drawLine(7+a*4,10,100,55);
}
voidu8g2_triangle(uint8_ta){
uint16_toffset = a;
u8g2.drawStr(0,0,"drawTriangle");
u8g2.drawTriangle(14,7,45,30,10,40);
u8g2.drawTriangle(14+offset,7-offset,45+offset,30-offset,57+offset,10-offset);
u8g2.drawTriangle(57+offset*2,10,45+offset*2,30,86+offset*2,53);
u8g2.drawTriangle(10+offset,40+offset,45+offset,30+offset,86+offset,53+offset);
}
voidu8g2_ascii_1(){
chars[2] =" ";
uint8_tx, y;
u8g2.drawStr(0,0,"ASCII page 1");
for(y =0; y <6; y++){
for(x =0; x <16; x++){
s[0] = y*16+ x +32;
u8g2.drawStr(x*7, y*10+10, s);
}
}
}
voidu8g2_ascii_2(){
chars[2] =" ";
uint8_tx, y;
u8g2.drawStr(0,0,"ASCII page 2");
for(y =0; y <6; y++){
for(x =0; x <16; x++){
s[0] = y*16+ x +160;
u8g2.drawStr(x*7, y*10+10, s);
}
}
}
voidu8g2_extra_page(uint8_ta)
{
u8g2.drawStr(0,0,"Unicode");
u8g2.setFont(u8g2_font_unifont_t_symbols);
u8g2.setFontPosTop();
u8g2.drawUTF8(0,24,"☀ ☁");
switch(a){
case0:
case1:
case2:
case3:
u8g2.drawUTF8(a*3,36,"☂");
break;
case4:
case5:
case6:
case7:
u8g2.drawUTF8(a*3,36,"☔");
break;
}
}
#definecross_width24
#definecross_height24
staticconstunsignedcharcross_bits[] U8X8_PROGMEM ={
0x00, 0x18, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x42, 0x00,
0x00, 0x42, 0x00, 0x00, 0x42, 0x00, 0x00, 0x81, 0x00, 0x00, 0x81, 0x00,
0xC0, 0x00, 0x03, 0x38, 0x3C, 0x1C, 0x06, 0x42, 0x60, 0x01, 0x42, 0x80,
0x01, 0x42, 0x80, 0x06, 0x42, 0x60, 0x38, 0x3C, 0x1C, 0xC0, 0x00, 0x03,
0x00, 0x81, 0x00, 0x00, 0x81, 0x00, 0x00, 0x42, 0x00, 0x00, 0x42, 0x00,
0x00, 0x42, 0x00, 0x00, 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x18, 0x00,};
#definecross_fill_width24
#definecross_fill_height24
staticconstunsignedcharcross_fill_bits[] U8X8_PROGMEM ={
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x64, 0x00, 0x26,
0x84, 0x00, 0x21, 0x08, 0x81, 0x10, 0x08, 0x42, 0x10, 0x10, 0x3C, 0x08,
0x20, 0x00, 0x04, 0x40, 0x00, 0x02, 0x80, 0x00, 0x01, 0x80, 0x18, 0x01,
0x80, 0x18, 0x01, 0x80, 0x00, 0x01, 0x40, 0x00, 0x02, 0x20, 0x00, 0x04,
0x10, 0x3C, 0x08, 0x08, 0x42, 0x10, 0x08, 0x81, 0x10, 0x84, 0x00, 0x21,
0x64, 0x00, 0x26, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,};
#definecross_block_width14
#definecross_block_height14
staticconstunsignedcharcross_block_bits[] U8X8_PROGMEM ={
0xFF, 0x3F, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20,
0xC1, 0x20, 0xC1, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20,
0x01, 0x20, 0xFF, 0x3F,};
voidu8g2_bitmap_overlay(uint8_ta){
uint8_tframe_size =28;
u8g2.drawStr(0,0,"Bitmap overlay");
u8g2.drawStr(0, frame_size +12,"Solid / transparent");
u8g2.setBitmapMode(false/* solid */);
u8g2.drawFrame(0,10, frame_size, frame_size);
u8g2.drawXBMP(2,12, cross_width, cross_height, cross_bits);
if(a &4)
u8g2.drawXBMP(7,17, cross_block_width, cross_block_height, cross_block_bits);
u8g2.setBitmapMode(true/* transparent*/);
u8g2.drawFrame(frame_size +5,10, frame_size, frame_size);
u8g2.drawXBMP(frame_size +7,12, cross_width, cross_height, cross_bits);
if(a &4)
u8g2.drawXBMP(frame_size +12,17, cross_block_width, cross_block_height, cross_block_bits);
}
voidu8g2_bitmap_modes(uint8_ttransparent){
constuint8_tframe_size =24;
u8g2.drawBox(0, frame_size *0.5, frame_size *5, frame_size);
u8g2.drawStr(frame_size *0.5,50,"Black");
u8g2.drawStr(frame_size *2,50,"White");
u8g2.drawStr(frame_size *3.5,50,"XOR");
if(!transparent){
u8g2.setBitmapMode(false/* solid */);
u8g2.drawStr(0,0,"Solid bitmap");
}else{
u8g2.setBitmapMode(true/* transparent*/);
u8g2.drawStr(0,0,"Transparent bitmap");
}
u8g2.setDrawColor(0);// Black
u8g2.drawXBMP(frame_size *0.5,24, cross_width, cross_height, cross_bits);
u8g2.setDrawColor(1);// White
u8g2.drawXBMP(frame_size *2,24, cross_width, cross_height, cross_bits);
u8g2.setDrawColor(2);// XOR
u8g2.drawXBMP(frame_size *3.5,24, cross_width, cross_height, cross_bits);
}
uint8_tdraw_state =0;
voiddraw(void){
u8g2_prepare();
switch(draw_state >>3){
case0:u8g2_box_frame(draw_state&7);break;
case1:u8g2_disc_circle(draw_state&7);break;
case2:u8g2_r_frame(draw_state&7);break;
case3:u8g2_string(draw_state&7);break;
case4:u8g2_line(draw_state&7);break;
case5:u8g2_triangle(draw_state&7);break;
case6:u8g2_ascii_1();break;
case7:u8g2_ascii_2();break;
case8:u8g2_extra_page(draw_state&7);break;
case9:u8g2_bitmap_modes(0);break;
case10:u8g2_bitmap_modes(1);break;
case11:u8g2_bitmap_overlay(draw_state&7);break;
}
}
voidsetup(void){
ws2812fx.init();
ws2812fx.setBrightness(255);
ws2812fx.setSpeed(1000);
ws2812fx.setColor(0x007BFF);
ws2812fx.setMode(FX_MODE_STATIC);
ws2812fx.start();
Wire.begin(SDA_PIN, SCL_PIN);
u8g2.begin();
}
voidloop(void){
ws2812fx.service();
// picture loop
u8g2.clearBuffer();
draw();
u8g2.sendBuffer();
// increase the state
draw_state++;
if(draw_state >=12*8)
draw_state =0;
// deley between each page
delay(100);
}
1.将代码复制到Arduino IDE
2用type-c线将电脑和esp 32-c3开发板连接,连接成功后,会在电脑管理窗口显示串口
3在Arduino IDE中点击Tools,然后点击Port,选择串口Adafruit QT ESP32-C3
4.点击Verfy
5.点击upload
6.等待上传
7.测试结果如下