arduino学习笔记12-调色灯制作
liuian 2024-12-08 16:25 45 浏览
arduino学习笔记12-调色灯制作
牛顿发现了光的色彩奥妙,经过系统观察及研究实验,最终确认:当一束白光通过三棱镜时,它将经过两次折射,其结果是白光被分解为有规律的七种彩色光线。牛顿通过计算,得出了一个结论:七种色光中只有红、绿、蓝三种色光无法被分解,于是也就谈不到合成了。而其他四种色光均可由这三种色光以不同比例相合而成。于是红、绿、蓝则被称为“三原色光”或“色光三原色”。
我们把每种颜色分成256份,从0到255分别代表这种光的光强度。我们把不同光强的光进行混合,这时组合有256*256*256= 16777216种。比如红色(255,0,0),白色(255,255,255)。RGB LED只是简单的把三个颜色的LED灯封装在一个LED中。只要当做三个灯使用就可以了。在Arduino中通过PWM口对三种颜色LED明暗的调节,就能让LED调出任何你想要的颜色。
一、实验现象
串口控制开关灯并调节RGB LED灯的颜色,输入o时开灯,输入c时关灯,当灯是开着时输入r120g130b50时LED输出相应的亮度。
二、实验器材:控制板、RGB LED1个、电阻3个、面包板和杜邦线。
三、实验所用函数及语句
就像if语句,switch...case允许根据不同的条件下,执行不同的动作。特别地,一个switch语句对一个变量的值与case语句中指定的值进行比较。一旦其中某一个case语句发现其值与该变量值匹配。就会运行该case语句下的代码。关键字break是用来中止并跳出switch语句段的。常常用于每个case语句的最后面。如果没有break语句,switch语句将继续执行下面的表达式(“持续下降”)直到遇到break,或者是直接运行到switch语句最后。
【语法】
switch (var) {
case label:
// 语句
break;//不要掉了,否则它将继续往下执行
case label:
// 语句
break;
default:
// 语句
}
四、实验电路
五、编写代码
串行口输入格式:o(open)、c(close)、r120g130b50
int rled=0;//红绿蓝LED输出初始值为0
int gled=0;
int bled=0;
char kg='c';//LED灯开关,c(close)为关灯,o(open)为开灯
void setup() {
// put your setup code here, to run once:
pinMode(11,OUTPUT);//设置端口号模式
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
Serial.begin(9600);//初始串行口通讯
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()>0){
char sta=Serial.read();//读出第一个字符
if (sta=='o' ){ //如果是开灯
ledcmd(cx); //调用函数ledcmd()参数为sta
}else if(sta=='c'){ //如果是关灯
kg='c'; //将开关模式高为c(close)
analogWrite(11,0);//以下为关灯语句
delay(100);
analogWrite(10,0);
delay(100);
analogWrite(9,0);
delay(100);
Serial.flush(); //清除缓存中的数据
}else if(kg=='o'){ //如果灯是开的
ledcmd(cx);
}
}
delay(50);
}
void ledcmd(char cx){//函数ledcmd(),参数cx为字符型
switch(cx){
case 'o': //当输入开灯命令时
kg='o'; //将灯的模式高为o(open)
rled=100;
gled=100;
bled=100;
break;
case 'r': //如果是红色
rled=Serial.parseInt();//读出红色的数值,下同
break;
case 'g':
gled=Serial.parseInt();
break;
case 'b':
bled=Serial.parseInt();
break;
}
analogWrite(11,rled);//输出红色的值
delay(100);
analogWrite(10,gled);
delay(100);
analogWrite(9,bled);
delay(100);
}
相关推荐
-
- 超好看的动态手机壁纸(超好看的动态手机壁纸图片)
-
可以进入【手机i主题--右上角人形图标--壁纸】,设置动态壁纸。其它情况下手机本身不支持将动态图片和视频设置成桌面壁纸和锁屏。您可以尝试使用第三方软件实现。备注:抖音的参考设置方法:【抖音界面-登录抖音账号-找到视频-点击右下角的“分享”按...
-
2025-12-24 12:05 liuian
- chrome安卓版2025最新版本(chrome稳定版 安卓)
-
手机谷歌地球打不开,一直转圈的话,可能是因为你的网络不太稳定,你可以换一个网络googleearth大概1~2年更新一次。用户可以通过googleearth来查看更新时间。将earth放大到一...
- win10精简版msdn(win10精简版是哪个版本)
-
这个问题只能由技术人员或有使用经验的人回答,无法准确回答“哪个好”。因为msdn官网提供的win7精简版,有不同的版本、不同的功能和不同的定制化程度。选择哪个版本、哪个标准或哪种方案,需要根据具体需...
- 笔记本电脑硬盘分区教程图解
-
第一步:进入磁盘管理器。 在笔记本电脑的桌面找到“计算机”图标,然后点击右键,在下拉列表中找到“管理”选项,点击打开,进入到“计算机管理”界面。然后选择左侧列表中的“磁盘管理”选线,点击打开。 ...
- 还原精灵使用方法(还原精灵使用方法视频)
-
还原精灵是一种用于恢复被损坏或删除的文件的工具。使用方法如下:首先,打开还原精灵软件。然后,选择要恢复的文件类型或指定文件路径。接下来,点击“扫描”按钮,软件将开始扫描并列出可恢复的文件。在列表中选择...
- 装系统教程win7用u盘(用u盘win7系统安装教程)
-
首先,需要准备一个容量不小于4GB的U盘,并下载正版的Windows7系统镜像文件。接着,使用专业的U盘制作工具将系统镜像文件写入U盘中,并将U盘插入需要安装系统的电脑中。在开机时按下电脑的启动键,...
- 苹果16突然黑屏关机(苹果11突然黑屏)
-
苹果手机突然黑屏但是没关机的原因:一般情况下,死机黑屏都是软件系统原因造成的,可能是由于你安装的软件内部冲突所导致的。严重的时候还会花屏重启。还有可能就是手机使用时间长,热量散发不及时。只要同时按住关...
- 子网掩码和网关怎么填(子网掩码与网关怎么设置)
-
1、以WIN10系统为例,电脑的ip地址、默认网关以及子网掩码可以通过进入到该电脑的网络连接属性界面进行填写。打开属性界面以后,选择手动。然后输入正确的编码即可(其中的默认网关与路由器IP地址相同)。...
- windows10不激活影响使用吗(win 10不激活有什么影响)
-
windows10不激活能用一般情况下,不激活的确可以正常使用,但是会有一些功能受到限制。具体的限制如下所示:首先,您的屏幕右下角会显示“激活Windows”的水印;其次,您无法在“个性化”下使用任...
-
- pdf转换器免费(pdf转换器在线版)
-
1.可检索内容的PDF(内容可以用鼠标选中的非双层PDF)文件,推荐用下面软件转换:PDFToWordConverter,是一款将AdobePDF文档转换成Word文档的工具软件,它支持文字,图像及其它内容的输出。这款软件可以...
-
2025-12-24 06:55 liuian
- office2013激活工具win11(office2013激活工具toolkit)
-
用专门的激活工具就可以啦。1、待安装完Office2013后,解压并运行“MicrosoftToolkit.exe”程序,在弹出的程序界面中点击“OfficeButton”按钮以便打开“Office破...
- 手机登录126邮箱网页登录入口
-
www.126.com126邮箱拥有3G超大存储空间,支持超大2G附件,采用了创新Ajax技术,同等网络环境下,页面响应时间最高减少90%,垃圾邮件及病毒有效拦截率超过98%和99.8%。126邮箱采...
- 全国中高风险地区最新名单(全国中高风险地区最新名单7.29)
-
浦东新区康桥镇环桥路1488弄小区,黄浦区南京东路街道西藏中路180号高盛商厦5楼,静安区共和新路街道沪太路785号B座501西区天空音乐量贩式KTV,松江区小昆山镇平原街86弄平原新村,虹口区北外滩...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
