From dc9497ab6b33b8ca62a7d9d6769b58cfb66f2ed2 Mon Sep 17 00:00:00 2001 From: Patrick Tschuchnig Date: Wed, 11 Sep 2019 15:01:29 +0200 Subject: [PATCH] trying a new way of controlling the LED strips --- gametest_rev1.py | 66 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 10 deletions(-) diff --git a/gametest_rev1.py b/gametest_rev1.py index fad018f..3ca3e10 100644 --- a/gametest_rev1.py +++ b/gametest_rev1.py @@ -135,6 +135,15 @@ led_red = 0 led_green = 0 led_blue = 0 +# RPi.GPIO does not provide getter methods for PWM, therefor +# defining my own here +led_red_brightness = 0 +led_green_brightness = 0 +led_blue_brightness = 0 + +# predefine led blink timer to 0 +timer_led_blink = 0 + ############################################ ######## END OF PRE-INITIALISATION ######### ############################################ @@ -183,26 +192,41 @@ def led_init(): led_blue.start(0) led_red.start(0) +def change_red(amount): + # takes an input from 0 to 255 and converts it to Duty Cycle + # to be used by change_led_colour + global led_red, led_red_brightness + led_red_brightness = amount + factor = 100/255 + led_red.ChangeDutyCycle(amount*factor) + def change_green(amount): # takes an input from 0 to 255 and converts it to Duty Cycle # to be used by change_led_colour - global led_green + global led_green, led_green_brightness + led_green_brightness = amount factor = 100/255 led_green.ChangeDutyCycle(amount*factor) def change_blue(amount): # takes an input from 0 to 255 and converts it to Duty Cycle # to be used by change_led_colour - global led_blue + global led_blue, led_blue_brightness + led_blue_brightness = amount factor = 100/255 led_blue.ChangeDutyCycle(amount*factor) -def change_red(amount): - # takes an input from 0 to 255 and converts it to Duty Cycle - # to be used by change_led_colour - global led_red - factor = 100/255 - led_red.ChangeDutyCycle(amount*factor) +def get_red(): + global led_red_brightness + return led_red_brightness + +def get_green(): + global led_green_brightness + return led_green_brightness + +def get_blue(): + global led_blue_brightness + return led_blue_brightness def change_led_colour(red_amount,green_amount,blue_amount): # sets an RGB value for the led strip. @@ -226,6 +250,23 @@ def change_led_speed(colour, speed): else: return false +def led_handler(): + if led_blink == True: + if timer_led_blink == 0: + timer_led_blink_starttime = pygame.time.get_ticks() + timer_led_blink = (timer_led_blink_starttime-pygame.time.get_ticks()) + if (timer_led_blink/1000)%2 = 0: + if timer_led_blink_toggle == 1: + led_red_brightness_temp = get_red() + led_green_brightness_temp = get_green() + led_blue_brightness_temp = get_blue() + + change_led_colour(0,0,0) + timer_led_blink_toggle = 0 + else: + change_led_colour(led_red_brightness_temp,led_green_brightness_temp,led_blue_brightness_temp) + timer_led_blink_toggle = 1 + def led_alert(): # stops the running program for 10 seconds # causes the red LED to flash @@ -233,6 +274,8 @@ def led_alert(): # # !!!!untested!!!! # + # OBSOLETE!!!! + # change_led_colour(100, 0, 0) change_led_speed(red, 1) for i in range(1,10): @@ -306,7 +349,7 @@ def enter_name(): screen.blit(highscore_surface, highscore_rectangle) textbox_text_surface = pygame_font_2.render('Enter Name:',True, pygame_font_main_color) - textbox_text_rectangle = textbox_surface.get_rect() + textbox_text_rectangle = textbox_text_surface.get_rect() textbox_text_rectangle.topleft = (700, 400) textbox_surface = pygame_font_2.render(str(name), True, pygame_font_main_color) @@ -318,7 +361,7 @@ def enter_name(): draw_border() draw_logos() - + pygame.display.flip() for event in pygame.event.get(): @@ -444,6 +487,8 @@ highscore_checked = False pin_start_inhibit = False timer_game_ending_started = False +led_blink = True + ############################################ ########## END OF INITIALISATION ########### ############################################ @@ -457,6 +502,7 @@ while True: clear_screen() handle_events() show_debug() + led_handler() if game_running == False and game_ending == False: # one shot for changing the led colour