python控制树莓派风扇_gpio控制风扇转速 pwm方案

AI助手已提取文章相关产品:

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

#最新的保持温度恒定的代码,把——改成空格或者\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()

您可能感兴趣的与本文相关内容

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值