ESP32 U8g2的常用函数,FreeRTOS新建3个任务,loop里单独运行oled

在这里插入图片描述图片剪切https://www.bilibili.com/video/BV1A84y147X2/?p=27&spm_id_from=pageDriver
在这里插入图片描述
在这里插入图片描述

下面画图
在这里插入图片描述
随便截屏个图片
在这里插入图片描述
画图了调整像素点
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/7ef245a7544347d7af0012d382a3d34e.png在这里插入图片描述
在这里插入图片描述
这个位置耗费了我一下午才弄好的
在这里插入图片描述

/**
 * 基于FreeRTOS,可以多个任务并行处理.
 * ESP32有两个Tenants Xtensa LX6 微处理器
 * 用arduino进行编程时中使用第一个核心,第0核心没有使用
 * 多线程可以指定在那个核心运行
 */

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
 //配置IIC引脚 与SPI引脚
#define scl 14  //时钟引脚IIC  SPI
#define sda 13  //数据引脚IIC  SPI
#define cs  0   //片选引脚     SPI
#define dc  0   //发送命令引脚     SPI
#define reset  0   //重置引脚     SPI
/*
#define U8g2_MULTCORE
 0.软件I2c  一次刷新为500ms
 1.硬件I2c  一次刷新为22ms
 2.软件SPI  一次刷新为40ms
 3.硬件SPI  一次刷新为5ms
*/
    /*
    旋转方式
    U8G2_R0:不旋转    U8G2_R1:顺时针旋转90度
    U8G2_R1:顺时针旋转180度
    U8G2_R3:顺时针旋转270度
    U8G2_MIRROR:镜像显示但不旋转
    */
#define U8g2_MULTCORE 0
    #if U8g2_MULTCORE == 0   //软件I2c  一次刷新为500ms
        U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,scl,sda,U8X8_PIN_NONE);
    #elif U8g2_MULTCORE == 1 //硬件I2c  一次刷新为22ms
        U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0,scl,sda,U8X8_PIN_NONE);
    #elif U8g2_MULTCORE == 2 //软件SPI  一次刷新为40ms
        U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0,scl,sda,cs,dc,reset);
    #elif U8g2_MULTCORE == 3 //硬件SPI  一次刷新为4ms  要设置时钟为9M
        U8G2_SSD1306_128X64_NONAME_F_4W_HW_SPI u8g2(U8G2_R0,cs,dc,reset);   
    #endif

void U8g2_init()
{   


     u8g2.setBusClock(80000);//设置时钟频率

     //屏幕初始化
     u8g2.begin();
     // 开启中文字符集支持
     u8g2.enableUTF8Print();
     //关闭中文字符集
     //u8g2.disableUTF8Print();
     //设置屏幕亮度
     u8g2.setContrast(200);
     /*设置字体 字号12,13,14,15,16
     u8g2_font_wqy12_t_gb2312  
     u8g2_font_wqy12_t_gb2312a
     u8g2_font_wqy12_t_gb2312b
     u8g2_font_wqy12_t_chinese1
     u8g2_font_wqy12_t_chinese2
     u8g2_font_wqy12_t_chinese3
     */
    u8g2.setFont(u8g2_font_wqy12_t_gb2312);
    //打印时钟频率
    Serial.println(u8g2.getBusClock());
}
/******************************************************************************* */
#define USE_MULTCORE 0   //定义利用那个核心 0选择用ESP32第0个核心 1不选择核心
//任务1
void xTaskOne(void *xTask1)
{
    while(1)
    {
        Serial.printf("//任务1task1\r\n");
        delay(1000);
    }
}

//任务2
void xTaskTwo(void *xTask2)
{
    while(1)
    {
        Serial.printf("//任务1task2\r\n");
        delay(2000);
    }
}

//任务3
void xTaskThree(void *xTask3)
{
    while(1)
    {
        Serial.printf("//任务1task3\r\n");
        delay(3000);
    }
}
/******************************************************************************* */
void setup() {
    Serial.begin(9600);
    delay(10);
    U8g2_init();
//FreeRTOS
#if !USE_MULTCORE
    xTaskCreate(  
            xTaskOne,        // 任务函数  
            "TaskOne",       // 任务名称  
            4096,            // 堆栈大小(以字为单位)  
            NULL,            // 传递给任务的参数  
            1,               // 任务的优先级  
            NULL) ;    // 指向任务句柄的指针  
        
    xTaskCreate(
        xTaskTwo,
        "TaskTwo",
        4096,  //分配内存大小
        NULL,
        2,    //优先级
        NULL);
    xTaskCreate(
        xTaskThree,  //任务名称
        "TaskThree",
        4096,    //分配内存大小
        NULL,
        3,     //优先级
        NULL);
#else 
    //最后一个参数决定在那个核心运行
    xTaskCreatePinnedToCore(xTaskOne,"TaskOne", 4096,NULL,1,NULL,0);
    xTaskCreatePinnedToCore(xTaskTwo,"TaskTwo", 4096,NULL,2,NULL,1);
    xTaskCreatePinnedToCore(xTaskThree,"TaskThree", 4096,NULL,3,NULL,0);
#endif
}

