【雕爷学编程】MicroPython动手做(13)——掌控板之RGB三色灯

news2024/11/15 15:36:58

知识点:什么是掌控板?
掌控板是一块普及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、板载RGB-LED灯
WS2812是一种集成了电流控制芯片的低功耗的RGB三色灯,R代表红色,G代表绿色,B代表蓝色,可实现256级亮度显示,完成16777216种颜色的全真色彩显示,采用特殊的单线通讯方式控制RGB灯的颜色。

掌控板载WS2812芯片的RGB-LED灯一共三颗,灯号从左往右依次为0,1,2。

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

图形编程之数值配色

在这里插入图片描述

2、WS2812
是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。

应用领域
具有低电压驱动,环保节能,亮度高,散射角度大,一致性好,超低功率,超长寿命等优点。将控制电路集成于LED上面,电路变得更加简单,体积小,安装更加简便。主要应用领域,LED全彩发光字灯串,LED全彩模组, LED全彩软灯条硬灯条,LED护栏管。LED点光源,LED像素屏,LED异形屏,各种电子产品,电器设备跑马灯等。

在这里插入图片描述
WS2812主要特点
● 智能反接保护,电源反接不会损坏IC。
● IC控制电路与LED点光源公用一个电源。
● 控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。
● 内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。
● 内置上电复位和掉电复位电路。
● 每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示,扫描频率不低于400Hz/s。
● 串行级联接口,能通过一根信号线完成数据的接收与解码。
● 任意两点传传输距离在不超过5米时无需增加任何电路。
● 当刷新速率30帧/秒时,级联数不小于1024点。
● 数据发送速度可达800Kbps。
● 光的颜色高度一致,性价比高。

在这里插入图片描述
3、RGB色彩模式
是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。

RGB原理
RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于三者亮度之总和,越混合亮度越高,即加法混合。红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。红、绿、蓝三个颜色通道每种色各分为256阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色灰度数值相同时,产生不同灰度值的灰色调,即三色灰度都为0时,是最暗的黑色调;三色灰度都为255时,是最亮的白色调。RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。加成色用于照明光、电视和计算机显示器。例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。这些颜色若发生重叠,则产生黄、青和紫。

RGB格式
对一种颜色进行编码的方法统称为“颜色空间”或“色域”。用最简单的话说,世界上任何一种颜色的“颜色空间”都可定义成一个固定的数字或变量。RGB(红、绿、蓝)只是众多颜色空间的一种。采用这种编码方法,每种颜色都可用三个变量来表示-红色绿色以及蓝色的强度。记录及显示彩色图像时,RGB是最常见的一种方案。但是,它缺乏与早期黑白显示系统的良好兼容性。因此,许多电子电器厂商普遍采用的做法是,将RGB转换成YUV颜色空间,以维持兼容,再根据需要换回RGB格式,以便在电脑显示器上显示彩色图形。

在这里插入图片描述
RGB色彩空间
RGB色彩空间根据实际使用设备系统能力的不同,有各种不同的实现方法。截至2006年,最常用的是24-位实现方法,也就是红绿蓝每个通道有8位或者256色级。基于这样的24-位RGB 模型的色彩空间可以表现 256×256×256 ≈ 1670万色。一些实现方法采用每原色16位,能在相同范围内实现更高更精确的色彩密度。这在宽域色彩空间中尤其重要,因为大部分通常使用的颜色排列的相对更紧密。印刷技术的当中的RGB色彩空间主要是指加色法当中的三度色彩空间,通过使用不同强度的三原色,红、绿、蓝色的光线来组合成不同的色彩,就好像说,如果平时我们利用扫描仪从印刷品上扫描图像,原理就是扫描仪阅读了图像上面的红、绿、蓝三色的光亮度,然后把这些量度转换成数据,当显示器收到这些数据的时候就可以按照程序设定转换成制定的红、绿、蓝三原色,其实他们当中是有很多不同颜色的小色块的,由于这些色块的像素非常非常的小而且密密麻麻的,所以我们眼睛没法分辨出来。

常见颜色及色值

在这里插入图片描述

4、点亮RGB三色灯

from mpython import *

rgb[0] = (100, 0, 0)  # 设置为红色,半亮度
rgb[1] = (0, 100, 0)  # 设定为绿色,半亮度
rgb[2] = (0, 0, 255)  # 设置为蓝色,全亮度

rgb.write()

注解:

首先导入mpython模块:

from mpython import *

