RGB红绿灯——Arduino

news2024/9/21 23:43:26

光的三原色

        牛顿发现光的色散奥秘之后,进一步计算发现:七种色光中只有红、绿、蓝三种色光无法被分解,而其他四种颜色的光均可由这三种色光以不同比例相合而成。于是红、绿、蓝被称为“三原色光”或“光的三原色”。后经证实:红、绿、蓝这三种颜色的组合,几乎能形成所有的颜色。

        组合   红+绿=黄;   绿+蓝=青;   红+蓝=品红;   红+绿+蓝=白

RGB彩灯

RGB彩灯内部原理

                  共阳极                                                     共阴极

              

共阴极彩灯电路接线

RGB红绿灯

功能需求:红灯亮7秒,绿灯亮7秒,黄灯闪烁3秒(闪烁间隔为500毫秒)。

void setup(){

}

void loop(){
  analogWrite(9,255);
  analogWrite(10,0);
  analogWrite(11,0);
  delay(7000);
  analogWrite(9,0);
  analogWrite(10,255);
  analogWrite(11,0);
  delay(7000);
  for (int i = 1; i <= 3; i = i + (1)) {
    analogWrite(9,255);
    analogWrite(10,255);
    analogWrite(11,0);
    delay(500);
    analogWrite(9,0);
    analogWrite(10,0);
    analogWrite(11,0);
    delay(500);
  }

}

用3个电位器,对RGB彩灯进行调色。

volatile int dwq1;
volatile int dwq2;
volatile int dwq3;

void setup(){
  dwq1 = 0;
  dwq2 = 0;
  dwq3 = 0;
}

void loop(){
  dwq1 = (map(analogRead(A1), 0, 1023, 0, 255));
  dwq2 = (map(analogRead(A2), 0, 1023, 0, 255));
  dwq3 = (map(analogRead(A3), 0, 1023, 0, 255));
  analogWrite(9,dwq1);
  analogWrite(10,dwq2);
  analogWrite(11,dwq3);

}

        这段代码是一个基于Arduino的简单示例,用于实时处理来自三个ADC输入(A1, A2, A3)的模拟信号,并将其转换为0到255范围内的数字值,再通过PWM控制RGB三色LED灯(连接到数字引脚9、10和11)。`volatile`关键字在此处的作用非常重要,因为它确保了在多任务环境中,CPU不会优化对这三个变量(dwq1, dwq2, dwq3)的访问,防止可能出现的数据竞争(data race)问题。

以下是代码逐行解释:

1. `volatile int dwq1;`,`volatile int dwq2;` 和 `volatile int dwq3;`:声明了三个名为`dwq1`、`dwq2`和`dwq3`的整型变量,因为它们存储的是从ADC读取的结果,这些值可能会随着外部输入的变化而随时改变,所以标记为volatile,表示编译器在每次读取时都需要重新检查该变量的值。

2. 在`setup()`函数中:
   - `dwq1 = 0;`:初始化`dwq1`为0,相当于清零准备接收ADC的读数。
   - 同理,`dwq2`和`dwq3`也被初始化为0。
   
3. 在`loop()`函数中:
   - `dwq1 = (map(analogRead(A1), 0, 1023, 0, 255));`: 从ADC引脚A1获取模拟电压值,映射到0到255的整数值。`map()`函数用于线性变换,将原范围的值缩放到目标范围。
   - 类似地,`dwq2`和`dwq3`分别对应A2和A3的ADC读数。
   
4. 最后,通过`analogWrite(9, dwq1);`、`analogWrite(10, dwq2);`和`analogWrite(11, dwq3);`将每个`dwq`变量的值分配给RGB LED的PWM输出,控制LED的颜色强度。

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

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

相关文章

提升C++开发效率的利器:深入解析Clang Power Tools

目录 一、引言 二、Clang Power Tools 简介 什么是 Clang Power Tools&#xff1f; 背景与发展历史 与 Clang 编译器的关系 主要开发团队和社区支持 系统要求 安装步骤 基本配置和使用 三、主要功能 代码格式化&#xff08;Clang-Format&#xff09; 代码质量提升 …

