MicroPython动手做(14)——掌控板之OLED屏幕

news2024/9/27 7:25:22

知识点:什么是掌控板?
掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED显示屏、RGB灯、加速度计、麦克风、光线传感器、蜂鸣器、按键开关、触摸开关、金手指外部拓展接口,支持图形化及MicroPython代码编程,可实现智能机器人、创客智造作品等智能控制类应用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

掌控板硬件特性:
ESP-32主控
处理器:Tensilica LX6双核处理器(一核处理高速连接;一核独立应用开发)
主频:高达240MHz的时钟频率
SRAM:520KB
Flash:8MB
Wi-Fi标准:FCC/CE/TELEC/KCC
Wi-Fi协议:802.11 b/g/n/d/e/i/k/r (802.11n,速度高达150 Mbps),A-MPDU和A-MSDU聚合,支持0.4us防护间隔
频率范围:2.4~2.5 GHz
蓝牙协议:符合蓝牙v4.2 BR/EDR和BLE标准
蓝牙音频:CVSD和SBC音频低功耗:10uA
供电方式:Micro USB供电
工作电压:3.3V
最大工作电流:200mA
最大负载电流:1000mA
掌控板载
三轴加速度计MSA300,测量范围:±2/4/8/16G
地磁传感器MMC5983MA,测量范围:±8 Gauss;精度0.4mGz,电子罗盘误差±0.5°
光线传感器
麦克风
3 颗全彩ws2812灯珠
1.3英寸OLED显示屏,支持16*16字符显示,分辨率128x64
无源蜂鸣器
支持2个物理按键(A/B)、6个触摸按键
支持1路鳄鱼夹接口,可方便接入各种阻性传感器
拓展接口
20通道数字I/O, (其中支持12路PWM,6路触摸输入)
5通道12bit模拟输入ADC,P0~P4
1路的外部输入鳄鱼夹接口:EXT/GND
支持I2C、UART、SPI通讯协议

在这里插入图片描述
在这里插入图片描述
1、OLED显示模块
有机发光二极管(Organic Light-Emitting Diode, UIV OLED)又称为有机电激光显示、有机发光半导体(Organic Electroluminesence Display, UIV OLED)。与液晶显示(Liquid Crystal Display, LCD)是不同类型的发光原理。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低耗电、极高反应速度等优点。 OLED显示模块为OLED显示屏+PCB+铁框构成,便于安装,广泛应用于工业现场,军工等行业。

主要特点:OLED为自发光材料,不需用到背光板,同时视角广、画质均匀、反应速度快、较易彩色化、用简单驱动电路即可达到发光、制程简单、可制作成挠曲式面板,符合轻薄短小的原则,应用范围属于中小尺寸面板。
显示方面:主动发光、视角范围大;响应速度快,图像稳定;亮度高、色彩丰富、分辨率高。
工作条件:驱动电压低、能耗低,可与太阳能电池、集成电路等相匹配。
适应性广:采用玻璃衬底可实现大面积平板显示;如用柔性材料做衬底,能制成可折叠的显示器。由于OLED是全固态、非真空器件,具有抗震荡、耐低温(-40℃)等特性,在军事方面也有十分重要的应用,如用作坦克、飞机等现代化武器的显示终端。

在这里插入图片描述
2、OLED屏工作原理
OLED的基本结构是由一薄而透明具半导体特性之铟锡氧化物(ITO),与电力之正极相连,再加上另一个金属阴极,包成如三明治的结构。整个结构层中包括了:空穴传输层(HTL)、发光层(EL)与电子传输层(ETL)。当电力供应至适当电压时,正极空穴与阴极电荷就会在发光层中结合,产生光亮,依其配方不同产生红、绿和蓝RGB三原色,构成基本色彩。OLED的特性是自己发光,不像TFT LCD需要背光,因此可视度和亮度均高,其次是电压需求低且省电效率高,加上反应快、重量轻、厚度薄,构造简单,成本低等,被视为 21世纪最具前途的产品之一。

有机发光二极体的发光原理和无机发光二极体相似。当元件受到直流电(Direct Current;DC)所衍生的顺向偏压时,外加之电压能量将驱动电子(Electron)与空穴(Hole)分别由阴极与阳极注入元件,当两者在传导中相遇、结合,即形成所谓的电子-空穴复合(Electron-Hole Capture)。而当化学分子受到外来能量激发后,若电子自旋(Electron Spin)和基态电子成对,则为单重态(Singlet),其所释放的光为所谓的荧光(Fluorescence);反之,若激发态电子和基态电子自旋不成对且平行,则称为三重态(Triplet),其所释放的光为所谓的磷光(Phosphorescence)。

