Kann das an meinem Script liegen?
Vielen Dank für jede Hilfe!
Code: Alles auswählen
import pygame, sys
from pygame.locals import *
import RPi.GPIO as GPIO
import time
GPIO.cleanup()
#Screen Resolution
WIDTH = 1920
HEIGHT = 1080
SEGMENT = WIDTH/4
BALKEN_HEIGHT = 500
#Colors
WHITE=(255,255,255)
black=(60,60,60)
green=(86,155,81)
yellow=(233,180,24)
red=(232,79,45)
blue=(34,159,163)
light_green=(170,204,168)
light_yellow=(255,218,147)
light_red=(245,175,143)
light_blue=(169,205,209)
#Images
image_buttom = pygame.image.load("/home/pi/KEAN_Paris/Balken_unten_Paris.png")
image_top = pygame.image.load('/home/pi/KEAN_Paris/Balken_oben_Paris.png')
clock = pygame.time.Clock()
GPIO.setmode(GPIO.BCM) #Set GPIO pin numbering
#Sensor 1
TRIG4 = 14
ECHO4 = 15
GPIO.setup(TRIG4,GPIO.OUT) #Set pin as GPIO out
GPIO.setup(ECHO4,GPIO.IN) #Set pin as GPIO in
seq4 = [] #Array for averaging
#Sensor 2
TRIG3 = 23
ECHO3 = 24
GPIO.setup(TRIG3,GPIO.OUT) #Set pin as GPIO out
GPIO.setup(ECHO3,GPIO.IN) #Set pin as GPIO in
seq3 = [] #Array for averaging
#Sensor 3
TRIG2 = 8
ECHO2 = 7
GPIO.setup(TRIG2,GPIO.OUT) #Set pin as GPIO out
GPIO.setup(ECHO2,GPIO.IN) #Set pin as GPIO in
seq2 = [] #Array for averaging
#Sensor 4
TRIG1 = 20
ECHO1 = 21
GPIO.setup(TRIG1,GPIO.OUT) #Set pin as GPIO out
GPIO.setup(ECHO1,GPIO.IN) #Set pin as GPIO in
seq1 = [] #Array for averaging
#------------------------------------------------------------------------------------
def readSensor(trigger, echo):
if True:
GPIO.output(trigger, False) #Set TRIG as LOW
#print ("Waitng For Sensor To Settle")
#time.sleep(0.1) #Delay of 0.00001 seconds
GPIO.output(trigger, True) #Set TRIG as HIGH
time.sleep(0.00001) #Delay of 0.00001 seconds
GPIO.output(trigger, False) #Set TRIG as LOW
while GPIO.input(echo)==0: #Check whether the ECHO is LOW
pulse_start = time.time() #Saves the last known time of LOW pulse
while GPIO.input(echo)==1: #Check whether the ECHO is HIGH
pulse_end = time.time() #Saves the last known time of HIGH pulse
pulse_duration = pulse_end - pulse_start #Get pulse duration to a variable
DISTANCE = pulse_duration * 17150 #Multiply pulse duration by 17150 to get DISTANCE
DISTANCE = round(DISTANCE, 3) #Round to two decimal points
return DISTANCE
#------------------------------------------------------------------------------------
def averageSensor(array, source):
array.append(source)
while len(array)>16:
del array[0]
average = sum(array) / len(array)
average = round(average, 3) #Round to two decimal points
return average
#------------------------------------------------------------------------------------
def translate(value, leftMin, leftMax, rightMin, rightMax):
# Figure out how 'wide' each range is
leftSpan = leftMax - leftMin
rightSpan = rightMax - rightMin
# Convert the left range into a 0-1 range (float)
valueScaled = float(value - leftMin) / float(leftSpan)
# Convert the 0-1 range into a value in the right range.
return rightMin + (valueScaled * rightSpan)
print ("translate")
#----------------------------------------------------------------------------------
def main():
pygame.init()
pygame.font.init()
pygame.mouse.set_visible(0)
font = pygame.font.SysFont("PibotoCondensed", 120, True)
#frame_rate = 20
#DISPLAY=pygame.display.set_mode((WIDTH,HEIGHT))
DISPLAY=pygame.display.set_mode((0,0), pygame.FULLSCREEN)
while True:
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
keys=pygame.key.get_pressed()
if keys[pygame.K_ESCAPE]:
pygame.quit()
pygame.draw.rect(DISPLAY,light_green,(0,0,WIDTH/4,HEIGHT))
pygame.draw.rect(DISPLAY,light_yellow,(SEGMENT,0,WIDTH/4,HEIGHT))
pygame.draw.rect(DISPLAY,light_red,(SEGMENT*2,0,WIDTH/4,HEIGHT))
pygame.draw.rect(DISPLAY,light_blue,(SEGMENT*3,0,WIDTH/4,HEIGHT))
BALKEN_green = readSensor(TRIG4, ECHO4)
average4 = averageSensor(seq4, BALKEN_green)
#print (average4) #read Sensor max/min values for setup
green_HEIGHT = translate(average4,13,37,HEIGHT-580/214*139,HEIGHT)
BALKEN_yellow = readSensor(TRIG3, ECHO3)
average3 = averageSensor(seq3, BALKEN_yellow)
#print (average3) #read Sensor max/min values for setup
yellow_HEIGHT = translate(average3,6,23.5,HEIGHT-580,HEIGHT)
BALKEN_red = readSensor(TRIG2, ECHO2)
average2 = averageSensor(seq2, BALKEN_red)
#print (average2) #read Sensor max/min values for setup
red_HEIGHT = translate(average2,13,37,HEIGHT-580/214*32,HEIGHT)
BALKEN_blue = readSensor(TRIG1, ECHO1)
average1 = averageSensor(seq1, BALKEN_blue)
#print (average1) #read Sensor max/min values for setup
blue_HEIGHT = translate(average1,18,38,HEIGHT-580/214*38,HEIGHT)
pygame.draw.rect(DISPLAY,green,[0,green_HEIGHT-250,WIDTH/4,HEIGHT],0)
pygame.draw.rect(DISPLAY,yellow,(SEGMENT,yellow_HEIGHT-250,WIDTH/4,HEIGHT))
pygame.draw.rect(DISPLAY,red,[SEGMENT*2,red_HEIGHT-250,WIDTH/4,HEIGHT],0)
pygame.draw.rect(DISPLAY,blue,(SEGMENT*3,blue_HEIGHT-250,WIDTH/4,HEIGHT))
DISPLAY.blit(image_buttom,(0,HEIGHT-250))
DISPLAY.blit(image_top,(0,0))
#green Text
co2value_green = translate(average4,13,37,139,0)
co2value_green = round(co2value_green,)
if co2value_green <= 0:
co2value_green = 0
if co2value_green >= 139:
co2value_green = 139
co2_green = "{0}".format(co2value_green)
text = font.render(co2_green, True, black)
text_rect = text.get_rect(center=(SEGMENT/2, 500))
DISPLAY.blit(text, text_rect)
#yellow Text
co2value_yellow = translate(average3,6,23.5,214,0)
co2value_yellow = round(co2value_yellow,)
if co2value_yellow <= 0:
co2value_yellow = 0
if co2value_yellow >= 214:
co2value_yellow = 214
co2_yellow = "{0}".format(co2value_yellow)
text = font.render(co2_yellow, True, black)
text_rect = text.get_rect(center=(SEGMENT+SEGMENT/2, 500))
DISPLAY.blit(text, text_rect)
#red Text
co2value_red = translate(average2,13,37,32,0)
co2value_red = round(co2value_red,)
if co2value_red <= 0:
co2value_red = 0
if co2value_red >= 32:
co2value_red = 32
co2_red = "{0}".format(co2value_red)
text = font.render(co2_red, True, black)
text_rect = text.get_rect(center=(SEGMENT*2+SEGMENT/2, 500))
DISPLAY.blit(text, text_rect)
#blue Text
co2value_blue = translate(average1,18,38,38,0)
co2value_blue = round(co2value_blue,)
if co2value_blue <= 0:
co2value_blue = 0
if co2value_blue >= 38:
co2value_blue = 38
co2_blue = "{0}".format(co2value_blue)
text = font.render(co2_blue, True, black)
text_rect = text.get_rect(center=(SEGMENT*3+SEGMENT/2, 500))
DISPLAY.blit(text, text_rect)
pygame.event.pump()
pygame.display.update()
clock.tick(30)
main()