【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏模块5

news2024/10/7 20:32:12

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验九十三:0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块

在这里插入图片描述

知识点:OLED(OrganicLight-Emitting Diode)
又称为有机电激光显示、有机发光半导体(OrganicElectroluminesence Display,OLED)。OLED属于一种电流型的有机发光器件,是通过载流子的注入和复合而致发光的现象,发光强度与注入的电流成正比。OLED在电场的作用下,阳极产生的空穴和阴极产生的电子就会发生移动,分别向空穴传输层和电子传输层注入,迁移到发光层。当二者在发光层相遇时,产生能量激子,从而激发发光分子最终产生可见光。一般而言,OLED可按发光材料分为两种:小分子OLED和高分子OLED(也可称为PLED)。OLED是一种利用多层有机薄膜结构产生电致发光的器件,它很容易制作,而且只需要低的驱动电压,这些主要的特征使得OLED在满足平面显示器的应用上显得非常突出。OLED显示屏比LCD更轻薄、亮度高、功耗低、响应快、清晰度高、柔性好、发光效率高,能满足消费者对显示技术的新需求。全球越来越多的显示器厂家纷纷投入研发,大大的推动了OLED的产业化进程。

在这里插入图片描述
OLED特点
(1)功耗低——与LCD相比,OLED不需要背光源,而背光源在LCD中是比较耗能的一部分,所以OLED是比较节能的。例如,24in的AMOLED模块功耗仅仅为440mw,而24in的多晶硅LCD模块达到了605mw。
(2)响应速度快——OLED技术与其他技术相比,其响应速度快,响应时间可以达到微秒级别。较高的响应速度更好的实现了运动的图像。根据有关的数据分析,其响应速度达到了液晶显示器响应速度的1000倍左右。
(3)较宽的视角——与其他显示相比,由于OLED是主动发光的,所以在很大视角范围内画面是不会显示失真的。其上下,左右的视角宽度超过170度。
(4)能实现高分辨率显示——大多高分辨率的OLED显示采用的是有源矩阵也就是AMOLED,它的发光层可以是吸纳26万真彩色的高分辨率,并且随着科学技术的发展,其分辨率在以后会得到更高的提升。
(5)宽温度特性——与LCD相比,OLED可以在很大的温度范围内进行工作,根据有关的技术分析,温度在-40摄氏度到80摄氏度都是可以正常运行的。这样就可以降低地域限制,在极寒地带也可以正常使用。
(6)OLED能够实现软屏——OLED可以在塑料、树脂等不同的柔性衬底材料上进行生产,将有机层蒸镀或涂布在塑料基衬上,就可以实现软屏。
(7)OLED成品的质量比较轻——与其他产品相比,OLED的质量比较小,厚度与LCD相比是比较小的,其抗震系数较高,能够适应较大的加速度,振动等比较恶劣的环境。

在这里插入图片描述
Arduino实验接线示意图

在这里插入图片描述
在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验九十三: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块

项目十九:OLED液晶屏显示二行数字

实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5

Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验九十七: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块
  项目十九:OLED液晶屏显示二行数字
  实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5
*/

#include "ssd1306.h"

const uint8_t g_customFont_5x8[] PROGMEM = {
  0x00,  // 0x00 means fixed font type - the only supported by the library
  0x05,  // 0x05 = 5 - font width in pixels
  0x08,  // 0x08 = 8 - font height in pixels
  0x30,  // 0x30 = 48 - first ascii character number in the font ('0' = ascii code 48)
  // '0'
  0b00000000,
  0b00111110,
  0b01000001,
  0b01000001,
  0b00111110,
  // '1'
  0b00000000,
  0b01000010,
  0b01111111,
  0b01000000,
  0b00000000,
  0x00, // End of font
};

void setup() {
  /* Replace the line below with ssd1306_128x32_i2c_init() if you need to use 128x32 display */
  ssd1306_128x64_i2c_init();
  //    ssd1306_128x64_spi_init(3, 4, 5);
  ssd1306_fillScreen(0x00);
  ssd1306_setFixedFont( g_customFont_5x8 );
  ssd1306_printFixed (50, 12, "01100011", STYLE_NORMAL );
  ssd1306_printFixedN (50, 36, "1001", STYLE_ITALIC, FONT_SIZE_2X);
}

void loop() {
}

项目十九:OLED液晶屏显示二行数字
实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5

实验场景图

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验九十三: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块

项目二十:OLED液晶满屏显示字符

实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5

Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验九十七: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块
  项目二十:OLED液晶满屏显示字符
  实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5
*/

#include "ssd1306.h"

