本节书摘来自华章出版社《Microduino实战》一 书中的第3章,第3.6节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 RGB彩色LED——彩色的世界

上一节实践了如何控制一个LED,如何控制多个LED呢?
本节会用一个 RGB彩色LED做实验,目的在于练习Arduino编程以及函数的
封装。
1.基本原理
RGB 彩色LED相当于将红色、绿色和蓝色3种LED集成了在一起,分为共阴和共阳两种类型。如图3-28所示是一种共阳的彩色LED,即共阳的引脚要接高电平,而控制端口则是低电平才能点亮LED。通过三路PWM控制3种颜色的亮度,便能合成不同颜色的光。
 

小知识 RGB LED有4个引脚,用最长的一根公用引脚作为标志。排列顺序是这样的:R引脚、公共引脚(最长)、G引脚和B引脚。

程序清单

/*功能描述:
* 通过三路PWM控制彩色LED
*
* 引脚映射:
* D11  --> red引脚
* D5   --> green引脚
* D6   --> blue引脚
* 注意:
* Microduino-Core只有引脚3、5、6、9、10、11才能输出PWM
*/
int redPin = 11;
int greenPin = 5;
int bluePin = 6;/*自定义子函数,将三路PWM的控制集成到同一个函数中,便于控制
*/
void setColor(int red, int green, int blue)
{analogWrite(redPin, 255-red);    //共阳RGB,低电平点亮,用255-redanalogWrite(greenPin, 255-green);    //占空比数值取值为0~255analogWrite(bluePin, 255-blue);
}void setup()
{//设置3个引脚的输出pinMode(redPin, OUTPUT);pinMode(greenPin, OUTPUT);pinMode(bluePin, OUTPUT);
}void loop()
{setColor(255, 0, 0);        // (R,G,B)红色delay(1000);setColor(0, 255, 0);        // 绿色delay(1000);setColor(0, 0, 255);        // 蓝色delay(1000);setColor(255, 255, 0);    // 黄色delay(1000);  setColor(80, 0, 80);        // 紫色delay(1000);setColor(255, 255, 255);    //白 delay(1000);setColor(0, 0, 0);        //熄灭delay(1000);for(int i=0;i<255;i+=5)    //红色渐亮{setColor(i, 0, 0);  delay(30);}delay(100);for(int i=255;i>0;i-=5)    //红色渐灭{setColor(i, 0, 0);  delay(30);}delay(100);for(int i=0;i<255;i+=5)    //蓝色渐亮{setColor(0, i, 0); delay(30); }delay(100);for(int i=255;i>0;i-=5)    //蓝色渐灭{setColor(0, i, 0);  delay(30);}delay(100);for(int i=0;i<255;i+=5)    //绿色渐亮{setColor(0, 0, i);  delay(30);  }delay(100);for(int i=255;i>0;i-=5)    //绿色渐灭{setColor(0, 0, i);  delay(30);}delay(100);
}

程序中可以看到,要控制LED灯的颜色,必须同时控制3个引脚输出的PWM。为了方便编程,将3个引脚的控制封装成一个setColor()函数,传递的参数是对应每个引脚的占空比数值。

  1. 观察现象
    根据提供的连接示意图搭建电路,并与计算机相连。

打开Arduino IDE,输入程序代码,编译并下载,然后观察彩色LED的颜色变化。
可以看到在彩色LED上会出现红、绿、蓝、黄、紫、白等颜色,以及渐明渐暗的效果。

  1. 进一步探索
    请读者思考:除了以上的控制方式,还能做出什么样的灯光秀呢?

