ESP32(掌控板) 陀螺仪显示与RGB灯

ESP32(掌控板) 陀螺仪显示与RGB灯

本程序图形化显示陀螺仪位置(注意要换算),根据陀螺仪位置控制RGB灯颜色并有3种颜色组合和关灯可选,通过触摸按键调节亮度。

图形化程序如下

d4f1b127ef234fe0a1d36662d4fe5c2c.png

Arduino代码如下

/*!* MindPlus* mpython**/
#include <MPython.h>// 动态变量
volatile float mind_n_i, mind_n_lb, mind_n_lx, mind_n_ly, mind_n_x, mind_n_y, mind_n_xx,mind_n_yy;
// 函数声明
uint32_t rgbToColor(uint8_t r, uint8_t g, uint8_t b);// 主程序开始
void setup() {mPython.begin();accelerometer.setOffset(0, -187, 0);mind_n_i = 0;mind_n_lb = 3;
}
void loop() {if (((buttonA.isPressed()) && (mind_n_i>0))) {mind_n_i -= 1;}if (((buttonB.isPressed()) && (mind_n_i<3))) {mind_n_i += 1;}display.fillScreen(0);if ((mind_n_i==0)) {display.setCursor(12, 23);display.print("关灯");}if ((mind_n_i==1)) {display.setCursor(15, 23);display.print("RG");}if ((mind_n_i==2)) {display.setCursor(15, 23);display.print("GB");}if ((mind_n_i==3)) {display.setCursor(15, 23);display.print("BR");}mind_n_lx = (round(((255 * (accelerometer.getY())) / 1000)));mind_n_ly = (round(((255 * (accelerometer.getX())) / 1000)));mind_n_x = (round(((90 * mind_n_lx) / 255)));mind_n_y = (round(((90 * mind_n_ly) / 255)));mind_n_xx = (round(((mind_n_x * 32) / 90)));mind_n_yy = (round(((mind_n_y * 32) / 90)));display.setCursor(5, 5);display.print("X:");display.setCursor(20, 5);display.print(mind_n_x);display.setCursor(5, 42);display.print("Y:");display.setCursor(20, 42);display.print(mind_n_y);display.drawCircle(74, 30, 31);display.fillCircle((74 - mind_n_xx), (32 - mind_n_yy), 3);if ((touchPadP.isTouched())) {mind_n_lb = 1;}if ((touchPadY.isTouched())) {mind_n_lb = 2;}if ((touchPadT.isTouched())) {mind_n_lb = 3;}if ((touchPadH.isTouched())) {mind_n_lb = 4;}if ((touchPadO.isTouched())) {mind_n_lb = 5;}if ((touchPadN.isTouched())) {mind_n_lb = 6;}display.setCursor(110, 5);display.print("亮");display.setCursor(110, 20);display.print("度");display.setCursor(110, 35);display.print(mind_n_lb);if ((mind_n_lb==1)) {mind_n_lx = (round(((mind_n_lx + 255) / 2)));mind_n_ly = (round(((mind_n_ly + 255) / 2)));}if ((mind_n_lb==2)) {mind_n_lx = (round(((mind_n_lx + 255) / 4)));mind_n_ly = (round(((mind_n_ly + 255) / 4)));}if ((mind_n_lb==3)) {mind_n_lx = (round(((mind_n_lx + 255) / 6)));mind_n_ly = (round(((mind_n_ly + 255) / 6)));}if ((mind_n_lb==4)) {mind_n_lx = (round(((mind_n_lx + 255) / 8)));mind_n_ly = (round(((mind_n_ly + 255) / 8)));}if ((mind_n_lb==5)) {mind_n_lx = (round(((mind_n_lx + 255) / 10)));mind_n_ly = (round(((mind_n_ly + 255) / 10)));}if ((mind_n_lb==6)) {mind_n_lx = (round(((mind_n_lx + 255) / 12)));mind_n_ly = (round(((mind_n_ly + 255) / 12)));}if ((mind_n_i==0)) {rgb.write(-1, rgbToColor(round(0), round(0), round(0)));}if ((mind_n_i==1)) {rgb.write(-1, rgbToColor(round(mind_n_lx), round(mind_n_ly), round(0)));}if ((mind_n_i==2)) {rgb.write(-1, rgbToColor(round(0), round(mind_n_lx), round(mind_n_ly)));}if ((mind_n_i==3)) {rgb.write(-1, rgbToColor(round(mind_n_ly), round(0), round(mind_n_lx)));}delay(20);
}// 静态函数
uint32_t rgbToColor(uint8_t r, uint8_t g, uint8_t b)
{return (uint32_t)((((uint32_t)r<<16) | ((uint32_t)g<<8)) | (uint32_t)b);
}

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【记录】SMB|Windows下修改SMB端口并挂载

