使用Python编码GPIO输入?
这就是我正在做的,我的任务是制作一个与Raspberry PI的GPIO输入反应的显示器,我有我想要的显示器,我需要添加一些其他的东西,但是我在让代码显示显示器的值变化时遇到了困难,我需要+1,-1,对整个公司和网站本身来说,重置为零。同时显示事故发生的日期,我试图通过从当前日期减去或加上天数来实现。如果有人知道如何做到这一点,或者如果我离得不远,我会非常感谢你的帮助。第一次编码,它是粗糙的 现在所发生的一切是初始显示都在那里,但它不会更新使用Python编码GPIO输入?,python,raspberry-pi,gpio,Python,Raspberry Pi,Gpio,这就是我正在做的,我的任务是制作一个与Raspberry PI的GPIO输入反应的显示器,我有我想要的显示器,我需要添加一些其他的东西,但是我在让代码显示显示器的值变化时遇到了困难,我需要+1,-1,对整个公司和网站本身来说,重置为零。同时显示事故发生的日期,我试图通过从当前日期减去或加上天数来实现。如果有人知道如何做到这一点,或者如果我离得不远,我会非常感谢你的帮助。第一次编码,它是粗糙的 现在所发生的一切是初始显示都在那里,但它不会更新 import sys from turtle
import sys
from turtle import *
import turtle
"""turtle.setup()"""
import time
from time import sleep
import math
import RPi.GPIO as GPIO
import datetime
#CREATE TWO SQUARES
def drawrectangle(x=0,y=0,width=10,height=10,color="white"):
turtle.speed(10)
turtle.pensize(10)
turtle.color(color)
turtle.begin_fill()
turtle.penup()
turtle.goto(x+width/2,y+height/2)
turtle.pendown()
turtle.right(90)
turtle.forward(height)
turtle.right(90)
turtle.forward(width)
turtle.right(90)
turtle.forward(height)
turtle.right(90)
turtle.forward(width)
turtle.end_fill()
#drawrectangle(x=-320,y=0,width=600,height=475)
#drawrectangle(x=320,y=0,width=600,height=475)
def writeTexts(s,x,y,color="white"):
turtle.speed(10)
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
turtle.write(s,font=("Arial",15,"bold"))
def displayInfo(companyIncidentDate,siteIncidentDate,currentDate):
#calculates the current number of days for the company and site based on the respective dates
#Redraws the filled rectangles to erase old text,then writes the new values
companySafeDays=abs(currentDate - companyIncidentDate).days
siteSafeDays=abs(currentDate - siteIncidentDate).days
currentDate=today
drawrectangle(-100,-200,90,40,"red") #company date
turtle.color("black")
writeTexts(companyIncidentDate ,-150,-215)
drawrectangle(550,-200,90,40,"red") #site date
turtle.color("black")
writeTexts(siteIncidentDate, 500,-215)
drawrectangle(-370,70,90,40,"blue") #company days
turtle.color("orange")
writeTexts(companySafeDays, -350,50)
drawrectangle(280,70,90,40,"blue") #site days
turtle.color("orange")
writeTexts(siteSafeDays, 300,50)
drawrectangle(550,-300,90,40,"red")#curret date
turtle.color("black")
writeTexts(currentDate, 500,-310)
#setup the turtle and screenMaximie the screen, hide the turtle, and make it animate as fast as possible
turtle.speed("fastest")
turtle.hideturtle()
turtle.setup(1.,1.)
turtle.title("Alstom Safty Sign")
drawrectangle(-320,0,600,475,"green") #Company Block
drawrectangle(320,0,600,475,"green") #Site Block
turtle.color("white")
writeTexts("Alstom: TLS North America",-450,150)
writeTexts("Has Worked",-385,105)
writeTexts("Days",-305,60)
writeTexts("Since Our Last",-395,15)
writeTexts("Lost Time",-370,-30)
writeTexts("Accident",-365,-75)
writeTexts("This Site",280,150)
writeTexts("Has Worked",265,105)
writeTexts("Days",345,60)
writeTexts("Since Our Last",255,15)
writeTexts("Lost Time",280,-30)
writeTexts("Accident",285,-75)
writeTexts("Last Incident",-275,-215)
writeTexts("Last Incident",375,-215)
turtle.color("green")
writeTexts("Accidents Are Avoidable",-410,-280)
writeTexts("Accidents Are Avoidable",235,265)
turtle.color("red")
writeTexts("Zero",-410,260)
writeTexts("Zero",250,-280)
turtle.color("blue")
writeTexts("Deviation",-360,260)
writeTexts("Deviation",300,-280)
diference1=datetime.timedelta(days=-1)
today=datetime.date.today()
companyIncidentDate=today
siteIncidentDate=today
siteIncidentDate=today
def writeTexts(s,x,y):
turtle.speed(10)
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
turtle.write(s,font=("Arial",15,"bold"))
turtle.pencolor("black")
company = today
site = today
startValue= 0000
writeTexts (today ,500,-310)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN)
GPIO.setup(18, GPIO.IN)
GPIO.setup(27, GPIO.IN)
GPIO.setup(22, GPIO.IN)
GPIO.setup(23, GPIO.IN)
GPIO.setup(24, GPIO.IN)
#display the initial data
displayInfo(companyIncidentDate,siteIncidentDate,today)
while True:
diference1=datetime.timedelta(days=-1)
today=datetime.date.today()
companyIncidentDate=today
siteIncidentDate=today
updateDisplay= False
if today < datetime.date(1,1,1): #date has changed
today=datetime.date.today #date has changed
updateDisplay= true
try:
if(GPIO.input(17)==1): #decrease company last incident date
companyIncidentDate +=diference1
updateDisplay =True
if(GPIO.input(18)==1): #increase company last incident date
companyIncidentDate -=diference1
updateDisplay =True
if(GPIO.input(27)==1):#company reset
companyIncidentDate=today
updateDisplay =True
if(GPIO.input(22)==1): #decrease site last incident date
siteIncidentDate +=diference1
updateDisplay =True
if(GPIO.input(23)==1): #increase site last incident date
siteIncidentDate -=diference1
updateDisplay =True
if(GPIO.input(24)==1): #site reset
siteIncidentDate =today
updateDisplay =True
except KeyboardInterrupt:
exit()
if updateDisplay:
#diplayInfo(companyIncidentDate,SiteIncidentDate,today)
time.sleep(.01)
导入系统
从海龟进口*
进口海龟
“”“turtle.setup()”“”
导入时间
从时间上导入睡眠
输入数学
将RPi.GPIO导入为GPIO
导入日期时间
#创建两个正方形
def drawrectangle(x=0,y=0,宽度=10,高度=10,颜色=“白色”):
乌龟。速度(10)
海龟。养老金(10)
海龟。颜色(颜色)
乌龟,开始填充
乌龟
海龟。后坐(x+宽度/2,y+高度/2)
乌龟
乌龟,对(90)
乌龟。向前(高度)
乌龟,对(90)
乌龟。向前(宽度)
乌龟,对(90)
乌龟。向前(高度)
乌龟,对(90)
乌龟。向前(宽度)
乌龟
#绘图矩形(x=-320,y=0,宽度=600,高度=475)
#绘图矩形(x=320,y=0,宽度=600,高度=475)
def writeTexts(s,x,y,color=“白色”):
乌龟。速度(10)
乌龟
乌龟。后藤(x,y)
乌龟
turtle.write(s,字体=(“Arial”,15,“粗体”))
def displayInfo(公司偶发日期、站点偶发日期、当前日期):
#根据各自的日期计算公司和现场的当前天数
#重新绘制填充的矩形以删除旧文本,然后写入新值
companySafeDays=abs(当前日期-公司偶然日期)。天
siteSafeDays=abs(当前日期-siteIncidentDate)。天
当前日期=今天
图纸矩形(-100,-200,90,40,“红色”)#公司日期
乌龟。颜色(“黑色”)
WriteText(companyIncidentDate,-150,-215)
图纸矩形(550,-200,90,40,“红色”)#现场日期
乌龟。颜色(“黑色”)
WriteText(siteIncidentDate,500,-215)
提款矩形(-370,70,90,40,“蓝色”)#公司日
乌龟。颜色(“橙色”)
WriteText(公司天数,-350,50)
图纸矩形(280,70,90,40,“蓝色”)#现场天数
乌龟。颜色(“橙色”)
WriteText(siteSafeDays,300,50)
绘图矩形(550,-300,90,40,“红色”)#当前日期
乌龟。颜色(“黑色”)
WriteText(当前日期,500,-310)
#设置海龟和屏幕最大化屏幕,隐藏海龟,并使其尽可能快地设置动画
乌龟。速度(“最快”)
乌龟
海龟。设置(1,1.)
标题(“阿尔斯通安全标志”)
drawrectangle(-320,0600475,“绿色”)#公司大楼
drawrectangle(320,0600475,“绿色”)#现场块
乌龟。颜色(“白色”)
WriteText(“阿尔斯通:北美TLS”—450150)
WriteText(“已工作”,-385105)
WriteText(“天”、-305,60)
WriteText(“自上次以来”,-395,15)
WriteText(“丢失的时间”、-370、-30)
WriteText(“事故”、-365、-75)
WriteText(“本网站”,280150)
WriteText(“已生效”,265105)
书面文本(“天”,345,60)
WriteText(“自上次”,255,15)
WriteText(“失去的时间”,280,-30)
WriteText(“事故”,285,-75)
WriteText(“上次事件”、-275、-215)
WriteText(“上次事件”,375,-215)
海龟。颜色(“绿色”)
WriteText(“事故是可以避免的”,-410,-280)
WriteText(“事故是可以避免的”,235265)
海龟。颜色(“红色”)
writeTexts(“零”,-410260)
WriteText(“零”,250,-280)
乌龟。颜色(“蓝色”)
WriteText(“偏差”,-360260)
WriteText(“偏差”,300,-280)
diference1=datetime.timedelta(天=-1)
今天=datetime.date.today()
companyIncidentDate=今天
siteIncidentDate=今天
siteIncidentDate=今天
def写文本(s、x、y):
乌龟。速度(10)
乌龟
乌龟。后藤(x,y)
乌龟
turtle.write(s,字体=(“Arial”,15,“粗体”))
乌龟。铅笔色(“黑色”)
公司=今天
site=今天
startValue=0000
WriteText(今天,500,-310)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.IN)
GPIO.setup(18,GPIO.IN)
GPIO.setup(27,GPIO.IN)
GPIO.setup(22,GPIO.IN)
GPIO.setup(23,GPIO.IN)
GPIO.setup(24,GPIO.IN)
#显示初始数据
显示信息(公司事故日期、地点事故日期、今天)
尽管如此:
diference1=datetime.timedelta(天=-1)
今天=datetime.date.today()
companyIncidentDate=今天
siteIncidentDate=今天
updateDisplay=False
如果今天In [20]: print datetime.date.today
<built-in method today of type object at 0x7f58c56bed40>
In [21]: print datetime.date.today()
2014-07-15