added general pinout info at the top, changed the start pin to have an inhibitor latch

This commit is contained in:
Patrick Tschuchnig 2019-09-11 10:03:24 +02:00
parent 9eda20c47d
commit 22208f9cf7

View File

@ -1,6 +1,49 @@
#!/usr/bin/env python #!/usr/bin/env python
#coding=utf-8 #coding=utf-8
############################################
########### GENERAL INFORMATION ############
############################################
# Pinout for assembly:
#
# 3V3 (1) (2) 5V
# pin_shutdown (3) (4) 5V
# - (5) (6) GND
# - (7) (8) -
# GND (9) (10) -
# - (11) (12) -
# - (13) (14) GND
# - (15) (16) pin_blue
# 3V3 (17) (18) pin_green
# - (19) (20) GND
# - (21) (22) pin_red
# - (23) (24) -
# GND (25) (26) -
# - (27) (28) -
# - (29) (30) GND
# pin_error (31) (32) pin_start
# - (33) (34) GND
# - (35) (36) -
# - (37) (38) -
# GND (39) (40) -
# default state of pins:
#
# 32: pull up
# 31: pull down
# 3: pull down
#
# make sure leds are on pull-up default pins
# so when their state is undefined, the led
# strips are switched off!
#
# 22: pull up
# 18: pull up
# 16: pull up
############################################ ############################################
############# START OF IMPORTS ############# ############# START OF IMPORTS #############
############################################ ############################################
@ -350,6 +393,8 @@ led_init()
game_running = False game_running = False
game_just_started = True game_just_started = True
pin_start_inhibit = False
############################################ ############################################
########## END OF INITIALISATION ########### ########## END OF INITIALISATION ###########
############################################ ############################################
@ -406,8 +451,13 @@ while True:
pygame.display.flip() pygame.display.flip()
if GPIO.input(pin_start) == True and game_running == False: #wait for the user to press start button if GPIO.input(pin_start) == True and pin_start_inhibit == False and game_running == False: #wait for the user to press start button
game_running = True game_running = True
# set an inhibitor bit to stop the contact from possibly vibrating and
# causing a stop of the game immediately after start
pin_start_inhibit = True
pin_start_inhibit_timer_start = pygame.time.get_ticks()
errors = 0 errors = 0
error_added = False error_added = False
@ -420,6 +470,13 @@ while True:
if game_running == True: # game running if game_running == True: # game running
print("Game running normally") print("Game running normally")
# if the start pin is inhibited and at least 3 seconds have passed,
# stop blocking the pin
if pin_start_inhibit == True:
if (pygame.time.get_ticks()-start_ticks)/1000 > 3:
pin_start_inhibit = False
if GPIO.input(pin_error) == True: if GPIO.input(pin_error) == True:
if error_added == False: if error_added == False:
errors += 1 errors += 1
@ -446,7 +503,8 @@ while True:
pygame.display.flip() pygame.display.flip()
if GPIO.input(pin_start) != True: # if the start input is gone and the start pin isnt inhibited
if GPIO.input(pin_start) != True and pin_start_inhibit == False:
change_led_colour(100,10,10) change_led_colour(100,10,10)