RGB(三色)灯配置常用颜色数据,用法讲解,基于C语言的程序讲解,七彩渐变程序讲解
本人新手,此讲解适合新手朋友,大神不喜勿喷。通过实际测试过的,请放心消化。
1:灯的计数配置如下:
2:七色在模拟PWM程序中的配置,原理:在一个周期中 灯亮的时长 / 周期时长 = 占空比 ,此程序是通过占空比来调节各个灯的亮度,上表的配置参数为三种灯的比例参数,按照此参数配置为最亮。所以在配置橙的灯时,红色灯整个周期都亮,绿色灯只亮周期的一半时长。
七彩渐变是每一种灯由暗变亮,在由亮变暗,然后在切换到另一种灯光的最暗状态继续循环。
代码如下:
/******************************************************************
************************RGB灯使用**********************************
******************************************************************/
bool rgb_over = true; //翻转标志
bool is_qcding = false; //控制灯是否开启
uint8_t rgb_colour = 0; //八种灯色0-7分别对应:白,红,绿,蓝,橙,黄,青,紫
uint8_t duty_num_b = 10; //灯光亮度(0-255)/************脚位说明*****************
LEDR_GPIO 红色灯控制脚位
LEDG_GPIO 绿色灯控制脚位
LEDB_GPIO 蓝色灯控制脚位
*************************************/void _close_all_led(){ //关闭所有灯光 user_gpio_set_value(LEDR_GPIO, LEDRGB_CLOSE); user_gpio_set_value(LEDG_GPIO, LEDRGB_CLOSE); user_gpio_set_value(LEDB_GPIO, LEDRGB_CLOSE);
}//此函数在定时器中断中使用,每隔100us进入一次
void _RGB_timer_shade(){ //七彩渐变函数if(rgb_over){ //暗->亮duty_num_b += 4;if(duty_num_b > 251){rgb_over = false;duty_num_b = 255;}}else{ //亮->暗duty_num_b -= 4;if(duty_num_b < 10){rgb_over = true;duty_num_b = 10;rgb_colour++;if(rgb_colour > 7){rgb_colour = 1;}}}
}//此函数可在定时器中断中使用,也可在循环函数中使用,每隔25us进入一次
void _RGB_timer_handle( ){ //单独开启某种灯色的灯光,灯色由rgb_colour控制static uint8_t count = 0; //计数范围0-255,每隔25us此变量加1uint8_t dutynum = 255; //临时亮度值dutynum = duty_num_b; //亮度赋值if(is_qcding){if(rgb_colour < 8){ //rgb_colour灯色//橙色灯和紫色灯由于单个灯的配置比例不同,所以单独配置if(rgb_colour == 4){ //橙if(count <= dutynum){user_gpio_set_value(LEDR_GPIO,LEDRGB_OPEN); //红的灯配置亮}else{user_gpio_set_value(LEDR_GPIO,LEDRGB_CLOSE);//红的灯配置灭}if(count <= (dutynum/2)){ //绿的灯的亮度为红色灯的一半user_gpio_set_value(LEDG_GPIO,LEDRGB_OPEN);}else{user_gpio_set_value(LEDG_GPIO,LEDRGB_CLOSE);}user_gpio_set_value(LEDB_GPIO,LEDRGB_CLOSE);}else if(rgb_colour == 7){ //紫if(count <= (dutynum/2)){ //红色灯的亮度为蓝色灯的一半user_gpio_set_value(LEDR_GPIO,LEDRGB_OPEN);}else{user_gpio_set_value(LEDR_GPIO,LEDRGB_CLOSE);}if(count <= dutynum){user_gpio_set_value(LEDB_GPIO,LEDRGB_OPEN);}else{user_gpio_set_value(LEDB_GPIO,LEDRGB_CLOSE);}user_gpio_set_value(LEDG_GPIO,LEDRGB_CLOSE);}else{if(count <= dutynum){switch(rgb_colour) {case 0:{ //白user_gpio_set_value(LEDR_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDG_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDB_GPIO,LEDRGB_OPEN);break;}case 1:{ //红user_gpio_set_value(LEDR_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDG_GPIO,LEDRGB_CLOSE);user_gpio_set_value(LEDB_GPIO,LEDRGB_CLOSE);break;}case 2:{ //绿user_gpio_set_value(LEDG_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDR_GPIO,LEDRGB_CLOSE);user_gpio_set_value(LEDB_GPIO,LEDRGB_CLOSE);break; } case 3:{ //蓝user_gpio_set_value(LEDB_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDR_GPIO,LEDRGB_CLOSE);user_gpio_set_value(LEDG_GPIO,LEDRGB_CLOSE);break; } case 5:{ //黄user_gpio_set_value(LEDR_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDG_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDB_GPIO,LEDRGB_CLOSE);break; } case 6:{ //青user_gpio_set_value(LEDG_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDB_GPIO,LEDRGB_OPEN);user_gpio_set_value(LEDR_GPIO,LEDRGB_CLOSE);break; } }}else{_close_all_led(); //关闭所有灯光}}count++;if(count >= 255){ //一个周期结束,配置为0进行下一个周期count = 0; }}else{count = 0;rgb_colour = 0;}}else{_close_all_led(); //关闭所有灯光}
}
看完有帮助的话记得点个赞哈,制作不易啊
RGB(三色)灯配置常用颜色数据,用法讲解,基于C语言的程序讲解,七彩渐变程序讲解相关推荐
- 智能wifi小车-RGB三色LED灯驱动
RGB三色LED灯简介 RGB指的就是三基色光,R=红色,G=绿色,B=蓝色.LED芯片所发出的光一般都是蓝光,都是要通过红 绿 蓝这三种颜色的荧光粉去调颜色的.RGB色彩模式是工业界的一种颜色标准, ...
- Arduino UNO R3开发板+MQ-2烟雾浓度传感器+火焰传感器+舵机+无源蜂鸣器+风扇+步进电机+WIFI模块+RGB三色LED灯+SIM900A所构成的室内安全报警模块
该系统模块主要由Arduino UNO R3开发板+MQ-2烟雾浓度传感器+火焰传感器+舵机+无源蜂鸣器+风扇+步进电机+WIFI模块+RGB三色LED灯+SIM900A所组成,MQ-2烟雾浓度传感器 ...
- photoshop中RGB三色原理及颜色相加相减
From: http://blog1.poco.cn/myBlogDetail-htx-id-5921820-userid-55622677-pri--n-0.xhtml 一.RGB三色原理 在中学的 ...
- RGB三色查询对照表
给大家推荐一个 RGB三色查询对照表 可以根据代码选颜色,也可以根据颜色找代码.很不错哦 http://www.ydyrx.com/rgb.html
- 【算法】三色小球,相邻颜色不同,排列方案(DP)
假设有三种颜色小球,每种颜色各n个,问:相邻颜色不同的情况下,有多少中排列方法? (同色小球没有区别,输出取模998244353) #include <bits/stdc++.h> usi ...
- matlab绘制三维散点图,RGB三色对应xyz轴
一.代码 a=xlsread('C:\Users\hasee\Desktop\纺院 - 副本\江南 OK.xlsx','sheet1'); x1=a(:,7); y1=a(:,8); z1=a(:,9 ...
- rgb三色直方图的绘制
三色和单色是一致的:程序的写法在下一个CSDN 不仅仅是RGB还有HSV图像都会有比较重要的画法:色调,饱和度,亮度 绘制三色直方图还是三种向量的直方图都会有意义: 1.参数准备: int bins= ...
- rgb三色涂色问题--c++
有排成一行的n个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法. #include <i ...
- arima 数据预处理_基于R语言的ARIMA模型
A IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型.ARIMA模型根据原序列是否平稳以及 ...
最新文章
- 第八讲 一阶常系数线性ODE(续)
- HCNA(012-211) 试题解析
- WebServices 基础知识
- matlab 柯西黎曼方程,【判断题】柯西-黎曼方程成立是函数解析的必要条件.
- import pycharm setting_Pycharm不能正常使用的常见问题
- 未能加载文件或程序集System.EnterpriseServices
- vue数据双向绑定,Android-MVP模式详解,附超全教程文档
- 华为全球发布UMTS终端商用新品
- 2019届华为秋招面试
- 电脑白屏或黑屏解决方法
- mel滤波matlab,MFCC(Mel Frequency Cepstral Coefficient)提取过程详解
- python的reportlab用法
- 10的次方 各种集合 需要可以拿去用
- 基于HC-SR04的超声波测距模块
- python 双色球 输出到txt_python3 - 写一个生成双色球号码的一个程序,生成的号码写到文件里面...
- 谷歌是如何高效做AB实验的
- 21款常用修图插件合集打包
- 2021年第3季度中国跨境进口零售电商市场规模为1166.7亿元 退货中心仓模式将降低企业的成本忧虑
- SQL Server 中as语句后加英文,标点符号等内容
- SSR 应用与原 CSR 应用变更同步问题实践