springboot+Loki+Loki4j+Grafana搭建轻量级日志系统

文章目录 前言一、日志组件介绍1.1 Loki组件1.2 Loki4j组件1.3 Grafana 二、组件下载安装运行Loki下载安装运行Grafana下载安装运行 三、创建springboot项目总结 前言 日志在任何一个web应用中都是不可忽视的存在&#xff0c;它已经成为大部分系统的标准组成部分。搭建日志可视…

【大模型】Unsloth安装及使用教程

Unsloth是一个开源的大模型训练加速项目&#xff0c;使用OpenAI的Triton对模型的计算过程进行重写&#xff0c;大幅提升模型的训练速度&#xff0c;降低训练中的显存占用。Unsloth能够保证重写后的模型计算的一致性&#xff0c;实现中不存在近似计算&#xff0c;模型训练的精度…

【Material-UI】Button 组件中的基本按钮详解

文章目录 一、基本按钮变体1. 文本按钮&#xff08;Text Button&#xff09;2. 实心按钮&#xff08;Contained Button&#xff09;3. 轮廓按钮&#xff08;Outlined Button&#xff09; 二、应用场景与注意事项1. 使用场景2. 注意事项 三、总结 Material-UI 的 Button 组件是前…

ShardingProxy使用自定义策略,数据迁移方案

文章目录 ShardingProxy功能扩展分库分表数据迁移方案 ShardingProxy功能扩展 我们在使用ShardingJDBC时&#xff0c;会进行自定义分布式主键生成策略、自定义分片策略 如果我们想要我们自定义的这些策略在ShardingProxy中也能使用&#xff0c;应该如何操作嘞&#xff1f; 我…

使用F1C200S从零制作掌机之I2C传感器

访问I2C设备&#xff08;比如eeprom&#xff09;&#xff0c;我知道的有三总方法&#xff1a; &#xff08;一&#xff09;i2c-dev操作I2C设备&#xff1a;不用添加设备驱动&#xff0c;用户直接在应用层完成对具体I2C 设备的驱动工作。 &#xff08;二&#xff09;sysfs操作…

微信小程序教程011-:2:京西购物商城实战之TabBar实现

2、tabBar 2.0 创建tabBar分支 运行如下命令,基于master分支,创建本地tabBar子分支,用来开发和tabBar相关的功能 git checkout -b tabbar2.1 创建tabBar页面 在pages目录中,创建首页(home)、分类(cate)、购物车(cart)、我的(my)这4个tabBar页面,在HBuilderX中…

【网络世界】数据链路层

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 初识数据链路层 &#x1f4c2; 概念 &#x1f4c2; 协议格式 &#x1f4c1; MAC地址 &#x1f4c2; 概念 &#x1f4c2; 与IP地址的区别 &#x1f4c1; MTU &#x1f4c2; 对IP协议的影响 &#x1f4c2; 对UDP协议的影响…

思维+位运算,CF 1934D1 - XOR Break --- Solo Version

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1934D1 - XOR Break --- Solo Version 二、解题报告 1、思路分析 合法操作会让 n 越变越小 假如最高位1为 b1, 次高位1 为b2 那么我们去掉b1 的 1最大能够得到的数为 &#xff08;1 << b2&#xff…

图像传感器 - 从零开始认识各种传感器【二十六期】

图像传感器|从零开始认识各种传感器 1、什么是图像传感器&#xff1f; 图像传感器是将光信号转换为电信号的设备&#xff0c;图像传感器通过捕捉光子并将其转化为电子信号&#xff0c;从而生成数字图像。它是数码相机、摄像机、智能手机、无人机、自动驾驶汽车以及各种工业和医…

良心推荐!分享6个强大的电脑软件,每一个都非常实用

良心推荐&#xff01;分享6个功能强大的电脑软件&#xff0c;每一个都非常实用&#xff01; 1.Listen1 一个可以免费听音乐的软件&#xff0c;也可以在浏览器上作为插件使用&#xff0c;曲库丰富&#xff0c;里面涵盖了QQ音乐、酷狗音乐、网易云音乐等多个平台的歌单资源&…