在这里插入图片描述

3、掌控板板载1.3英寸OLED显示屏,分辨率128x64。采用Google Noto Sans CJK 16x16字体,支持简体中文,繁体中文,英文、日文和韩文语言。

在这里插入图片描述

4、OLED屏的坐标体系
掌控板OLED显示屏的分辨率是128x64,其意思是水平方向含有128个像素,垂直方向含有64个像素。屏幕上一共有128x64个像素点。

在这里插入图片描述

坐标X、Y值即对应屏幕横向、纵向位置。其实这样的X、Y在屏幕上就构成了一个直角坐标系。当X、Y值对应为0、0的时候,文字显示在屏幕的左上角;当Y值不变、X的值增加,文字垂直高度不变,水平向右移动;当X值不变、Y的值增加,文字水平位置不变,垂直向下移动。文字移动的这两个方向即构成了如下图所示的X、Y直角坐标系。水平方向用X轴表示,垂直方向用Y轴表示。

在数学中,是这样定义直角坐标系的:在平面内画两条互相垂直,并且有公共原点的数轴,其中横轴为X轴,纵轴为Y轴,这样我们就说在平面上建立了平面直角坐标系,简称直角坐标系。

掌控板屏幕分辨率为128x64,所以X轴的数值为0-127,Y轴的数值为0-63。

在这里插入图片描述

5、画直线(三横三竖)

from mpython import *

import time
while True:
    oled.fill(0)
    oled.show()
    time.sleep(1)
    oled.hline(0, 16, 128, 1)
    oled.show()
    time.sleep(1)
    oled.hline(0, 32, 128, 1)
    oled.show()
    time.sleep(1)
    oled.hline(0, 48, 128, 1)
    oled.show()
    time.sleep(1)
    oled.fill(0)
    oled.show()
    time.sleep(1)
    oled.vline(33, 0, 64, 1)
    oled.show()
    time.sleep(1)
    oled.vline(66, 0, 64, 1)
    oled.show()
    time.sleep(1)
    oled.vline(99, 0, 64, 1)
    oled.show()
    time.sleep(1)

mPthon 图形编程

在这里插入图片描述
在这里插入图片描述
6、画圆、三角形和矩形

from mpython import *
import time

while True:
    oled.fill(0)
    oled.DispChar("Hello, world!", 0, 16, 1)
    oled.show()
    time.sleep(1)
    oled.fill(0)
    oled.circle(64, 32, 30, 1)
    oled.fill_triangle(0, 0, 20, 40, 90, 63, 1)
    oled.RoundRect(40, 20, 50, 30, 30, 1)
    oled.rect(60, 20, 20, 50, 1)
    oled.show()
    time.sleep(1)

mPythonX 图形编程

在这里插入图片描述
在这里插入图片描述
7、动态曲线图形

from mpython import *
import time

def testdrawline():
    for i in range(0,64):
        oled.line(0,0,i*2,63,1)
        oled.show()
    for i in range(0,32):
        oled.line(0,0,127,i*2,1)
        oled.show()
    time.sleep_ms(250)
    oled.fill(0)
    oled.show()
    for i in range(0,32):
        oled.line(0,63,i*4,0,1)
        oled.show()
    for i in range(0,16):
        oled.line(0,63,127,(64-4*i)-1,1)
        oled.show()
    time.sleep_ms(250)
    oled.fill(0)
    oled.show()
    for i in range(1,32):
        oled.rect(2*i,2*i,(128-4*i)-1,(64-2*i)-1,1)
        oled.show()

testdrawline()

在这里插入图片描述

8、oled对象
oled对象为framebuf的衍生类,继承framebuf的方法。

oled.poweron()

开启显示屏电源。

oled.poweroff()

关闭显示器电源。

oled.contrast(brightness)

设置显示屏亮度。
brightness 亮度,范围0~255

oled.invert(n)

翻转像素点。当n=1时,未填充像素点点亮,填充像素点灭。当n=0时,则反。默认启动是填充像素点点亮。

oled.DispChar(s, x, y, mode=TextMode.normal)

oled屏显示文本。采用 Google Noto Sans CJK 开源无衬线字体字体。字体高度16像素点,支持英文,简体中文繁体中文,日文和韩文语言。 当显示字符串超出显示屏宽度可自动换行。
返回(字符总像素点宽度,续接显示的x,y坐标)的二元组。