环境&#xff1a;Window11 使用背景&#xff1a;勒索病毒导致445端口不安全&#xff0c;故而该端口在服务器端被全面禁用了&#xff0c;如需使用SMB服务需要换个SMB服务端口。 方法1&#xff1a;端口转发 winx点开管理员权限的终端&#xff1a; 运行以下指令&#xff0c;检查…

数字电路设计——加法器

数字电路设计——加法器 半加器 半加器只有两个一位宽的输入 a a a 和 b b b &#xff0c;输出 a b ab ab 所产生的本位和 s u m sum sum 和进位 c o u t cout cout。组合逻辑为&#xff1a; S A ⊕ B , C o u t A B S A \oplus B,Cout AB SA⊕B,CoutAB 真值表和原…

经典神经网络(7)DenseNet及其在Fashion-MNIST数据集上的应用

经典神经网络(7)DenseNet及其在Fashion-MNIST数据集上的应用 1 DenseNet的简述 DenseNet不是通过更深或者更宽的结构&#xff0c;而是通过特征重用来提升网络的学习能力。 ResNet 的思想是&#xff1a;创建从“靠近输入的层” 到 “靠近输出的层” 的直连。而DenseNet 做得更…

python环境

卸载旧环境 wini 打开应用卸载 删除python解释器和pycharm 删除配置文件夹JetBrains C:\Users\CJC\AppData\Roaming\JetBrains 安装 安装python解释器 安装pycharm 查看或设置该项目的解释器和安装包 快捷键 全局搜索 双击shift 当前文件中搜索 ctrl f 查看函数…

【Linux】基础开发工具——yum篇

目录 &#x1f4d6;Linux下安装软件的三种方案&#x1f4f0;源代码安装&#x1f4f0;rpm安装&#x1f4f0;yum安装 &#x1f4d6;Linux软件包管理器yum&#x1f4f0;rz、sz&#x1f4f0;查看软件包&#x1f4f0;软件安装&#x1f4f0;软件删除 &#x1f4d6;yum源问题&#x1f…

如何查看 当前安装的vue版本

目录 1 实现 1 实现 要查看当前安装的 Vue 版本&#xff0c;可以使用以下方法&#xff1a; 在终端或命令提示符中运行以下命令&#xff1a; vue --version如果你使用的是 Vue CLI 创建的项目&#xff0c;可以在项目的根目录中找到 package.json 文件。在该文件中&#xff0c…

ChatGPT爆火 但生成式AI并非全新产物

以ChatGPT、Midjourney 为代表的 AIGC 产品横空出世&#xff0c;在全球掀起新一轮的 AI 技术变革新浪潮。近二十年来&#xff0c;我们见证了从「机器学习」算法到「深度学习」&#xff0c;再到「基础模型」的发展。随着数据量大规模膨胀&#xff0c;可扩展的算力&#xff0c;再…

机器学习26:《数据准备和特征工程-IV》数据转换

特征工程 是确定哪些特征可能对训练模型有用&#xff0c;然后通过转换日志文件等数据来源中的原始数据来创建这些特征的过程。在本文中&#xff0c;笔者将重点讨论何时以及如何转换数字和分类数据&#xff0c;以及不同方法的权衡。 目录 1.数据转换的原因 1.1 数据兼容性的强…

PPT文件,使用python删除链接

文章目录 一、需求二、处理方式三、代码实现 一、需求 如下图所示&#xff0c;将PPT文件中的链接进行删除&#xff0c;且不保留链接名。 原始文件&#xff1a; 处理后文件&#xff1a; 二、处理方式 使用python 的pptx模块进行处理&#xff0c;读取文字块&#xff0c;然后…

部署LVS+Keepalived高可用集群

目录 一、keepalived概述 1.1管理LVS负载均衡软件 1.2VRRP(Virtual Router Redundancy Protocol) 原理 二、keepalived服务的重要功能 2.1自动切换&#xff08;failover&#xff09; 2.2健康检查&#xff08;health checking&#xff09; 2.3高可用&#xff08;HA&#x…

决策树分析特征重要性可视化无监督特征筛选

from sklearn.tree import DecisionTreeClassifierdtc DecisionTreeClassifier() # 初始化 dtc.fit(x_train, y_train) # 训练# 获取特征权重值 weights dtc.feature_importances_ print(>>>特征权重值\n, weights)# 索引降序排列 sort_index np.argsort(weights…

idea goland 插件 struct to struct

go-struct-to-struct idea goland 插件。实现自动生成 struct 间 转换代码。 https://plugins.jetbrains.com/plugin/22196-struct-to-struct/ IntelliJ plugin that Automatically generate two struct transformations through function declarations Usage define func …