void setup(){
    /* Replace the line below with ssd1306_128x32_i2c_init() if you need to use 128x32 display */
    ssd1306_128x64_i2c_init();
    ssd1306_fillScreen(0x00);
    ssd1306_setFixedFont(ssd1306xled_font6x8);
    ssd1306_printFixed (0,  8, "Line 1. Normal text", STYLE_NORMAL);
    ssd1306_printFixed (0, 16, "Line 2. Bold text", STYLE_BOLD);
    ssd1306_printFixed (0, 24, "Line 3. Italic text", STYLE_ITALIC);
    ssd1306_printFixedN (0, 32, "Line 4. Double size", STYLE_BOLD, FONT_SIZE_2X);
}

void loop(){
}

项目二十:OLED液晶满屏显示字符
实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5

实验场景图

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验九十三: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块

项目二十一:OLED屏显示时钟

实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5

Arduino实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验九十七: 0.96寸I2C IIC通信128*64显示器 OLED液晶屏模块
  项目二十一:OLED屏显示时钟
  实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5
*/

#include "ssd1306.h"

uint32_t lastMillis;
uint8_t  hours = 19;
uint8_t  minutes = 22;
uint8_t  seconds = 0;

void printSeconds() {
  if (seconds & 1) {
    ssd1306_printFixed(54,  8, ":", STYLE_NORMAL);
  }
  else {
    ssd1306_printFixed(54,  8, " ", STYLE_NORMAL);
  }
}

void printMinutes() {
  char minutesStr[3] = "00";
  minutesStr[0] = '0' + minutes / 10;
  minutesStr[1] = '0' + minutes % 10;
  ssd1306_printFixed(78,  8, minutesStr, STYLE_NORMAL);
}

void printHours() {
  char hoursStr[3] = "00";
  hoursStr[0] = '0' + hours / 10;
  hoursStr[1] = '0' + hours % 10;
  ssd1306_printFixed(6,  8, hoursStr, STYLE_NORMAL);
}

void setup() {
  //如果您需要使用 128x32 显示,请将下面的行替换为 ssd1306_128x32_i2c_init()
  ssd1306_128x64_i2c_init();
  ssd1306_fillScreen(0x00);
  ssd1306_setFixedFont(comic_sans_font24x32_123);
  lastMillis = millis();
  printHours();
  printMinutes();
}

void loop() {
  if ((uint32_t)(millis() - lastMillis) >= 1000) {
    lastMillis += 1000;
    if (++seconds > 59)
    {
      seconds = 0;
      if (++minutes > 59)
      {
        minutes = 0;
        if (++hours > 23)
        {
          hours = 0;
        }
        printHours();
      }
      printMinutes();
    }
    printSeconds();
  }
}

项目二十一:OLED屏显示时钟
实验接脚: 0.96寸OLED液晶屏SDA接A4, SCL接A5

实验场景图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/795527.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wonderful Sql

Wonderful Sql 一. 初识数据库 练习题 1.1 编写一条 CREATE TABLE 语句,用来创建一个包含表 1-A 中所列各项的表 Addressbook (地址簿),并为 regist_no (注册编号)列设置主键约束 表1-A 表 Addressbook…

LeetCode64.Minimum-Path-Sum<最小路径和>

题目: 思路: 一开始使用的深度优先搜索,结果果然是超时了.好吧 是需要动态规划的. 和上次有一题有点像.(12条消息) LeetCode62.Unique-Paths<不同路径>_Eminste的博客-CSDN博客 将边缘初始化为数组原本的数.然后每次只能向下或…

#P1108. [NOIP2008提高组] 双栈排序

题目描述 Tom 最近在研究一个有趣的排序问题。如图所示,通过 22 个栈 S_1S1​ 和 S_2S2​,Tom 希望借助以下 44 种操作实现将输入序列升序排序。 操作 aa:将第一个元素压入栈 S_1S1​。 操作 bb:将 S_1S1​ 栈顶元素弹出至输出序…

13.5.3 【Linux】PAM 模块设置语法

PAM 借由一个与程序相同文件名的配置文件来进行一连串的认证分析需求。我们同样以passwd 这个指令的调用 PAM 来说明好了。 当你执行 passwd 后,这支程序调用 PAM 的流程是: 1. 使用者开始执行 /usr/bin/passwd 这支程序,并输入密码&#xf…

windos 服务器设置指定ip访问指定端口,其他ip不能访问

需求:设置指定ip访问指定端口,其他ip不能访问 一,禁止所有ip访问 需要打开IP安全策略 或者winR 输入secpol.msc 1.先创建一个ip安全策略 2.点击添加,不使用添加向导,建一个安全策略 继续点添加 二,放开需…

01 Excel常用高频快捷键汇总