导入mpython模块后,会为掌控创建一个NeoPixel对象rgb,控制板载的RGB只需对rgb对象操作。

设置颜色:

rgb[0] = (100, 0, 0)  # 设置为红色,半亮度

rgb[1] = (0, 100, 0)  # 设定为绿色,半亮度

rgb[2] = (0, 0, 255)  # 设置为蓝色,全亮度

rgb[n] = (r, g, b) 可以设置每个像素点颜色,n 为板载RGB灯的个数,第一个灯为0。 r、g、b 为颜色亮度值,范围值为0~255。

rgb.fill(rgb_buf) 可以填充所有像素点的颜色,如:rgb.fill((255,0,0)),所有RGB灯设置为红色,全亮度。

将颜色输出到RGB灯:

rgb.write()

图形编程之模板选色

点击颜色框设置灯珠的颜色,我们有单独点亮一个灯和全部点亮,可以视情况决定使用哪一种方便。

在这里插入图片描述
在这里插入图片描述
RGB三色灯实物与仿真

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

5、RGB彩虹流水灯
通过延时模块来控制RGB灯亮的时间,再通过改变RGB灯的RGB值改变灯颜色,从而达到彩虹流水灯效果。

from mpython import *
import time

rgb[0] = (100, 0, 0)  
sleep(0.05)
rgb[1] = (0, 100, 0)
sleep(0.05)
rgb[2] = (0, 0, 255)  
sleep(0.5)
rgb.fill( (0, 0, 0) )
rgb.write()

rgb[0] = (0, 100, 0)
sleep(0.05)
rgb[1] = (0, 0, 255)  
sleep(0.05)
rgb[2] = (100, 0, 0)   
sleep(0.5)
rgb.fill( (0, 0, 0) )
rgb.write()

rgb[0] = (0, 0, 255)  
sleep(0.05)
rgb[1] = (100, 0, 0)  
sleep(0.05)
rgb[2] = (0, 100, 0)
sleep(0.5)
rgb.fill( (0, 0, 0) )
rgb.write()

Mind+图形编程

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

STM32 UDS Bootloader开发-上位机篇-CANoe制作(2)

文章目录 前言CANoe增加NodeCAPL脚本获取GUI中的参数刷写过程诊断仪在线接收回调函数发送函数总结前言 在上一篇文章中,介绍了UDS Bootloadaer上位机软件基于CANoe的界面设计。本文继续介绍CAPL脚本的编写以实现刷写过程。 CANoe增加Node 在开始编写CAPL之前,需要在Simula…

UE4/5C++多线程插件制作(十九、异步资源读取封装,细节修改)

MTPResourceLoadManage 接口 MTPThreadInterface 添加头文件: #include "Engine/StreamableManager.h" cpp class IStreamableContainer { public:virtual ~IStreamableContainer(){}//异步//存储路径IStreamableContainer& operator>>(const TArray…

JVM | 基于类加载的一次完全实践

引言 我在上篇文章:JVM | 类加载是怎么工作的 中为你介绍了Java的类加载器及其工作原理。我们简单回顾下:我用一个易于理解的类比带你逐步理解了类加载的流程和主要角色:引导类加载器,扩展类加载器和应用类加载器。并带你深入了解…

BCNet论文精读

Title—标题 Boundary Constraint Network(边界约束网络) With Cross Layer Feature Integration(跨层特征融合) for Polyp Segmentation(息肉分割) 结构分析 标题结构由三部分组成,分别是本文…

java static修饰的静态成员

静态成员 特点: 1.静态成员可以被本类所有对象共享2.静态成员可以通过类名调用也可以推荐对象调用,但是推荐使用类名调用!3.静态成员随着类的加载而加载,优先于对象存在的静态方法的注意事项: 1.非静态方法可以访问任…

SpringBoot运维

能够掌握SpringBoot程序多环境开发 能够基于Linux系统发布SpringBoot工程 能够解决线上灵活配置SpringBoot工程的需求 Windows打包运行 你的电脑不可能一直开着机联网作为服务器: 我们将我们项目打包放到外部的服务器上,这样其他用户才能正常访问&#x…

从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router、抽取全局配置文件】

