Python写GPIO值
我是一个彻头彻尾的傻瓜,使用树莓皮试着制作一个程序,用GPIO 4上设置的PIR传感器跟踪运动实例,现在这个程序可以毫无问题地工作,直到我尝试导出数据,长话短说,我尝试gspread和ubidots,但这两个程序都无法工作,即使只是使用一个测试文件。因此,我的下一个尝试是一个简单的txt文件,它将捕获时间和日期,并将编写一个1 这就是我所拥有的:Python写GPIO值,python,Python,我是一个彻头彻尾的傻瓜,使用树莓皮试着制作一个程序,用GPIO 4上设置的PIR传感器跟踪运动实例,现在这个程序可以毫无问题地工作,直到我尝试导出数据,长话短说,我尝试gspread和ubidots,但这两个程序都无法工作,即使只是使用一个测试文件。因此,我的下一个尝试是一个简单的txt文件,它将捕获时间和日期,并将编写一个1 这就是我所拥有的: import time import datetime import RPi.GPIO as GPIO sensor = 4 GPIO.setm
import time
import datetime
import RPi.GPIO as GPIO
sensor = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(sensor, GPIO.IN, GPIO.PUD_DOWN)
prevstate = False
currState = False
while True:
time.sleep(0.1)
prevState = currState
currState = GPIO.input(sensor)
if currState != prevState:
newState = "1" if currState else "0"
print("GPIO pin %s is %s" % (sensor, newState))
try:
values = [datetime.datetime.now(), newState]
with open("test.txt", "a") as text_file:
text_file.write("values")
time.sleep(1.5)
所以我现在真的不知道为什么,但是在我点击value部分之前,一切都正常,然后我得到一个unindent错误,如果我从try down中删除,我什么也得不到
我以前有过:
except:
print: "cannot open file"
但那真的不是什么问题。unindent仍然出现。您必须始终在try语句后面加上except或finally语句,但是您提到try语句也有错误?这是否也包括:打印后(不应该)?这应该起作用:
try:
values = [datetime.datetime.now(), newState]
with open("test.txt", "a") as text_file:
text_file.write(values)
except:
print: "cannot open file"
请注意,我还删除了text_file.write(values)中围绕值的引号。您有缩进问题。看起来您开始允许Idle使用tab-8进行缩进,然后切换到4。您需要取消缩进并重新缩进所有内容 您处理文件的方式是,每次通过时都会覆盖它。文件中只有一个条目。尝试在主循环之前打开文件:
import time
import datetime
import RPi.GPIO as GPIO
sensor = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(sensor, GPIO.IN, GPIO.PUD_DOWN)
prevstate = False
currState = False
with open("test.txt", "a") as text_file:
while True:
time.sleep(0.1)
prevState = currState
currState = GPIO.input(sensor)
if currState != prevState:
newState = "1" if currState else "0"
print("GPIO pin %s is %s" % (sensor, newState))
try:
values = [datetime.datetime.now(), newState]
text_file.write("values")
except:
print "cannot open file"
去掉冒号“:“打印后,主循环后的睡眠没有任何作用。这真的没什么作用:添加except语句只是在那一行出现语法错误,表示制表符和缩进的使用不一致:
try:values=[datetime.datetime.now(),newState]打开(“test.txt”,“a”)作为文本文件:文本文件。写入(值)除了:打印:“无法打开文件”时间。睡眠(1.5)
删除行前的所有制表符和空格,并缩进,使其看起来与上面相同,这是由于缩进时制表符和普通空格的混合。此代码现在可以工作,正如您得到所有适当的响应一样,`try:values=“[datetime.datetime.now(),new_state]”打开(“test.txt”,“a”)作为text_file:text_file.write(values),唯一的问题是它只会写入[datetime.datetime.now(),new_state],因此无法从datetime导入……有什么想法吗?