OLED在ESP8266中的应用(二)

5 篇文章 0 订阅
3 篇文章 0 订阅

OLED在ESP8266中的应用(二)

用OLED显示做一个随机数的显示以及进行相应变化后ascii值对应字符的显示
真题思路
我们首先采用一个随机数组的取值函数
然后做一个随机数的显示以及进行相应变化的后ascii值对应字符的显示函数
划定2个状态,进行判定
具体方法讲解,在程序中做了详细的阐述

#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, SCL, SDA, U8X8_PIN_NONE);
#define INFO_SCREEN_DELAY 8000
uint8_t z = 127;
uint32_t lcg_rnd(void) //取随机数函数
{
z = (uint8_t)((uint16_t)65*(uint16_t)z + (uint16_t)17);
return (uint32_t)z;
}
void setup(void) {
u8g2.begin();
}
void draw(int is_blank) //随机数及其变化后对应字符的显示函数
{
int i, j;
int n;
char s[4];
for( j = 0; j < 20; j++ ) //进行20次的随机数取值
{
n = lcg_rnd(); //随机数
for( i = 0; i < 3; i++ )
{
s[i] = lcg_rnd()>>3;//分别取随机数右移1,2,3位后的值组成函数
if ( s[i] < 16 )//取上述组成的函数,如果函数的值小于16,则加上a(即ascii值为97),否则加上A(即ascii值为65),函数的最后一位为终止符,不显示
s[i] += ‘a’;
else
s[i] += ‘A’;
}
s[3] = ‘\0’

u8g2.setCursor(0,15);//设置光标位置
u8g2.print(“Number: “);
if ( is_blank )//判定显示函数为哪种状态
{
u8g2.setCursor(0,50);//设置光标位置
u8g2.print(” sencond”);//如果为状态2输出sencond
}
else
{
u8g2.setCursor(0,50);//设置光标位置
u8g2.print(" first");//如果为状态1输first
}
u8g2.setCursor(70,15);//设置光标位置
u8g2.print(n);
// print string
u8g2.setCursor(0,30);//设置光标位置
u8g2.print(“Text: “);
u8g2.setCursor(70,30);//设置光标位置
u8g2.print(s);//输出变化后ascii的对应字符
if ( is_blank )//判定显示函数为哪种状态
{
u8g2.setCursor(0,50);//设置光标位置
u8g2.print(” sencond”);//如果为状态2输出sencond
}
else
{
u8g2.setCursor(0,50);//设置光标位置
u8g2.print(" first");//如果为状态1输first
}
// make the result visible
u8g2.sendBuffer();
// delay, so that the user can see the result
delay(500);
u8g2.clearBuffer(); //清屏
}
}
void draw_m1_t()//显示函数状态1
{
u8g2.clearBuffer();//清屏
u8g2.setFontMode(1);//设置字体背景模式
u8g2.setFont(u8g2_font_cu12_tr);//设置字体
u8g2.setCursor(0,15);//设置光标位置
u8g2.print(“let us look;”);
u8g2.setCursor(0,30);//设置光标位置
u8g2.print(“next;”);
u8g2.setCursor(0, 55);//设置光标位置
u8g2.print("start to show ");
u8g2.sendBuffer();//将内容发送到显示器,发送刷新消息
delay(INFO_SCREEN_DELAY);//延时显示
u8g2.setFontMode(1); //设置字体背景模式
u8g2.setFont(u8g2_font_cu12_tr);//设置字体
u8g2.clearBuffer(); // //清屏
draw(0);//显示函数
}
void loop(v
}
void draw_m0_t()//显示函数状态2
{
u8g2.clearBuffer();//清屏
u8g2.setFontMode(1);//设置字体背景模式
u8g2.setFont(u8g2_font_cu12_tr);//设置字体
u8g2.setCursor(0,15);//设置光标位置
u8g2.print(“let us look;”);
u8g2.setCursor(0,30);//设置光标位置
u8g2.print(“next;”);
u8g2.setCursor(0, 55);//设置光标位置
u8g2.print("start to show ");
u8g2.sendBuffer();//将内容发送到显示器,发送刷新消息
delay(INFO_SCREEN_DELAY);//延时显示
u8g2.setFontMode(1); //设置字体背景模式
u8g2.setFont(u8g2_font_cu12_tr);//设置字体
u8g2.clearBuffer(); //清屏
draw(1);//显示函数
}
void loop(void)
{

u8g2.clearBuffer(); //清屏
u8g2.setFontMode(1);//设置字体背景模式
u8g2.setFont(u8g2_font_cu12_tr);//设置字体
u8g2.setCursor(0,15);//设置光标位置
u8g2.print(F(“I AM HAOW”));
u8g2.setCursor(0,30);//设置光标位置
u8g2.print(F("YOU SOMETHING "));
u8g2.setCursor(0,45);//设置光标位置
u8g2.print(F(“THAT FUNNY.”));
u8g2.sendBuffer();//将内容发送到显示器,发送刷新消息
delay(INFO_SCREEN_DELAY);//延时演示
draw_m1_t(); //状态1演示
draw_m0_t(); //状态2演示
delay(1000);
}

在这里插入图片描述
状态一:
在这里插入图片描述
状态二:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值