600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 树莓派pwm调速c语言 树莓派智能温控风扇(PWM控制风扇转速)

树莓派pwm调速c语言 树莓派智能温控风扇(PWM控制风扇转速)

时间:2019-01-21 06:58:50

相关推荐

树莓派pwm调速c语言 树莓派智能温控风扇(PWM控制风扇转速)

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

接下来就是上代码的时候了(C语言)

/*

* main.c

*

* Created on: 7月24日

* 说明:程序使用的事wiringPi。PWM接口为8

* Author: cheetah

*/

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define _FANPIN 8

#define MAX_SIZE 32

#define TEMP_PATH "/sys/class/thermal/thermal_zone0/temp"

int initWiringPi();

float getCpuTemp();

void dieError(char *errors);

int main(void)

{

//初始化

if (initWiringPi() < 0)

{

return -1;

}

printf("[ OK ]Start geeiot smart fan controler.\n");

while (1)

{

//获取CPU温度 浮点数据

float temp = getCpuTemp();

//printf("CPU tempreture is %0.2f\n", temp);

//如果小于0,说明获取失败,设置50%电压

if (temp < 0)

{

softPwmWrite(_FANPIN, 50);

}

else if (temp < 30)

{

softPwmWrite(_FANPIN, 0);

}

else if (temp > 30 && temp < 40)

{

softPwmWrite(_FANPIN, 30);

}

else if (temp > 40 && temp < 50)

{

softPwmWrite(_FANPIN, 40);

}

else if (temp > 50 && temp < 60)

{

softPwmWrite(_FANPIN, 50);

}

else

{

softPwmWrite(_FANPIN, 80);

}

delay(1000);

}

return 0;

}

/*

* 初始化wiringPi

*/

int initWiringPi()

{

if (wiringPiSetup() != 0)

{

dieError("WiringPi setup failed!");

return -1;

}

if (softPwmCreate(_FANPIN, 0, 100) != 0)

{

dieError("GPIO soft pwm setup failed!");

return -2;

}

return 0;

}

/*

* 获取树莓派CPU温度

*/

float getCpuTemp()

{

int fd;

float temp = 0;

char buf[MAX_SIZE];

// 打开/sys/class/thermal/thermal_zone0/temp

fd = open(TEMP_PATH, O_RDONLY);

if (fd < 0)

{

dieError("Failed to open thermal_zone0/temp");

return -1;

}

// 读取内容

if (read(fd, buf, MAX_SIZE) < 0)

{

dieError("Failed to read temp\n");

return -1;

}

// 转换为浮点数打印

temp = atoi(buf) / 1000.0;

return temp;

}

/*

* 输出错误信息

*/

void dieError(char *errors)

{

if (strlen(errors) <= 0)

{

return;

}

else

{

printf("[ FAILED ]%s\n", errors);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。