什么是OLED显示屏?

有机发光二极管(OLED)显示器或称为有机EL二极管显示器,是一种基于有机化合物的显示器,该化合物会对施加于其上的电流发出光。它是一种自发光显示器,不像传统的LCD显示器那样需要背光。它可以与任何单片机使用SPI和IIC通信协议接口。这种类型的OLED显示屏有各种形状和大小。在这个项目中,我们将使用一个0.96英寸的OLED显示屏。该显示器由128×64像素组成,可以使用任何微控制器打开/关闭。在本例中,我们将使用Arduino UNO板。

销图0.96英寸OLED显示屏

0.96英寸OLED显示板配置

特点为0.96英寸OLED显示屏

  • 输入电压:3.3-5 V.
  • 工作电流:9-12mA
  • 工作温度:-40℃~ 80℃
  • 决议:128×64像素
  • 司机使用:SSD1306
  • 接口:IIC和SPI
  • 自我照明显示
  • 低功耗
  • 非常薄的显示

此项目所需的组件

  • Arduino Uno.
  • 0.96英寸OLED显示屏
  • DS3231 RTC模块
  • 电路试验板
  • 跳线

DS3232 RTC模块的销图

0.96英寸OLED显示引脚配置

本项目的框图

本项目的工作

这个项目的主要目标是使用OLED显示器创建一个数字手表。现在,为了得到准确的时间和日期,我们必须使用任何RTC模块。这里,我们将使用DS3231模块。
在我们的主代码中,我们将添加一个代码来从这个模块获取时间和日期值,并将它们存储到一些变量中。
然后,我们将在主代码中添加OLED显示屏的基本接口代码,并显示OLED显示屏上的日期和时间值。

这个项目需要的图书馆

在前进之前,在Arduino IDE软件中下载并安装所有这些库。

  • https://github.com/adafruit/Adafruit-GFX-Library
  • https://github.com/adafruit/adafruit_ssd1306
  • http://www.rinkydinkelectronics.com/library.php?id=73

本项目电路图

OLED数字时钟

步骤1:设置RTC模块的数据、时间、日期。为此上传以下代码到Arduino板。

  • 使用rtc.setDay(Day_Name)函数设置日期;在括号内用大写字母写出日期名称。
  • 使用rtc.settime(hh:mm:ss)函数来设置时间;首先,写几个小时,然后分钟,并在最后的写秒表中。
  • 使用RTC.SetDate(DD:mm:yyyy)函数来设置日期;第一次写下,然后是几个月,在最后的写作年份。
#include "DS3231.h" DS3231 rtc(A4, A5);void setup() {Serial.begin(115200);rtc.begin ();rtc.setDay(星期一);rtc.setTime(13日2 2);rtc.setDate(2、5、2021);} void loop() {}

第二步:找到OLED显示屏的地址。在Arduino中上传以下代码。然后打开串行显示器,记录OLED显示器的地址。只连接OLED显示屏到Arduino,不连接RTC模块。否则,您将得到三个地址。

#include  void setup(){wire.begin();Serial.Begin(9600);而(!序列);serial.println(“\ ni2c扫描仪”);void循环(){字节错误,地址;int ndevices;serial.println(“扫描......”);ndevices = 0;for(地址= 1;地址<127;地址++){wire.begintroansmission(地址);错误= wire.endtransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknown error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(5000); }

Arduino代码为这个项目

步骤3:这是这个项目的主要代码。在Arduino中上传此代码。

#include " ds331 .h" #include  #include  #include  #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET 4 #define SCREEN_ADDRESS 0x3CDS3231 rtc (A4、A5);Void setup() {if(!display。begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)){串行。println (F(“SSD1306分配失败”));(,);}} void loop() {display.clearDisplay();display.setTextSize (1);//绘制2x比例的文本显示。settextcolor (SSD1306_WHITE);display.setCursor(0,0);display.println(“时间”); display.setTextSize(2); display.setCursor(0, 10); display.println(rtc.getTimeStr()); display.setTextSize(1); display.setCursor(0, 30); display.println("DATE"); display.setTextSize(2); display.setCursor(0, 41); display.println(rtc.getDateStr()); display.display(); // Show initial text delay(100); }

本准则的工作

#include“ds3231.h”#include  #include  #include 

首先,包括此项目所需的所有库。我们需要DS3231 RTC模块的DS3231库,I2C通信的Wire Library,以及用于OLED显示的Adafruit GFX和SSD1306库。

#define screen_width 128 #define screen_height 64

定义两个常量以存储OLED显示屏的宽度和高度像素。我们使用的OLED显示屏具有128像素的高度和64像素。

#define screen_address 0x3c.

设置OLED显示屏的I2C地址

adafruit_ssd1306显示(screen_width,screen_height,&wire,Oled_reset);

将所有参数传递给库。

DS3231 RTC(A4,A5);

定义DS3231 RTC模块的SDA和SCL引脚。Arduino A4引脚为SDA引脚,Arduino A5引脚为SCL引脚。

void setup(){serial.begin(9600);if(!display.begin(ssd1306_switchcopvcc,screen_address)){serial.println(f(“SSD1306分配失败”));(,);}}

启动Setup()函数中的OLED显示。如果分配失败,您将此消息“SSD1306分配失败”

void循环(){display.cleardisplay();display.setTextSize (1);//绘制1x级文本显示.settextColor(SSD1306_White);display.setCursor(0,0);display.println(“time”);

我们将在循环()函数中编写我们的主代码。
首先,使用cleardisplay()命令清除显示。
然后使用setTextSize()函数设置文本大小。将1写在括号内表示1X-scale,将2写在括号内表示2X-scale,以此类推。

然后使用setTextColor()函数设置文本的颜色。如果你写SSD1306_WHITE,那么所有的文本将以浅色显示,背景将以深色显示。如果您编写SSD1306_BLACK,那么所有文本将以深色显示,而显示器的背景将以浅色显示。

然后使用setcursor()函数设置要显示文本的光标位置。首先,写列号并写入行号。请记住,我们有128列和64行,因为我们在此显示中有128×64像素。

然后在显示屏上打印时间。

display.setTextSize (2);显示。setCursor (0, 10);display.println (rtc.getTimeStr ());

然后再次设置文本的大小。这次我们使用的是2X大小。然后再次设置光标位置并打印时间。要从RTC模块获取时间,我们将使用getTimeStr()函数。

display.setTextSize (1);display.setCursor(0,30);display.println(“日期”);display.setTextSize (2);display.setCursor(0,41);display.println (rtc.getDateStr ());display.display ();//显示初始文本延迟(100);}

同样,在OLED显示屏上显示日期。我们正在使用getDatestR()函数来从RTC模块获取日期。

在最后一个延迟100毫秒。

输出结果

OLED数字时钟

作者

评论都关门了。