【MySQL】索引——索引的实现、B+ vs B、聚簇索引 VS 非聚簇索引、索引操作、创建索引、查询索引、删除索引

文章目录 MySQL5. 索引的实现5.1 B vs B5.2 聚簇索引 VS 非聚簇索引 6. 索引操作6.1 创建主键索引6.2 创建唯一索引6.3 创建普通索引6.4 创建全文索引6.5 查询索引6.6 删除索引 MySQL 5. 索引的实现 因为MySQL和磁盘交互的基本单位为Page&#xff08;页&#xff09;。 MySQL 中…

LTrack:实现夜间多目标追踪,并开放低光多目标追踪数据集LMOT

摘要 低光场景在现实应用中很常见&#xff08;例如&#xff0c;夜间的自动驾驶和监控&#xff09;。最近&#xff0c;多目标跟踪在各种实际用例中受到了很多关注&#xff0c;但黑暗场景中的多目标跟踪却很少被考虑。在本文中&#xff0c;我们专注于黑暗场景中的多目标跟踪。为…

点菜吧——随便点 C#生成套餐

前言 一到食堂发现有多种选择&#xff0c;但是有一个固定的套路&#xff0c;只能是一个荤&#xff0c;二个小荤&#xff0c;菜品数量也不少&#xff0c;任君选择&#xff0c;如果是一个选择困难症&#xff0c;就有点烦了&#xff0c;所以出品这个自动生成套餐软件。各位老板可…

Mysql原理与调优-InnoDB行记录结构

目录 1.绪论 2.InnoDB的记录格式分类 3.compact格式 3.1 基本组成 3.2 记录额外信息 3.2.1 记录额外信息组成 3.2.2 变成字段长度列表 3.2.3 null值列表 3.2.4 记录头信息 3.3 实际记录 3.3.1 溢出页 3.3.2 varchar最多可以储存多少个字符的数据 4.其他记录格式和c…

配置python的基本环境

python的背景知识 python是咋来的&#xff1f; Python 是一种广泛使用的高级编程语言&#xff0c;由 Guido van Rossum 在1989年底发明&#xff0c;第一个公开发行版发行于1991年。Python 的设计哲学强调代码的可读性和简洁的语法&#xff08;尤其是使用空格缩进来区分代码块…

tcpdump使用指南

tcpdump 是一款强大的网络抓包工具&#xff0c;它使用 libpcap 库来抓取网络数据包&#xff0c;这个库在几乎在所有的 Linux/Unix 中都有。 tcpdump src 10.5.2.3 and dst port 3389 # 1. 基于IP地址过滤 # 根据源ip进行过滤 $ tcpdump -i eth2 src 192.168.10.100# 根据目标…

sqli-labs靶场练习(1、5-8关)

自己搭建环境啊喂...http://127.0.0.1/sqli-labs-php7-master/ 第一关 1.单引号判断是否存在注入点 /?id1 2.查询列数 ?id1 order by 3-- ?id1 order by 4-- 由此可判断有3列 3.查询用户名和密码分别在哪列 ?id-1 union select 1,2,3 -- 4.查询数据库名称为security ?…

CC2530组网实验-1

1&#xff0c;ZigBee协议栈 协议是一系列的通信标准&#xff0c;通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式&#xff0c;通俗点来理解就是协议栈是协议和用户之间的一个接口&#xff0c;开发人员通过使用协议栈来使用这个协议的&…

生活一地猫毛,空气还有猫浮毛!宠物空气净化器帮你消除这些烦恼

随着换毛季节的到来&#xff0c;铲屎官们如临大敌&#xff0c;猫咪将它们的毛发洒满每一个角落&#xff0c;仿佛室内下起了毛茸茸的飘雪。对于铲屎官来说&#xff0c;这不仅耗费时间的清理任务&#xff0c;更是一场守护健康的保卫战。为此&#xff0c;采取了许多措施来应对猫咪…