概述
目录
文章介绍
核心代码部分
总体代码部分
文章介绍
当时想到的一个还算有点儿意思的功能,如果是个人DIY的话感觉还算是比较炫的效果。关键是如何实现随机,每次几个灯随机颜色不能重复,存在重复就实际亮的灯数就不够了,我认为这是最核心的部分。
当时对动态内存分配有点儿兴趣,因为咱没用过。就在代码中添加这部分功能,可使用静态数组,也可选择动态内存分配。
但后来了解到动态内存需要有动态内存管理算法的配合使用,电脑上是有的,但单片机上就很可能没有了,动态内存管理需要自己实现,比如我前段时间写的:链栈的应用---内存池
我认为核心部分的代码,是我在网上看到的,不知道这算不算一种惰性,有一种想法先去网上搜搜资料,有现成的直接用或者稍微改改再用。我给自己的安慰:并不是目标重要还是什么重要,我的想法实现就是我的目标,如果时间太长估计自己都不想搞下去了,除非我有坚韧不拔的毅力。
核心代码部分
/**
* find
* @brief 与数组a中的前size个数进行比较,若有与key相同的,则返回0,若没有则返回1
* @param a 数组元素首地址
* @param size 数组元素个数
* @param key 查找对比项
*/
uint8_t
find(uint8_t *a,uint8_t size, int key)
{
for(uint8_t i=0; i < size; i++)
{
if(a[i] == key)
{
return 0;
}
}
return 1;
}
/**
* get_random_num_mutexes
* @brief 得到num个互不相同的数,覆盖掉数组中原有的数值
* @param array 数组元素首地址
* @num num 数组元素个数
* @param limit_val 随机数限制范围
* @example 要得到42之内的6个随机数,写入到数组random_array
* @example get_random_num_mutexes(random_array, 6, 42)
*/
void
get_random_num_mutexes(uint8_t *array,uint8_t num, uint8_t limit_val)
{
uint8_t random_val;
for(uint8_t i = 0; i < num; i++)
{
random_val = rand() % limit_val;
while(! find(array, i + 1, random_val))
{
random_val = rand() % limit_val;
}
array[i] =
最后
以上就是能干自行车为你收集整理的6个RGB灯随机颜色---C代码实现的全部内容,希望文章能够帮你解决6个RGB灯随机颜色---C代码实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复