什么是OLED显示屏?

有机发光二极管(OLED)显示器或也称为有机电致发光二极管显示器是一种基于有机化合物的显示器,其发光响应于施加在其上的电流。它是一种自发光显示器,不像传统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°C至80°C
  • 分辨率:128×64像素
  • 司机使用:SSD1306
  • 接口:IIC和SPI
  • Self-illuminating显示
  • 低功耗
  • 很薄的显示器

此项目所需的组件

  • 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)函数设置日期;先写日,再写月,最后再写年。
#包括“DS3231.h”DS3231 rtc(A4、A5);void setup(){Serial.begin(115200);rtc.begin();rtc.setDay(星期一);rtc.setTime(13,2,2);rtc.setDate(2,52021);}void loop(){}

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

#include  void setup() {Wire.begin();Serial.begin (9600);而(串行);系列。println(“\ nI2C扫描仪”);} void loop(){字节错误,地址;int nDevices;以“扫描…”);nDevices = 0;(地址= 1; address < 127; address++ ) { Wire.beginTransmission(address); error = 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中上载此代码。

#包括“DS3231.h”#包括#包括#包括#定义屏幕宽度128#定义屏幕高度64#定义OLED\u重置4#定义屏幕地址0x3C Adafruit\u SSD1306显示(屏幕宽度、屏幕高度、线、OLED\u重置);DS3231 rtc(A4、A5);void setup(){if(!display.begin(SSD1306_SWITCHCAPVCC,SCREEN_ADDRESS)){Serial.println(F(“SSD1306分配失败”);for(;);}}}void loop(){display.clearDisplay();display.setTextSize(1);//绘制2X比例文本显示.setTextColor(SSD1306_白色);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(“日期”);display.setTextSize(2);display.setCursor(0,41);display.println(rtc.getDateStr());display.display();//显示初始文本延迟(100);}

本代码的工作

#include "DS3231.h" #include  #include  #include 

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

#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64

定义两个常数以存储OLED显示屏的宽度和高度像素。我们使用的OLED显示器的宽度为128像素,高度为64像素。

#定义x3c SCREEN_ADDRESS 0

设置OLED显示器的I2C地址

Adafruit_SSD1306显示(屏幕宽度,屏幕高度,电线,OLED_RESET);

将所有参数传递给库。

DS3231 rtc (A4、A5);

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

void setup() {Serial.begin(9600);如果(!显示。begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS) {Serial. begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);println (F(“SSD1306分配失败”));(,);} }

在setup()函数中初始化OLED显示。如果分配失败,你会看到这条消息“SSD1306分配失败”

void loop() {display.clearDisplay();display.setTextSize (1);//绘制1X-scale文本显示。settextcolor (SSD1306_WHITE);显示。setCursor (0,0);display.println(“时间”);

我们将在loop()函数中编写主代码。
首先,使用clearDisplay()命令清除显示。
然后使用setTextSize()函数设置文本大小。在括号内写1表示1X比例,在括号内写2表示2X比例,依此类推。

然后使用setTextColor()函数设置文本的颜色。如果将SSD1306_写为白色,则所有文本将以浅色显示,背景将以深色显示。如果将SSD1306_写入黑色,则所有文本将以深色显示,显示屏背景将以浅色显示。

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

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

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

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

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

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

最后一个延时为100毫秒。

输出结果

OLED数字时钟

作者

评论已关闭。

Baidu