python控制树莓派风扇_gpio控制风扇转速 pwm方案
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#最新的保持温度恒定的代码,把——改成空格或者\t
#
#!/usr/bin/env python
# encoding: utf-8
import RPi.GPIO
import time
import sys
import math
RPi.GPIO.setwarnings(False)
RPi.GPIO.setmode(RPi.GPIO.BCM)
#这里根据自己接法修改
gpio=4
RPi.GPIO.setup(gpio, RPi.GPIO.OUT)
pwm = RPi.GPIO.PWM(gpio, 440)
RPi.GPIO.setwarnings(False)
#风扇能保持旋转的最低速度,需要自己尝试
min_speed=20.0
#希望cpu温度稳定在多少
temperature=39400
##########以下都可以不用修改####################
prv_speed = 0.0
speed_fin=50.0
max_step=3.0
def sigmoid(x):
——x=x/4000.0
——result= 2.0*max_step/(1+math.exp(-x))-max_step
——return result
try:
——pwm.start(0)
——while True:
————tmpFile = open( '/sys/devices/platform/sunxi-i2c.0/i2c-0/0-0034/temp1_input' )
————cpu_temp = int(tmpFile.read())
————tmpFile.close()
————speed_fin=speed_fin+sigmoid(cpu_temp-temperature)
————speed_fin = min( speed_fin, 100.0 )
————speed_fin = max( speed_fin, min_speed-0.5 )
————if speed_fin < min_speed:
——————speed=0
————else:
——————speed=speed_fin
————if prv_speed == 0.0 :
——————if speed!=0.0 :
————————pwm.ChangeDutyCycle(100)
————————time.sleep(0.3)
————————print "start"
————prv_speed = speed
#如果不需要记录当前转速,去掉下面两行
————with open('/tmp/fan.info', 'w') as file:
——————file.write(str(speed))
————#print speed,speed_fin,cpu_temp
————pwm.ChangeDutyCycle(speed)
————time.sleep(2)
except KeyboardInterrupt:
——pass
pwm.stop()
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
