该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#最新的保持温度恒定的代码,把——改成空格或者\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()