s -需要显示的文本。
x 、y -文本的左上角作为起点坐标。
mode - 设置文本模式,默认为TextMode.normal

TextMode.normal - 等于1 。普通模式,文本显示白色,背景为黑色。
TextMode.rev - 等于2 。反转模式,文本显示黑色,背景为白色。
TextMode.trans - 等于3 。透明模式,透明文本意味着文本被写在显示中已经可见的内容之上。不同之处在于,以前屏幕上的内容仍然可以看到,而对于normal,背景将被当前选择的背景颜色所替代。
TextMode.xor - 等于4 。XOR模式,如果背景是黑色的,效果与默认模式(normal模式)相同。如果背景为白色,则反转文本。

oled.show()

将frame缓存发送至oled显示。

oled.fill(c)

用指定的颜色填充整个帧缓存。 c 为1时,像素点亮;c 为0时,像素点灭。

oled.circle(x, y, radius, c)

绘制圆
x 、y -左上角作为起点坐标。
radius -圆半径大小
c -为1时,像素点亮;c 为0时,像素点灭。

oled.fill_circle(x, y, radius, c)

绘制实心圆
x 、y -左上角作为起点坐标。
radius -圆半径大小
c -为1时,像素点亮;c 为0时,像素点灭。

oled.triangle(x0, y0, x1, y1, x2, y2, c)

绘制三角形
x0 、y0 -三角形上顶点坐标 。
x1 、y1 -三角形左顶点坐标 。
x2 、y2 -三角形左顶点坐标 。
c -为1时,像素点亮;c 为0时,像素点灭。

oled.fill_triangle(x0, y0, x1, y1, x2, y2, c)

绘制实心三角形
x0 、y0 -三角形上顶点坐标 。
x1 、y1 -三角形左顶点坐标 。
x2 、y2 -三角形左顶点坐标 。
c -为1时,像素点亮;c 为0时,像素点灭。

oled.bitmap(x, y, bitmap, w, h, c)

绘制bitmap图案
x 、y -左上角作为起点坐标
bitmap -图案bitmap 的btyearray字节数组
w -图案宽度
h -图案高度
c -为1时,像素点亮;

oled.RoundRect(x, y, w, h, r, c)

绘制弧角矩形
x 、y -左上角作为起点坐标
w -图案宽度
h -图案高度
r -圆弧角半径
c -为1时,像素点亮;c 为0时,像素点灭。

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

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

相关文章

win10安装vs6行号插件

插件包名:win10 VC6LineNumberAddin 下载包: 链接: https://pan.baidu.com/s/13T-NAxQQDcA_K1hHJQ0vWw?pwdbe3r 提取码: be3r 修改reg为以下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\DavidHowe Software\Lie…

想要零起步做跨境电商,可以试试这7个步骤!

近几年,跨境电商行业在不断的高速发展。国家政策的支持,行业的迅猛发展,使得跨境电商成为我国经济发展中的一匹黑马,不仅业务呈爆发式增长,我国跨境电商也逐步实现了“买全球卖全球”的愿望。 想要零起步做跨境电商&a…

linux学习(gbd进程)[5]

gdb set var i n #可设置变量值进程 冯诺依曼结构

LabVIEW使用灰度和边缘检测进行视频滤波

LabVIEW使用灰度和边缘检测进行视频滤波 数字图像处理(DIP)是真实和连续世界的离散表示。除此之外,这种数字图像在通信、医学、遥感、地震学、工业自动化、机器人、航空航天和教育等领域变得非常重要。计算机技术越来越需要视频图像的数字图…

一文讲解开发中的命名规范

命名规范 好的代码本身就是注释, 所以我们需要统一命名风格。 ​ 在本文中,将从大到小,从外到内,总结Java编程中的命名规范。文中将会涉及到日常工作中常见的命名示例,如包命名,类命名,接口命名&#xff0c…

java+springboot+mysql智慧办公OA管理系统

项目介绍: 使用javaspringbootmysql开发的智慧办公OA管理系统,系统包含超级管理员,系统管理员、员工角色,功能如下: 超级管理员:管理员管理;部门管理;职位管理;员工管理…

传输层中一些零碎且易忘的知识点

端口号:共两个字节 不同类型的端口号: 服务端端口号 熟知端口号:0~1023登记端口号:1024~49151 客户端使用端口号(短暂/临时端口号):49152~65535 要记得常见应…