《Microduino实战》——3.6 RGB彩色LED——彩色的世界相关推荐

  1. 《Microduino实战》——3.3 点灯——迈入物理世界

    本节书摘来自华章出版社<Microduino实战>一 书中的第3章,第3.3节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.3 点灯 ...

  2. 《Microduino实战》——导读

    前 言 自2005年Arduino横空出世以来,开源硬件就像Linux一样,很快风靡全球.Arduino最初只是为学生设计的一款既便宜又易用的微控制器板,但如今在"创客运动"的大背 ...

  3. APA102C全彩色LED控制IC

    简 介: 测试了APA102C的工作机制.利用MM32F3277 MicroPython中的SPI控制APA102C工作. 关键词: APA102C,MM32F3277,SPI #mermaid-sv ...

  4. Processing控制彩色LED灯

    Processing控制彩色LED灯 公众号:STCode 1-RGB彩色LED模块简介 LED是发光二极管的简称,它是半导体二极管的一种,可以把电能转化成光能.LED灯已经大量进入人们的生活.普通的 ...

  5. 全彩色LED灯带中应用到的LED炫彩灯

    全彩色LED灯带:所谓LED全彩灯带便是指把LED组装在带状的FPC柔性线路板或PCB硬板上,因其产品形状象一条带子而得名.全彩色LED灯带和幻彩跑马灯条都可控制单灯跑马.流水.开窗.流星追尾.追逐等 ...

  6. 《Microduino实战》——2.5 Microduino传感器系列

    本节书摘来自华章出版社<Microduino实战>一 书中的第2章,第2.5节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5 Mi ...

  7. 《Microduino实战》——1.5 如何选择开源硬件

    本节书摘来自华章出版社<Microduino实战>一 书中的第1章,第1.5节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.5 如何 ...

  8. RGB三基色LED实验

    前言 了解RGB三基色LED的原理和使用方法: 认识Arduino开源硬件开发平台中PMW输出控制的方法: 掌握Arduino通过C语言实现电路组建和信号控制的基本方法. 提示:以下是本篇文章正文内容 ...

  9. 《Microduino实战》——第3章 Microduino入门

    本节书摘来自华章出版社<Microduino实战>一 书中的第3章,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第3章 Microdui ...

最新文章

  1. java层 android_Android开发实践:Java层与Jni层的数组传递
  2. bom .dom_MicroProfile 2.2 BOM导入支持
  3. linux 文件系统路径,Linux编程 1 (文件系统路径说明, 目录结构说明)
  4. 现代的 “Hello, World”,可不仅仅是几行代码而已
  5. 查询ubuntu系统版本相关信息
  6. HTML5+CSS3 为图书简介页面添加图像及视频
  7. 用html做简单的日记,学习HTML日记
  8. 微信图片dat转jpg工具(自动区分JPG、PNG、GIF)
  9. 计算机系统盘没用的东西怎么删除,怎样清理电脑c盘无用的东西
  10. c语言中strlen什么作用,strlen函数在c语言中的用法是什么
  11. 想不想修真鸿蒙秘术,想不想修真鸿蒙秘诀怎么得 揭开想不想修真秘诀真面目...
  12. 鸿蒙系统的用途,华为高级副总裁谈鸿蒙系统:主要为工业用途
  13. 快速读论文----CKA----Similarity of Neural Network Representations Revisited
  14. 电大计算机统考大纲,电大计算机专科论文大纲模板范文 电大计算机专科论文提纲怎么写...
  15. Tomcat之——宕机自动重启和每日定时启动tomcat
  16. break和continue语句、循环嵌套
  17. 手机端有没有好用的图片识别文字工具值得推荐?
  18. Redis 实战篇:Geo 算法查找附近的人
  19. 【Hive】Hive入门解析(一)
  20. docker namespaces

热门文章

  1. react学习—ref Hook
  2. unity 动态图集
  3. 海量数据处理方法总结 常见大数据题目汇总
  4. Initialization script...—Android Studio无法运行Java类问题
  5. 新手java练习题100(1-5)
  6. grequests并发之小试牛刀
  7. JSP-简单的练习省略显示长字符串
  8. lseek和文件末尾
  9. 白盒与黑盒测试什么区分
  10. 华中科技大学计算机与网络,华中科技大学计算机通信与网络实验报告-基于NS2的协议分析实验...