/* USER CODE BEGIN 1 */ float temp = 0; uint8_t opecode; float setpoint = 70.0; float Kp = 1.0; float Kd = 0.1; float output = 0.0; float sum_error = 0.0; float sum_previous_error = 0.0; float outcome_error = 0.0; float previous_error = 0.0; float now_error = 0.0; /* USER CODE END 1 */ float error = setpoint - temp; sum_error += error; sum_previous_error += previous_error; outcome_error = sum_error - sum_previous_error; now_error = error - previous_error; output = Kp * error+Kd*outcome_error; if (output > 100) output = 100; else if (output < 0) output = 0; previous_error = error; __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, (uint32_t)output); HAL_Delay(20); 目前的问题是,光照强度在65到70,led的亮度会变化。但在其他的光照强度,led的亮度不会有任何的变化,请你为我解决这一个问题。
时间: 2024-04-08 18:32:44 浏览: 20
根据你提供的代码,我注意到你使用了一个简单的比例-微分控制器(PID)来控制LED的亮度。根据你的描述,LED只有在光照强度在65到70之间时才会有变化,这可能是因为你的代码逻辑存在一些问题。
在你的代码中,你只在光照强度在指定范围内时更新LED的亮度。这意味着当光照强度不在该范围内时,output的值不会被更新,LED的亮度也就不会改变。
为了解决这个问题,你可以调整代码逻辑,使得无论光照强度如何,都能够更新LED的亮度。你可以尝试将LED的亮度控制逻辑放在一个循环中,这样即使光照强度不在指定范围内,也能够持续更新LED的亮度。
另外,你还可以检查一下光照强度的读取是否正确,并确保它的值在正确的范围内。如果光照强度的读取有问题,那么即使控制逻辑是正确的,LED的亮度也不会有变化。
希望这些建议能够帮助你解决问题!如果还有其他疑问,请随时提问。
相关问题
可以用uint8_t a=(uint8_t)float b吗
C语言中有多种数据类型,包括整型、浮点型、字符型等。常见的整型数据类型有:int、short、long、char等。浮点型数据类型有:float、double等。字符型数据类型有:char。
在C语言中,可以使用typedef关键字来为已有的数据类型创建别名。例如,可以使用typedef为unsigned short int创建别名uint16_t,为unsigned int创建别名uint32_t。
对于你的问题,可以使用uint8_t来定义一个8位无符号整型变量a,然后将一个浮点数b强制转换为uint8_t类型并赋值给a。但需要注意的是,浮点数转换为整型时会丢失小数部分,只保留整数部分。
```c
#include <stdint.h>
int main() {
float b = 3.14;
uint8_t a = (uint8_t)b;
// 输出:a = 3
return 0;
}
```
* 输入捕获标志 */uint16_t end_flag = 0; /* 捕获结束标志 */float frequency = 0; /* 频率 */
这段代码是C语言中的变量定义,其中`end_flag`和`frequency`分别声明了整型变量和浮点型变量,而`uint16_t`是C语言中的一种数据类型,在这里表示无符号16位整型数。代码中的注释解释了每个变量的作用,同时还有一个未赋值的`end_flag`变量。
该段代码未包含输入捕获标志相关的代码,如果您需要相关代码,可以提供更多上下文或相关代码供我参考。
相关推荐
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)