使用Python编码GPIO输入?

使用Python编码GPIO输入?,python,raspberry-pi,gpio,Python,Raspberry Pi,Gpio,这就是我正在做的,我的任务是制作一个与Raspberry PI的GPIO输入反应的显示器,我有我想要的显示器,我需要添加一些其他的东西,但是我在让代码显示显示器的值变化时遇到了困难,我需要+1,-1,对整个公司和网站本身来说,重置为零。同时显示事故发生的日期,我试图通过从当前日期减去或加上天数来实现。如果有人知道如何做到这一点,或者如果我离得不远,我会非常感谢你的帮助。第一次编码,它是粗糙的 现在所发生的一切是初始显示都在那里,但它不会更新 import sys from turtle

这就是我正在做的,我的任务是制作一个与Raspberry PI的GPIO输入反应的显示器,我有我想要的显示器,我需要添加一些其他的东西,但是我在让代码显示显示器的值变化时遇到了困难,我需要+1,-1,对整个公司和网站本身来说,重置为零。同时显示事故发生的日期,我试图通过从当前日期减去或加上天数来实现。如果有人知道如何做到这一点,或者如果我离得不远,我会非常感谢你的帮助。第一次编码,它是粗糙的

现在所发生的一切是初始显示都在那里,但它不会更新

 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