目录 一、简介二、快捷键介绍2.1 常用基本快捷键1 复制:CtrlC2 粘贴:CtrlV3 剪切:CtrlX4 撤销:CtrlZ5 全选:CtrlA 2.2 常用高级快捷键1 单元格内强制换行:AltEnter2 批量输入相同的内容:CtrlEnt…

448.找到所有数组中消失的数字

448.找到所有数组中消失的数字 class Solution {public List<Integer> findDisappearedNumbers(int[] nums) {int[] temp new int[nums.length1];for (int i 0; i < nums.length; i) {temp[nums[i]];}ArrayList<Integer> list new ArrayList<>();for (…

【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏模块4

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

Linux——设备模型

目录 本章目标 一、设备模型基础 二、总线、设备和驱动 --------------------------------------------------------------------------------------------------------------------------------- 工作两周了&#xff0c;真吃不消啊&#xff0c;虽然年轻但是早8.30晚10点还…

JAVA面试总结-Redis篇章(四)——双写一致性

JAVA面试总结-Redis篇章&#xff08;四&#xff09;——双写一致性 问&#xff1a;redis 做为缓存&#xff0c;mysql的数据如何与redis进行同步呢&#xff1f;第一种情况&#xff0c;如果你的项目一致性要求高的话 采用以下逻辑我们应该先删除缓存&#xff0c;再修改数据库&…

【C++】STL——string的模拟实现、常用构造函数、迭代器、运算符重载、扩容函数、增删查改

文章目录 1.模拟实现string1.1构造函数1.2迭代器1.3运算符重载1.4扩容函数1.5增删查改 1.模拟实现string string使用文章 1.1构造函数 这里我们实现常用的第四个string(const char* s)和析构函数 class string { public://初始化列表赋值//string(const char* str "\0…

如何搭建一个成功的书店小程序

随着互联网的快速发展&#xff0c;传统实体书店面临着客流量下降的困境。为了适应市场需求&#xff0c;书店行业转型变得尤为重要。而制作书店小程序商城则成为了一种必备的转型方式。下面将详细介绍如何利用专业的小程序商城制作平台&#xff0c;手把手制作书店小程序商城。 首…

Docker 基础知识解析:容器与虚拟化的区别与优势

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

DTH11 温湿度模块

文章目录 前言一、DTH11 模块介绍二、设备树设置三、驱动程序四、测试程序五、上机测试及效果总结 前言 DHT11 是一款可测量 温度 和 湿度 的传感器。比如市面上一些空气加湿器&#xff0c;会测量空气中湿度&#xff0c;再根据测量结果决定是否继续加湿。 一、DTH11 模块介绍 …

VS下c++解析pcap文件

一、pcap文件格式 https://www.cnblogs.com/Chary/articles/15716063.html 接口协议&#xff08;四&#xff09;&#xff1a;以太网&#xff08;Ethernet&#xff09;学习&#xff08;一&#xff09;&#xff1a;协议_以太网协议_QNee的博客-CSDN博客 二、代码 pcapParser.h #…

向npm注册中心发布包(下)

目录 1、在package.json文件中指定dependencies和devDependencies 1.1 将依赖项添加到 package.json 文件 1.2 从命令行中 将依赖项添加到 package.json 文件 1.3 手动编辑 package.json 文件 2、关于语义版本控制 2.1 在已发布的包中增加语义版本 2.2 使用语义版本控制…

CentOS7系统Nvidia Docker容器基于TensorFlow2.12测试GPU

CentOS7系统Nvidia Docker容器基于TensorFlow1.15测试GPU 参考我的另一篇博客 1. 安装NVIDIA-Docker的Tensorflow2.12.0版本 1. 版本依赖对应关系&#xff1a;从源代码构建 | TensorFlow GPU 版本Python 版本编译器构建工具cuDNNCUDAtensorflow-2.6.03.6-3.9GCC 7.3.1Ba…

Linux设置密码复杂度

在etc目录下pam.d目录下&#xff0c;存在system-auth文件 先将文件备份下&#xff0c;然后在system-auth中插入下面行 password requisite pam_pwquality.so try_first_pass local_users_only retry3 authtok_type minlen8 lcredit-1 ucredit-1 dcredit-1 ocredi…

OpenCV 4.0+Python机器学习与计算机视觉实战

&#x1f482; 个人网站:【办公神器】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言第一部分&…

Shell脚本学习-变量子串

变量子串&#xff1a; man bash&#xff0c;然后搜索&#xff1a;Parameter Expansion。 参数拓展 $字符引进、提出了参数拓展、命令替换和数字替换。变量名或标识被大括号包围才能够被拓展。 我们可以记住一个表&#xff1a; 序号表达式说明1${parameter}返回变量$paramete…