0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样通过Arduino运行OLED

454398 来源:工程师吴畏 2019-08-05 09:32 次阅读

有机发光二极管OLED)是一种高对比度和高分辨率的显示器。这种显示器没有背光并且自己创建背光,这使得它们比LCD更清晰,更清晰和更平滑。美国物理化学家Ching W. Tang和Steven Van Slyke在Eastman Kodak于1987年建造了第一台实用的OLED设备。如今我们可以看到升级后的OLED一代,如SAMSUNG的Super AMOLED和AMOLED Plus以及LG的POLED。

怎样通过Arduino运行OLED

小型OLED模块在电子项目中非常有用。布线的简单布线和高可读性适用于显示数据,数字和简单图像。您可以找到具有不同分辨率的这些面板的不同尺寸和颜色。根据您的项目,您可以选择并行,SPI或I2C模型。有单色,2色和16位全彩色面板可供使用。我们选择带有SSD1306驱动器Arduino UNO的128 * 64,0.96英寸SPI OLED显示器。阅读本文的其余部分,了解如何在OLED显示屏上显示文本和图像。

电路

不同的SPI OLED显示器具有不同的引脚名称。使用上面的电路图来了解模块引脚名称的含义。大多数OLED模块也使用3.3伏电源。您可以更改Arduino的引脚,但您也必须在代码中更改它。

模拟

如果您没有组件或不想购买它们,可以通过Proteus仿真尝试并根据您的兴趣进行编辑。下载以下项目文件。

代码

为OLED模块编写了很多库。在本文中,我们选择了WaveShare OLED SSD1306库。它并不复杂,您甚至可以根据您的代码更改库。您必须先添加库,然后上传代码。如果这是您第一次运行Arduino板,请不要担心。只需按照以下步骤操作:

访问www.arduino.cc/en/Main/Software下载您的操作系统软件。按照说明安装IDE软件。

运行Arduino IDE并清除文本编辑器并在文本编辑器中复制以下代码。

导航到草图并包含库(从以下链接下载库)。现在单击添加ZIP库并添加库

选择工具和板中的板,选择Arduino UNO。

将Arduino连接到PC并设置工具和端口中的COM端口。

按上传(箭头标志)按钮。

您已经完成了设置!

结果

#include “ssd1306.h”

#define VCCSTATE SSD1306_SWITCHCAPVCC

#define WIDTH 128

#define HEIGHT 64

#define PAGES 8

#define OLED_RST 9

#define OLED_DC 8

#define OLED_CS 10

#define SPI_MOSI 11 /* connect to the DIN pin of OLED */

#define SPI_SCK 13 /* connect to the CLK pin of OLED */

uint8_t oled_buf[WIDTH * HEIGHT / 8];

void setup() {

Serial.begin(9600);

Serial.print(“OLED Example ”);

SSD1306_begin();

SSD1306_clear(oled_buf);

/* display images of bitmap matrix */

SSD1306_bitmap(0, 2, Signal816, 16, 8, oled_buf);

SSD1306_bitmap(24, 2,Bluetooth88, 8, 8, oled_buf);

SSD1306_bitmap(40, 2, Msg816, 16, 8, oled_buf);

SSD1306_bitmap(64, 2, GPRS88, 8, 8, oled_buf);

SSD1306_bitmap(90, 2, Alarm88, 8, 8, oled_buf);

SSD1306_bitmap(112, 2, Bat816, 16, 8, oled_buf);

SSD1306_string(0, 52, “MUSIC”, 12, 0, oled_buf);

SSD1306_string(52, 52, “MENU”, 12, 0, oled_buf);

SSD1306_string(98, 52, “PHONE”, 12, 0, oled_buf);

SSD1306_char3216(0, 16, ‘1’, oled_buf);

SSD1306_char3216(16, 16, ‘2’, oled_buf);

SSD1306_char3216(32, 16, ‘:’, oled_buf);

SSD1306_char3216(48, 16, ‘3’, oled_buf);

SSD1306_char3216(64, 16, ‘4’, oled_buf);

SSD1306_char3216(80, 16, ‘:’, oled_buf);

SSD1306_char3216(96, 16, ‘5’, oled_buf);

SSD1306_char3216(112, 16, ‘6’, oled_buf);

SSD1306_display(oled_buf);

}

void loop() {

}

汇编

您可以使用面包板和公/母跳线来完成它。

现在上传代码。

显示图像和动画

要显示图像,必须将其转换为十六进制代码。有几个应用程序将图像转换为十六进制代码。您可以从以下链接下载其中一个。首先,运行软件并从“文件”菜单中打开图像。您的图像尺寸应小于128 * 64像素。然后单击“选项”菜单中的转换,并确保设置与下图相同。

单击“文件”菜单中的“转换”。现在打开.c文件并复制十六进制代码。在主代码中,按以下格式添加十六进制代码。

const uint8_t SAMPLE_NAME [] PROGMEM = {0x00,0x00,0x00,0x00 。..。.. 0xFF};

现在,将以下行添加到循环中。

SSD1306_bitmap(0,0,SAMPLE_NAME,128,64,oled_buf);//(x位置,y位置,图像名称,宽度,高度)

