/*
这是一个RGB LED照明盾库的功能解释。以下是每个函数的简单解释:
### 构造函数 `RGBShield::RGBShield(I2CPAL *i2c)`
* 初始化RGBShield类的一个对象,需要一个I2C接口的指针作为参数。
### 析构函数 `RGBShield::~RGBShield()`
* 销毁RGBShield类的对象,释放资源。
### `Error_t RGBShield::init()`
* 初始化RGB盾,包括初始化I2C实例和设置盾的状态。
### `Error_t RGBShield::deinit()`
* 反初始化RGB盾,包括释放I2C实例和设置盾的状态。
### `Error_t RGBShield::setIntensityRGB(uint16_t red, uint16_t green, uint16_t blue)`
* 设置红、绿、蓝三个通道的强度。参数是12位的值,范围从0x000到0xFFF。
### `Error_t RGBShield::setIntensityRed(uint16_t red)`
* 仅设置红色通道的强度。
### `Error_t RGBShield::setIntensityGreen(uint16_t green)`
* 仅设置绿色通道的强度。
### `Error_t RGBShield::setIntensityBlue(uint16_t blue)`
* 仅设置蓝色通道的强度。
### `Error_t RGBShield::setDimmingLevel(uint16_t level)`
* 设置整个盾的亮度级别。值越小,LED亮度越低;值越大,LED亮度越高。
### `Error_t RGBShield::setOffTimesRGB(uint16_t red, uint16_t green, uint16_t blue)`
* 设置红、绿、蓝三个通道的关闭时间。这影响了通道上的电流脉动,应根据使用的LED进行调整。
### `Error_t RGBShield::setCurrentRGB(uint16_t red, uint16_t green, uint16_t blue)`
* 设置红、绿、蓝三个通道的峰值电流。这限制了通过LED的电流。如果任何一个通道超过设定的限制,该通道将关闭。
### `Error_t RGBShield::setFadeRate(uint16_t fRate)`
* 设置整个盾的淡入淡出速率。
### `Error_t RGBShield::setWalkTime(uint16_t wTime)`
* 设置线性走时间的长度。用于平滑改变颜色强度。
### `Error_t RGBShield::saveParameters()`
* 保存当前参数到盾的闪存中。如果希望保留当前设置,可以调用此函数。
### `Error_t RGBShield::setColor(uint16_t color)`
* 设置一个预定义的颜色。可用的颜色在"colors_t"枚举中定义。例如,WHITE表示白色,RED表示红色等。函数会根据选择的颜色设置红、绿、蓝三个通道的强度。
这些解释应该帮助你理解这个库的功能和使用方法。如果你有更多的问题或者需要关于具体实现细节的更多信息,欢迎继续提问!
*/
#include "rgb-led-lighting-shield.hpp"
/**
* @brief Constructor of the RGBShield-Class
*
* @details This constructor is used to create an object of the RGBShield class.
* It is getting a class pointer to the I2C-Class which is given to the private IC2-class-pointer.
* It is also initializing the status of the shield to UNINITED, because the board is not yet initialized.
*
* @param[in] *i2c Pointer to a I2C instance
*/
RGBShield::RGBShield(I2CPAL *i2c){
_shieldState = UNINITED;
_boardI2C = i2c;
}
/**
* @brief Destructor of the RGBShield-Class
*
* @details This destructor is used to destruct the object of the RGBShield class.
*/
RGBShield::~RGBShield(){
_shieldState = UNINITED;
_boardI2C = nullptr;
}
/**
* @brief Initialization
*
* @details This function is initializing the I2C instance given in the constructor
* as well as all private membervariables of the class. It is also changing the board
* status to enable, which means the board is ready to operate. Furthermore, the function
* is setting the maximum current ratings for the shield as well as the off-times of the
* channels. It is also setting the brightness of the shield to zero.
*
* @return Error_t
*/
Error_t RGBShield::init(){
Error_t err = OK;
bool valid = false;
int counter = 0;
_boardI2C->init();
_shieldState = INITED;
_shieldState = ENAB;
_redCurr = 0x00;
_greenCurr = 0x00;
_blueCurr = 0x00;
_redOff = 0x00;
_greenOff = 0x00;
_blueOff = 0x00;
_redInt = 0x00;
_greenInt = 0x00;
_blueInt = 0x00;
_fadeTime = 0x00;
_walk = 0x00;
_brightness = 0x00;
while(valid != 1){
uint16_t dataRead = 0x0000;
_boardI2C->writeDMX(ADDRESS, DMXOFF);
_boardI2C->write(ADDRESS, FADERATE, 0x0000);
_boardI2C->write(ADDRESS, DIMMINGLEVEL, 0x0000);
_boardI2C->read(ADDRESS, READ_DIMMINGLEVEL, &dataRead);
if(dataRead == 0){ //Check if the dimming level is set correctly
valid = true;
}
counter++;
if(counter >= 20){
err = TIMEOUT_ERROR;
return err;
}
}
counter = 0;
while (_redCurr != 0x15 || _greenCurr != 0x15 || _blueCurr != 0x15 || _redOff != 0x38 || _greenOff != 0x39 || _blueOff != 0x38 || _brightness != 0)
{
uint16_t lightOff[] = {0x0000, 0x0000, 0x0000};
_boardI2C->write(ADDRESS, INTENSITY_RGB, lightOff, sizeof(lightOff));
_boardI2C->write(ADDRESS, OFFTIME_RED, 0x38);
_boardI2C->write(ADDRESS, OFFTIME_GREEN, 0x39);
_boardI2C->write(ADDRESS, OFFTIME_BLUE, 0x38);
_boardI2C->write(ADDRESS, CURRENT_RED, 0x15);
_boardI2C->write(ADDRESS, CURRENT_GREEN, 0x15);
_boardI2C->write(ADDRESS, CURRENT_BLUE, 0x15);
_boardI2C->write(ADDRESS, DIMMINGLEVEL, 0x0000);
_boardI2C->read(ADDRESS, READ_CURRENT_RED, &_redCurr);
_boardI2C->read(ADDRESS, READ_CURRENT_GREEN, &_greenCurr);
_boardI2C->read(ADDRESS, READ_CURRENT_BLUE, &_blueCurr);
_boardI2C->read(ADDRESS, READ_OFFTIME_RED, &_redOff);
_boardI2C->read(ADDRESS, READ_OFFTIME_GREEN, &_greenOff);
_boardI2C->read(ADDRESS, READ_OFFTIME_BLUE, &_blueOff);
_boardI2C->read(ADDRESS, READ_DIMMINGLEVEL, &_brightness);
counter++;
if(counter >= 20){
err = TIMEOUT_ERROR;
return err;
}
}
return err;
}
/**
* @brief Deinitialization
*
* @details This function deinitializes the IC2 instance given in the constructor.
* It is also setting the shieldstate back to uninitialize.
*
* @return Error_t
*/
Error_t RGBShield::deinit(){
Error_t err = OK;
_boardI2C->deinit();
_shieldState = UNINITED;
return err;
}
/**
* @brief Set intensity of all channels
*
* @details This functions is setting the intensity of the red-, green- and blue-channel.
* You have to pass a 12-bit value for every channel to the function. The maximum value is
* therefore 0xFFF (4095 Dec) for every channel.
*
* @param[in] red Intensity of the red-channel. Range is 0x000 to 0xFFF
* @param[in] green Intensity of the green-channel. Range is 0x000 to 0xFFF
* @param[in] blue Intensity of the blue-channel. Range is 0x000 to 0xFFF
*
* @return Error_t
*/
Error_t RGBShield::setIntensityRGB(uint16_t red, uint16_t green, uint16_t blue){
Error_t err = OK;
uint16_t color[] = {red, green, blue};
_boardI2C->write(ADDRESS, INTENSITY_RGB, color, sizeof(color));
return err;
}
/**
* @brief Set intensity of the red-channel
*
* @details This function is setting the intensity of the red-channel.
* You have to pass a 12-bit value. Therefore, the maximum value is 0xFFF (4095 Dec)
*
* @param[in] red Intensity of the red-channel. Range is 0x000 to 0xFFF.
* @return Error_t
*/
Error_t RGBShield::setIntensityRed(uint16_t red){
Error_t err = OK;
_boardI2C->write(ADDRESS, INTENSITY_RED, red);
return err;
}
/**
* @brief Set intensity of the green-channel
*
* @details This function is setting the intensity of the green-channel.
* You have to pass a 12-bit value. Therefore, the maximum value is 0xFFF (4095 Dec)
*
* @param[in] green Intensity of the green-channel. Range is 0x000 to 0xFFF.
* @return Error_t
*/
没有合适的资源?快使用搜索试试~ 我知道了~
(源码)基于Arduino框架的RGB LED照明盾牌控制库.zip