PROGMEM const uint8_t logo[] = {
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x07,0xFF,0x07,0x00,0xFE,0xFF,0x7F,0xE0,0xFF,0x07,0xFF,0x07,0x00,0xFC,
0xFF,0x3F,0xF0,0xFF,0x07,0xFF,0x0F,0x00,0xFC,0xFF,0x1F,0xF8,0xFF,0x07,0xFF,0x1F,
0x00,0xF8,0xFF,0x1F,0xFC,0xFF,0x07,0xFF,0x3F,0x00,0xF0,0xFF,0x0F,0xFE,0xFF,0x07,
0xFF,0x3F,0xF0,0xE0,0xFF,0x07,0xFF,0xFF,0x07,0xFF,0x7F,0xF0,0xE0,0xFF,0x83,0xFF,
0xFF,0x07,0xFF,0xFF,0xE0,0xC1,0xFF,0x81,0xFF,0xFF,0x07,0xFF,0xFF,0xC1,0x83,0xFF,
0xC0,0xFF,0xFF,0x07,0xFF,0xFF,0xC1,0x07,0x7F,0xE0,0xFF,0xFF,0x07,0xFF,0xFF,0x83,
0x07,0x3F,0xF0,0xFF,0xFF,0x07,0xFF,0xFF,0x07,0x0F,0x3E,0xF8,0xFF,0xFF,0x07,0xFF,
0xFF,0x0F,0x1E,0x1C,0xFC,0xFF,0xFF,0x07,0xFF,0xFF,0x0F,0x3C,0x08,0xFE,0xFF,0xFF,
0x07,0xFF,0xFF,0x1F,0x3C,0x00,0xFE,0xFF,0xFF,0x07,0xFF,0xFF,0x3F,0x78,0x00,0xFF,
0xFF,0xFF,0x07,0xFF,0xFF,0x7F,0xF0,0x80,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE0,
0xC1,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE0,0xC1,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,
0xFF,0xC1,0x83,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x83,0x07,0xFF,0xFF,0xFF,0x07,
0xFF,0xFF,0xFF,0x07,0x0F,0xFE,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x07,0x0F,0xFE,0xFF,
0xFF,0x07,0xFF,0xFF,0xFF,0x0F,0x1E,0xFC,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x07,0x3C,
0xF8,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x03,0x78,0xF0,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,
0x03,0x78,0xF0,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x41,0xF0,0xE0,0xFF,0xFF,0x07,0xFF,
0xFF,0xFF,0xE0,0xE0,0xC1,0xFF,0xFF,0x07,0xFF,0xFF,0x7F,0xE0,0xC1,0x83,0xFF,0xFF,
0x07,0xFF,0xFF,0x3F,0xF0,0xC1,0x87,0xFF,0xFF,0x07,0xFF,0xFF,0x1F,0xF8,0x83,0x07,
0xFF,0xFF,0x07,0xFF,0xFF,0x0F,0xFC,0x07,0x0F,0xFE,0xFF,0x07,0xFF,0xFF,0x0F,0xFE,
0x0F,0x1E,0xFC,0xFF,0x07,0xFF,0xFF,0x07,0xFF,0x0F,0x1E,0xFC,0xFF,0x07,0xFF,0xFF,
0x83,0xFF,0x1F,0x3C,0xF8,0xFF,0x07,0xFF,0xFF,0xC1,0xFF,0x3F,0x78,0xF0,0xFF,0x07,
0xFF,0xFF,0xC0,0xFF,0x7F,0x70,0xE0,0xFF,0x07,0xFF,0x7F,0xE0,0xFF,0x7F,0x00,0xE0,
0xFF,0x07,0xFF,0x3F,0xF0,0xFF,0xFF,0x00,0xC0,0xFF,0x07,0xFF,0x1F,0xF8,0xFF,0xFF,
0x01,0x80,0xFF,0x07,0xFF,0x1F,0xFC,0xFF,0xFF,0x03,0x00,0xFF,0x07,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07
};
PROGMEM const uint8_t logo1[] = {
0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00,
0x00,0x00,0xF0,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x0F,0x00,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0x03,0x00,
0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,
0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,
0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0xC0,0xFF,0xFF,0x0F,0xFC,0xFF,0xFF,0x00,
0xE0,0xFF,0xFF,0x03,0xF0,0xFF,0xFF,0x01,0xE0,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0x01,
0xF0,0xFF,0x7F,0xF8,0x87,0xFF,0xFF,0x03,0xF0,0xFF,0x7F,0xFC,0x0F,0xFF,0xFF,0x03,
0xF8,0xFF,0x3F,0xFE,0x1F,0xFF,0xFF,0x07,0xF8,0xFF,0x3F,0xFF,0x3F,0xFF,0xFF,0x07,
0xFC,0xFF,0x3F,0xFF,0x3F,0xFE,0xFF,0x0F,0xFC,0xFF,0x1F,0xFF,0x3F,0xFE,0xFF,0x0F,
0xFC,0xFF,0x1F,0xFF,0x3F,0xFE,0xFF,0x0F,0xFE,0xFF,0x1F,0xFF,0x3F,0xFE,0xFF,0x1F,
0xFE,0xFF,0x1F,0xFF,0x3F,0xFE,0xFF,0x1F,0xFE,0xFF,0x3F,0xFF,0x3F,0xFE,0xFF,0x1F,
0xFE,0xFF,0x3F,0xFE,0x3F,0xFF,0xFF,0x1F,0xFE,0xFF,0x3F,0xFE,0x1F,0xFF,0xFF,0x1F,
0xFF,0xFF,0x7F,0xFC,0x8F,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0xF0,0xC3,0xFF,0xFF,0x1F,
0xFF,0xFF,0xFF,0x01,0xE0,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0x07,0xF0,0xFF,0xFF,0x1F,
0xFF,0xFF,0xFF,0x1F,0xFE,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0x03,0xF0,0xFF,0xFF,0x1F,
0xFF,0xFF,0xFF,0x00,0xC0,0xFF,0xFF,0x1F,0xFE,0xFF,0x3F,0xF0,0x03,0xFF,0xFF,0x1F,
0xFE,0xFF,0x1F,0xFC,0x0F,0xFE,0xFF,0x1F,0xFE,0xFF,0x0F,0xFF,0x3F,0xFC,0xFF,0x1F,
0xFE,0xFF,0x8F,0xFF,0x7F,0xF8,0xFF,0x1F,0xFC,0xFF,0xC7,0xFF,0xFF,0xF8,0xFF,0x1F,
0xFC,0xFF,0xE3,0xFF,0xFF,0xF1,0xFF,0x0F,0xFC,0xFF,0xF3,0xFF,0xFF,0xE3,0xFF,0x0F,
0xFC,0xFF,0xF1,0xFF,0xFF,0xE3,0xFF,0x0F,0xF8,0xFF,0xF1,0xFF,0xFF,0xE7,0xFF,0x07,
0xF8,0xFF,0xF9,0xFF,0xFF,0xE7,0xFF,0x07,0xF0,0xFF,0xF8,0xFF,0xFF,0xC7,0xFF,0x03,
0xF0,0xFF,0xF8,0xFF,0xFF,0xC7,0xFF,0x03,0xE0,0xFF,0xF8,0xFF,0xFF,0xC7,0xFF,0x01,
0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,
0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,
0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,
0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0x03,0x00,
0x00,0xE0,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x00,0xC0,0xFF,0xFF,0xFF,0xFF,0x00,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0x0F,0x00,0x00,
0x00,0x00,0xE0,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0xFF,0x3F,0x00,0x00,0x00
};
//主函数运行
void loop() {
 int value=10;
while(1)
{
/*****方法1***** */
    u8g2.clearBuffer();  //清除缓冲区内容
    /***输出文字图像*** */
    // u8g2.drawStr(0,16,"Hallo") ;  
    // u8g2.drawUTF8(0,32,"你好哈");
    //u8g2.setCursor(0,48); //设置光标
    //u8g2.printf("温度数值:%d",value);
    u8g2.drawXBMP(0,0,62,62,logo1);
    /****************** */ 
    u8g2.sendBuffer();  //显示缓冲区内容

 //delay(10);
 //value++;
/********方法2******* */
/*
 u8g2.firstPage();
 do{
   u8g2.drawXBMP(0,0,41,62,logo);
 }while (u8g2.nextPage());
 */
}

}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白文化

求大佬打赏;

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值