# WaveshareFanHAT-Improved **Repository Path**: beanpie/waveshare-fan-hat-improved ## Basic Information - **Project Name**: WaveshareFanHAT-Improved - **Description**: 改进的微雪树莓派Fan HAT控制程序 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-14 - **Last Updated**: 2023-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: Raspberry-pi, FanHAT, waveshare ## README # 改进的微雪树莓派Fan HAT控制程序 ![运行效果](illustration.png) [微雪树莓派Fan HAT wiki](https://www.waveshare.net/wiki/Fan_HAT) [官方示例程序](https://www.waveshare.net/w/upload/0/06/Fan_HAT.7z) ## 改进说明 基于微雪的树莓派Fan HAT的官方示例程序(基于原来的`main.c`),主要改进如下: ### 1 改进了IP地址的获取方式 改进后的程序通过调用ioctl()查询网络接口信息,这种方式比原来的使用管道和系统shell指令的方式效率高。改进后的程序会找第一个处于`UP`和 `RUNNING`状态,并且不是`LOOPBACK`的IPv4接口。 另外,改进后每5秒更新一次IP ### 2 风扇调速部分实现了迟滞(Hysteresis)特性 原来的程序通过获取的CPU温度所处的范围区间设置对应的风扇PWM占空比值。当温度在两个区间之间的分界处跳动时,会导致PWM值也频繁变化。改进的程序在这一部分实现了迟滞特性,具体体现如下: - 当温度上升时,如果当前温度 > 区间起始温度 + 阈值,则将PWM占空比设置为该区间对应的值,新区间要大于当前区间,如果条件不满足,则维持不变 - 当温度下降时,如果当前温度 < 区间起始温度 - 阈值,则将PWM占空比设置为该区间对应的值,新区间要小于当前区间,如果条件不满足,则维持不变 你可以通过改变全局变量`temp_threshold`的值来改变阈值,也可以改变`temp_range`和`PWM_value`中的值来改变温度区间和对应的PWM值 ## 使用方法 下载官方的示例程序,将其中的`main.c`替换为这个项目里的 `main.c`,然后按官方文档里的方法编译运行。