共667个文件
html:265个
js:111个
png:103个

0 下载量 172 浏览量
2025-03-06
06:10:38
上传
评论
收藏 1.34MB ZIP 举报
温馨提示
# 基于Arduino框架的RGB LED照明盾牌控制库 ## 项目简介 本项目是一个基于Arduino框架的RGB LED照明盾牌控制库,专为XMC 3通道RGB LED照明盾牌设计,支持XMC1302芯片。该项目旨在提供一个简单易用的接口,帮助开发者轻松控制RGB LED照明盾牌,实现各种照明效果。 ## 项目的主要特性和功能 1. 多框架支持 支持Arduino API,方便在Arduino开发环境中使用。 提供详细的文档和示例代码,帮助开发者快速上手。 2. RGB LED控制 支持设置红、绿、蓝三个通道的强度。 支持设置整个盾牌的亮度级别。 支持设置关闭时间和峰值电流。 3. 平台抽象层(PAL) 提供平台抽象层,确保库在不同硬件平台上的兼容性。 提高代码的可移植性,方便在不同设备上使用。 4. 自动化配置
资源推荐
资源详情
资源评论





























收起资源包目录





































































































共 667 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论


Java咖啡师
- 粉丝: 1710
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 加快基层网络电视平移之对策的论文-影视论文.docx
- 加强计算机技术在概率论与数理统计课程中的应用.docx
- 数学计算机学院硕士设计方案答辩海报(一).doc
- 网络会计新理念的建立及实施网络财务风险辨析.docx
- 大数据背景下企业信息安全管理体系的构建研究.docx
- 企业网络视频监控系统解决方案-企业工厂.docx
- 计算机财务管理.ppt
- 网络资源在信息技术教学中的实用性.docx
- 计算环境下的计算机网络系统安全策略分析.docx
- (源码)基于web前端开发技术的个人网站.zip
- 《互联网金融风险专项整治工作实施方案》专业解读.doc
- K1-Power-Linux架构在某政府用户异构数据库整合(Presto)场景下的应用实践.doc
- 辽工大单片机基础知识点考试必备.doc
- 信息化环境下教育传播学与教育技术学的比较研究设想.doc
- 关于计算机网络的安全漏洞与相关防范措施探讨.docx
- 七孔梅花管通信管道施工专业技术方案.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