从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router】 本期主要完成对Server的搭建、封装连接与业务绑定、实现基础Router(处理业务的部分)、抽取框架的全局配置文件 从配置文件中读取数据(服务器监听端口、监听IP等&a…

《TCP IP网络编程》第十二章

第 12 章 I/O 复用 12.1 基于 I/O 复用的服务器端 多进程服务端的缺点和解决方法: 为了构建并发服务器,只要有客户端连接请求就会创建新进程。这的确是实际操作中采用的一种方案,但并非十全十美,因为创建进程要付出很大的代价。…

CK_03靶机详解

CK_03靶机详解 靶场下载地址:https://download.vulnhub.com/ck/MyFileServer_3.zip 这个靶机开放的端口特别多,所以给我们的误导也很多,我直接按照正确的思路来。 因为开着445所以就枚举了一下靶机上共享的东西,发现两个share的…

MTK联发科安卓核心板MT8385(Genio 500)规格参数资料_性能介绍

简介 MT8385安卓核心板 是一个高度集成且功能强大的物联网平台,具有以下主要特性: l 四核 Arm Cortex-A73 处理器 l 四核Arm Cortex-A53处理器 l Arm Mali™-G72 MP3 3D 图形加速器 (GPU),带有 Vulkan 1.0、OpenGL ES 3.2 和 OpenCL™ 2.x …

【SpringCloud Alibaba】(六)使用 Sentinel 实现服务限流与容错

今天,我们就使用 Sentinel 实现接口的限流,并使用 Feign 整合 Sentinel 实现服务容错的功能,让我们体验下微服务使用了服务容错功能的效果。 因为内容仅仅围绕着 SpringCloud Alibaba技术栈展开,所以,这里我们使用的服…

.sql文件导入MySQL

命令行导入 source E:\data.sql图形化界面导入 选择.sql文件路径开始。 推荐使用命令行导入!!!

matplotlib——3. 绘制分布(scatter+hist)

文章目录 1. matplotlib实现1.1 效果1.2 代码 2. seaborn实现2.1 效果2.2 代码 左图是matplotlib的结果,右图是seaborn的结果 1. matplotlib实现 1.1 效果 效果:(二维正态分布的散点图每个轴的直方图) 1.2 代码 import nump…

关于Anaconda环境配置的一些问题

文章目录 一、关于package文件安装位置二、关于尝试下载Python包时出现的CondaSSLError三、配置环境的整个流程四、如何在Jupyter中打开任意位置的文件夹五、如何在Jupyter对应的环境中安装包 一、关于package文件安装位置 package 文件安装在envs目录底下的Lib中,可…

Llama2跟进:GPU硬件要求、微调注意事项等【202307】

在过去几天里关注Llama 2 的所有新闻已经超出了全职工作的范围。 信息网络确实充满了拍摄、实验和更新。 至少还要再过一周,但已经有一些关键点了。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 在这篇文章中,我将澄清我对原始帖子中有关 Lla…

MySQL 相关知识

MySQL 相关知识 1、三大范式2、DML 语句和 DDL 语句区别3、主键和外键的区别4、drop、delete、truncate 区别5、基础架构6、MyISAM 和 InnoDB 有什么区别?7、推荐自增id作为主键问题8、为什么 MySQL 的自增主键不连续9、redo log 是做什么的?10、redo log 的刷盘时…

WIZnet W5500-EVB-Pico 静态IP配置教程(二)

W5500是一款高性价比的 以太网芯片,其全球独一无二的全硬件TCP、IP协议栈专利技术,解决了嵌入式以太网的接入问题,简单易用,安全稳定,是物联网设备的首选解决方案。WIZnet提供完善的配套资料以及实时周到的技术支持服务…

Windows Server 2012 能使用的playwright版本

由于在harkua_bot里面使用到了playwright,我的服务器又是Windows Server 2012 R2,最新版playwright不支持Windows Server 2012 R2,支持Windows Server 2016以上,所以有了这个需求 https://cdn.npmmirror.com/binaries/playwright…

手写线程池 - C++版 - 笔记总结

1.线程池原理 创建一个线程,实现很方便。 缺点:若并发的线程数量很多,并且每个线程都是执行一个时间较短的任务就结束了。 由于频繁的创建线程和销毁线程需要时间,这样的频繁创建线程会大大降低 系统的效率。 2.思考 …

【Python从入门到进阶】30、JSONPath的介绍和使用

接上篇《29、xpath抓取站长素材图片》 上一篇我们讲解了如何利用xpath来抓取站长素材网站的图片区首页的所有图片,本篇我们来介绍JSONPath的基础和具体使用。 一、JSONPath的基本概念 1、什么是JSONPath? JSONPath是一种用于在JSON(JavaSc…