arduino 的 oled时钟简单显示

记录下
好像代码逻辑有点low
不过能用,后期再来优化下;

在这里插入图片描述


#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>

U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ D5, /* data=*/ D6, /* reset=*/ U8X8_PIN_NONE);   // All Boards without Reset of the Display
//在nodemcu中 scl 是 D5  sda是D6  
//这里用到的是 全缓冲的模式  
//采用用数据计数的方式,虽然效率不高....
//clock_
void setup(void) {
  u8g2.begin();  
}

int clock_num[5] ={0};   //用数组来表示时间数
void loop(void){


    u8g2.clearBuffer();
    u8g2.drawFrame(0,0,128,64);
    u8g2.setFontDirection(0);
    u8g2.setFont(u8g2_font_inb27_mf);

    // u8g2.drawStr(1,45, "D");

    u8g2.setCursor(2, 40);
    u8g2.print(clock_num[0]);//小时数 的十位
    u8g2.print(clock_num[1]);//小时数 的个位

    if(clock_num[4]%2 ==0)  //由于没有秒数 ,用 : 亮灭代表秒正的转动 
    u8g2.print(':');
    else
    u8g2.print(' ');

  
  u8g2.print(clock_num[2]);//分钟数 的个位
  u8g2.print(clock_num[3]);//分钟数 的十位
  //以下是简单的逻辑关系
    if(clock_num[4] == 60)
    { 
        clock_num[3]++;
        clock_num[4]=0;
    }
    if(clock_num[3] == 10)
    {
        clock_num[2]++;
        clock_num[3] =0;
    }
    if( (clock_num[2]*10+clock_num[3]) == 59 )
    {
        clock_num[2]=0;
        clock_num[1]++;
    }
        clock_num[4]++;
    if( (clock_num[0]*10+clock_num[1]) == 24 )
    {
        clock_num[5] ={0}; 
    }

  ///u8g2.drawStr(50,43, ":");
//  u8g2.drawStr(73,45, m_str_m);


  u8g2.sendBuffer();
  delay(10);   //秒数   应定义为 delay(1000);
  }
  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要在 Arduino 上使用 OLED 显示数字时钟,您需要先连接 OLED 显示屏到 Arduino 板上。 一般来说,OLED 显示屏连接到 Arduino 板上需要使用 I2C 总线。I2C 总线需要连接到 Arduino 板的 SDA 和 SCL 引脚上。 以下是一个简单的代码示例,它可以在 OLED 显示屏上显示数字时钟: ```C++ #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET -1 #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); void setup() { display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(0, 0); } void loop() { display.clearDisplay(); display.setCursor(0, 0); // 获取当前时间 int hour = hour(); int minute = minute(); int second = second(); // 显示时间 display.print(hour); display.print(":"); if (minute < 10) { display.print("0"); } display.print(minute); display.print(":"); if (second < 10) { display.print("0"); } display.print(second); display.display(); delay(1000); } ``` 这个代码示例使用 Adafruit_SSD1306 库来控制 OLED 显示屏。在 setup() 函数中,我们初始化了 OLED 显示屏,并设置了字体和文本颜色。在 loop() 函数中 ### 回答2: Arduino OLED显示数字时钟是一种在Arduino开发板上使用OLED显示屏来显示时间的方法。OLED显示屏是一种高亮度、低功耗和高对比度的显示屏,非常适合用于显示时钟。要实现这个功能,我们需要连接一个OLED显示屏到Arduino开发板上,并编写一段代码来控制显示屏。 首先,我们需要连接OLED显示屏到Arduino开发板。一般来说,OLED显示屏有四个引脚:电源引脚VCC和GND,以及数据引脚SDA和时钟引脚SCL。我们需要将这些引脚连接到Arduino开发板上相应的引脚。 然后,我们需要编写一段代码来控制OLED显示屏。首先,我们需要使用一个库来和OLED显示屏进行通信。有很多不同的库可供选择,例如Adafruit SSD1306库。我们需要通过包含这个库来访问其函数和方法。 在代码中,我们需要初始化OLED显示屏,并设置其参数,例如屏幕大小和亮度。然后,我们可以使用显示函数来显示时间。Arduino开发板有一个内部时钟,我们可以使用它来获取当前时间,并将其格式化为适合在OLED显示屏上显示的形式。格式化后的时间可以使用写入函数来在OLED显示屏上显示。 最后,我们需要将代码上传到Arduino开发板上,并确保电路连接正确。一旦上传成功,OLED显示屏就会开始显示数字时钟。我们可以在显示屏上看到实时的时间,并且这个数字时钟将持续运行,直到我们断开电源或停止代码运行。 通过这种方式,我们可以很容易地使用ArduinoOLED显示屏来创建一个简单而实用的数字时钟。这个项目还可以扩展,例如添加日期显示、闹钟设置等功能。 ### 回答3: Arduino是一种具有开源硬件和软件的微控制器平台,它被广泛用于制作各种电子项目。OLED(有机发光二极管)是一种先进的显示技术,具有高亮度、高对比度和低功耗的优点。在Arduino上使用OLED显示数字时钟可以实现一个简单而实用的电子时钟。 首先,我们需要连接ArduinoOLED显示屏。Arduino Uno板上有I2C总线,它可以用于连接OLED显示屏。我们将OLED的SDA引脚连接到A4引脚上,将OLED的SCL引脚连接到A5引脚上。 接下来,我们需要编写Arduino代码来控制OLED显示屏。使用U8g2库可以简化操作。首先,我们需要包含U8g2库的头文件并定义OLED对象。然后,在setup函数中初始化OLED对象,并设置OLED显示屏的字体和显示模式。在loop函数中,我们可以使用U8g2库提供的函数来显示当前的时间。 要显示一个数字时钟,我们可以通过使用Arduino中的时钟函数来获取当前的小时、分钟和秒钟。然后,我们可以调用U8g2库的显示函数,将时间显示OLED屏幕上。 在代码中添加一些控制逻辑,比如按下一个按钮切换显示格式或者调整时间,可以让我们的数字时钟更加灵活和实用。 总的来说,通过使用ArduinoOLED显示屏,我们可以很容易地制作一个数字时钟。这个数字时钟不仅可以显示时间,还可以通过添加一些控制逻辑来增加更多实用的功能。这是一个简单而有趣的电子项目,适合初学者和爱好者尝试。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值