Linux之Shell 编程详解(一)

第 1 章 Shell 概述 1)Linux 提供的 Shell 解析器有 [atguiguhadoop101 ~]$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh2)bash 和 sh 的关系 [atguiguhadoop101 bin]$ ll | grep bash -rwxr-xr-x. 1 root root …

EIP-2535 Diamond standard 实用工具分享

前段时间工作对接到了这标准的协议,于是简单介绍下这个标准分享下方便前端er使用的调用工具 一、标准的诞生 在写复杂逻辑的solidity智能合约时,经常会碰到两个问题,升级和合约大小限制。 升级目前有几种proxy模式,通过delegateca…

Minio在windows环境配置https访问

minio启动后,默认访问方式为http,但是有的时候我们的访问场景必须是https,浏览器有的会默认以https进行访问,这个时候就需要我们进行配置上的调整,将minio从http访问升级到https。而查看minio的官方文档,并…

基于Fringe-Projection环形投影技术的人脸三维形状提取算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................................................... figure; imshow(Im…

JavaScript高级——ES6基础入门

目录 前言let 和 const块级作用域模板字符串一.模板字符串是什么二.模板字符串的注意事项三. 模板字符串的应用 箭头函数一.箭头函数是什么二.普通函数与箭头函数的转换三.this指向1. 全局作用域中的 this 指向2. 一般函数(非箭头函数)中的this指向3.箭头…

Android性能优化之SharedPreference卡顿优化

下面的源码都是基于Android api 31 1、SharedPreference使用 val sharePref getPreferences(Context.MODE_PRIVATE) with(sharePref.edit()) { putBoolean("isLogin", true)putInt("age", 18)apply() } val isLogin sharePref.getBoolean("isLogi…

Flink CEP(二) 运行源码解析

通过DemoApp学习一下&#xff0c;CEP的源码执行逻辑。为下一篇实现CEP动态Pattern奠定理论基础。 1. Pattern的定义 Pattern<Tuple3<String, Long, String>,?> pattern Pattern.<Tuple3<String, Long, String>>begin("begin").where(new…

MySQL检索数据和排序数据

目录 一、select语句 1.检索单个列&#xff08;SELECT 列名 FROM 表名;&#xff09; 2.检索多个列&#xff08;SELECT 列名1&#xff0c;列名2&#xff0c;列名3 FROM 表名;&#xff09; 3.检索所有的列&#xff08;SELECT * FROM 表名;&#xff09; 4.检索不同的行&#x…

【小白必看】Python图片合成示例之使用PIL库实现多张图片按行列合成

文章目录 前言效果图1. 导入必要的库2. 打开文件并获取大小3. 设置生成图片的行数和列数4. 获取所有图片的名称列表5. 创建新的画布6. 遍历每个位置并粘贴图片7. 保存合成的图片完整代码图片来源结束语 前言 本文介绍了一个用于图片合成的 Python 代码示例。该代码使用了PIL库来…

一篇文章搞定Java泛型

目录 介绍 优点 泛型类 语法定义 代码示例 泛型类注意事项 抽奖示例 泛型类派生子类 定义 代码示例 子类是泛型 子类不是泛型 泛型接口 定义 泛型方法 定义 代码示例 泛型方法与可变参数 泛型方法总结 ​编辑类型通配符 定义 代码示例 通配符的上限 定义 …

leetcode743. 网络延迟时间 floyd

https://leetcode.cn/problems/network-delay-time/ 有 n 个网络节点&#xff0c;标记为 1 到 n。 给你一个列表 times&#xff0c;表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi)&#xff0c;其中 ui 是源节点&#xff0c;vi 是目标节点&#xff0c; wi 是一个信…

详细介绍 React 中如何使用 redux

在使用之前要先了解它的配套插件&#xff1a; 在React中使用redux&#xff0c;官方要求安装其他插件 Redux Toolkit 和 react-redux Redux Toolkit&#xff1a;它是一个官方推荐的工具集&#xff0c;旨在简化 Redux 的使用和管理。Redux Toolkit 提供了一些提高开发效率的工具…

F5 LTM 知识点和实验 5-健康检测

第五章:健康检测 监控的分类: 地址监控(3层)服务监控(4层)内容监控(7层)应用监控(7层)性能监控(7层)路径监控(3、4、7层)三层监控: 三层监控可以帮助bipip系统通过检查网络是否可达监视资源。比如使用icmp echo,向监控节点发送icmp_echo报文,如果接收到响应…