已完成,上传代码到Arduino。

下一步是什么?

为了更多练习,我们添加了一个示例规范和文本动画。尝试编辑它并在显示屏上制作自己的动画。

您还可以在ElectroPeak官方网站上阅读此项目。

https://electropeak.com/learn/引导件/所述-初学者引导到显示文本的图像的动画-OLED显示逐Arduino的上/

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • OLED
    +关注

    关注

    119

    文章

    6172

    浏览量

    223758
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186570
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino实现CAN总线通信

    开源硬件平台,通过添加CAN总线模块,也可以实现CAN通信。 硬件准备 Arduino开发板 :可以选择Arduino Uno、Mega等型号。 CAN总线模块 :如MCP2515或MCP2562,这些模块
    的头像 发表于 11-12 10:09 209次阅读

    在DVEVM上通过ddd运行Demo

    电子发烧友网站提供《在DVEVM上通过ddd运行Demo.pdf》资料免费下载
    发表于 10-15 10:05 0次下载
    在DVEVM上<b class='flag-5'>通过</b>ddd<b class='flag-5'>运行</b>Demo

    Arduino Nano 读取 DHT11 环境温湿度数据及 OLED显示

    OLED显示
    jf_07365693
    发布于 :2024年08月14日 16:43:01

    Arduino Nano 和 NodeMCU ESP8266 读取 DHT11 环境温湿度数据及 OLED显示

    Arduino Nano 和 NodeMCU ESP8266 读取 DHT11 环境温湿度数据及 OLED显示
    的头像 发表于 08-13 18:04 934次阅读
    <b class='flag-5'>Arduino</b> Nano 和 NodeMCU ESP8266 读取 DHT11 环境温湿度数据及 <b class='flag-5'>OLED</b>显示

    怎样Arduino测试锂电池容量

    本文详细介绍了如何用Arduino测量锂电池的容量。并附有电路图和Arduino的程序代码。
    的头像 发表于 07-30 09:14 691次阅读
    <b class='flag-5'>怎样</b>用<b class='flag-5'>Arduino</b>测试锂电池容量

    通过I2C PWM IC控制伺服,可以为伺服控制进行高优先级中断吗?

    我开始运行一个具有非常简单的伺服控制的 Web 服务 我通过I2C PWM IC控制伺服, 我必须每 10 毫秒向 PWM IC 写入新值。 但是 server.handleClient
    发表于 07-12 06:20

    ESP32使用Arduino启用蓝牙后编译固件过大,怎样缩减大小呢?

    ESP32使用Arduino启用蓝牙后编译固件过大,怎样缩减大小,日志级别已经最低了,分区不能动,已经是1.9M的OTA分区配置了,怎样还能缩减大小,蓝牙功能能否裁剪
    发表于 06-28 11:27

    Arduino怎样配置LVGL8.1.0访问spiffs里面的字库或图片?

    抱歉把Arduino的内容发在这个版块了. 在Arduino的示例中LITTLEFS_test.ino SPIFFS_Test.ino FFat_Test.ino已经测试成功, 并且使用ESP32
    发表于 06-19 06:15

    使用idf.py命令方式编译,怎样才能编译arduino的库,并且在项目中可调用?

    在编译过程中,提示找不到对应的头文件。 请问使用idf.py命令方式编译,怎样才能编译arduino的库,并且在项目中可调用。
    发表于 06-13 06:56

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用
    发表于 06-12 07:21

    能否通过arduino访问TLE9879的速度/电流测量值?

    您好, ,我通过 Arduino IDE 将无刷直流电机屏蔽 TLE9879 与 Arduino 结合使用,以 HALL 模式简单地驱动无刷直流电机。 能否通过
    发表于 05-23 06:39

    微机二次消谐装置是怎样运行

    微机二次消谐装置是怎样运行的?微机二次消谐装置是一种用于电力系统中的无功补偿和谐波控制的装置,它采用先进的数字信号处理技术和微机控制技术,能够实现对电力系统中的无功功率和谐波进行快速有效的控制和补偿
    的头像 发表于 03-18 14:47 336次阅读

    arduino如何停止loop循环

    Arduino的loop循环是其主要的程序执行部分,该循环将在Arduino开发板上持续运行,并且只有在程序被重新上传或开发板断电重启时才会停止。然而,在某些情况下,你可能需要在程序执行过程中停止或
    的头像 发表于 02-14 16:24 4140次阅读

    SF1 RISC-V Core 驱动OLED屏幕

    SF1S60CG1121I引脚串口引脚 IO_T3_3,CSN(A4)SF1_UART_TX IO_T5_3,GCLK0(E4)SF1_UART_RX通过扩展板上的OLED屏幕与SF1 Demo板的连接如下
    发表于 12-10 10:26

    python怎样运行代码

    讨论Python代码的运行方式,包括解释器、交互式环境和命令行。 Python代码可以通过两种主要的方式运行:解释执行和编译执行。解释执行是指将源代码逐行解释为机器代码并执行,而编译执行是将源代码转换为机器代码,然后再执行。Py
    的头像 发表于 11-22 10:31 1141次阅读