# PyGame-mBot-01.py import pygame, time from farben import * from pygame.locals import * import mrge_communication_pc, sys, time COM_Port = "COM14" print(f"Starte Verbindung zu {COM_Port}") pygame.init() FPS=60 fenster = pygame.display.set_mode((800, 600)) pygame.display.set_caption("mBot ...") clock = pygame.time.Clock() fenster.fill(grau) def text_typer_xy(text,x,y, size, color) : font = pygame.font.SysFont("arial", size) text = font.render(text, True, color) textrect = text.get_rect() textrect.centerx = x textrect.centery = y fenster.blit(text, textrect) # Schalter 's1' definieren s1_x = 100; s1_y = 100; s1_farbe = rot_aus # Schalter 's1' zeichnen s1 = pygame.draw.circle(fenster, s1_farbe, (s1_x,s1_y), 30, 0) s1_um = pygame.draw.circle(fenster, schwarz, (s1_x,s1_y), 33, 5) l1_x = 100; l1_y = 200; l1_farbe = blau l1 = pygame.draw.circle(fenster, l1_farbe, (l1_x,l1_y), 30, 0) l1_um = pygame.draw.circle(fenster, grau, (l1_x,l1_y), 33, 5) r1_laenge = 700; r1_farbe = rot daten = "Warte auf Daten" def Fenster_zeigen(): fenster.fill(grau) s1 = pygame.draw.circle(fenster, s1_farbe, (s1_x,s1_y), 30, 0) s1_um = pygame.draw.circle(fenster, schwarz, (s1_x,s1_y), 33, 5) l1 = pygame.draw.circle(fenster, l1_farbe, (l1_x,l1_y), 30, 0) l1_um = pygame.draw.circle(fenster, grau, (l1_x,l1_y), 33, 5) pygame.draw.rect(fenster, r1_farbe, Rect(50, 400, r1_laenge, 80), 0) pygame.draw.rect(fenster, schwarz, Rect(50, 400, 700, 80), 5) text_typer_xy(daten, 300,300,33,rot) pygame.display.update() Fenster_zeigen() ser = mrge_communication_pc.init( COM_Port, 115200 ) if ser is None: exit("COM-Fehler") print(f"Verbindung zu {COM_Port} steht") print("Warte auf Daten") ende = False msg=b'' while not ende: # Schleife Hauptprogramm msg = ser.readline() # liest Bytearray mit '\r\n' daten = msg.decode().strip() werte = daten.split(",") if len(werte) != 3: continue line,hell,entf = werte r1_laenge = hell if hell==1024: r1_farbe = rot r1_laenge = 700 else: r1_farbe = blau r1_laenge = int(hell) / 1024 * 700 if int(line)>0: l1_farbe = rot_ein else: l1_farbe = rot_aus for event in pygame.event.get(): # Überprüfen auf Nutzeraktion # Beenden bei [ESC] oder 'Fenster schließen' if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE): ende = True # Mausklick auswerten: # - für Schalter 's1' if event.type == pygame.MOUSEBUTTONDOWN: if s1.collidepoint(event.pos): if s1_farbe==rot_aus: print("Schalter EIN") s1_farbe = rot_ein ser.write("rgbl 111 0 111\n".encode()) else: print("Schalter aus") s1_farbe = rot_aus ser.write("rgbl 0 0 0\n".encode()) Fenster_zeigen() clock.tick(20) #FPS print("\n\n ### ENDE ###") pygame.quit() sys.exit() # statt ser.close()