【发布时间】:2017-06-08 18:53:38
【问题描述】:
我有树莓派 3 并尝试创建智能温室模型。如果温度过高,此模型应打开窗口。
我是新人用Python写代码,找了几个例子:1.温度传感器和2.伺服电机旋转。
谁能帮我用伺服电机?例如,如果温度为 20°C,我想将伺服移动到 30°,如果是 21°C,则移动 40° 伺服等等。
我有 Python 代码:
import sys
import Adafruit_DHT
import time
import wiringpi
sensor_args = { '11': Adafruit_DHT.DHT11,
'22': Adafruit_DHT.DHT22,
'2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
sensor = sensor_args[sys.argv[1]]
pin = sys.argv[2]
else:
print('usage: sudo ./Adafruit_DHT.py [11|22|2302] GPIOpin#')
print('example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302
connected to GPIO #4')
sys.exit(1)
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print('Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity))
else:
print('Failed to get reading. Try again!')
sys.exit(1)
temp=temperature
text_file = open("output.txt", "w")
text_file.write("%s" %(temp))
text_file.close()
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode(18,wiringpi.GPIO.PWM_OUTPUT)
wiringpi.pwmSetMode(wiringpi.GPIO.PWM_MODE_MS)
wiringpi.pwmSetClock(192)
wiringpi.pwmSetRange(2000)
delay_period = 0.01
while temp==20.0:
for pulse in range(50,250,1):
wiringpi.pwmWrite(18,50)
time.sleep(delay_period)
for pulse in range(250,50,-1):
wiringpi.pwmWrite(18,pulse)
time.sleep(delay_period)
关于伺服电机的部分我在互联网上找到的示例。我需要将“while”替换为“if”。我自己试过,但转子一直旋转到相同的角度。 谁能帮我处理这小部分代码?
第二个问题,如何在树莓派上的终端“sudo python server.py 11 17”中每 10 分钟自动运行此命令,并且在树莓派打开时自动运行?
感谢您的帮助!
【问题讨论】:
-
您应该尝试编写一些代码,然后发布您完成的内容。如果您要求将 while 循环更改为 if,那么您对编程一无所知。