from machine import Pin
import time
# Define the pins for buttons
button1 = Pin(0, Pin.IN, Pin.PULL_UP)
button2 = Pin(1, Pin.IN, Pin.PULL_UP)
button3 = Pin(2, Pin.IN, Pin.PULL_UP)
# Define the pins for LEDs (active high)
leds_player1 = [Pin(i, Pin.OUT) for i in range(3, 10)]
leds_player2 = [Pin(i, Pin.OUT) for i in range(12, 19)]
serve_player1 = Pin(10, Pin.OUT)
serve_player2 = Pin(11, Pin.OUT)
# Initialize scores and serve indicator
score_player1 = 0
score_player2 = 0
current_serve = 0 # 0 for Player 1, 1 for Player 2
def update_scoreboard():
# Update LEDs for player 1
for i in range(7):
if score_player1 > i:
leds_player1[i].value(1) # Turn on LED (active high)
else:
leds_player1[i].value(0) # Turn off LED (active high)
# Update LEDs for player 2
for i in range(7):
if score_player2 > i:
leds_player2[i].value(1) # Turn on LED (active high)
else:
leds_player2[i].value(0) # Turn off LED (active high)
def update_serve_indicator():
total_points = score_player1 + score_player2
if total_points % 4 < 2:
serve_player1.value(1) # Turn on Player 1 serve LED
serve_player2.value(0) # Turn off Player 2 serve LED
else:
serve_player1.value(0) # Turn off Player 1 serve LED
serve_player2.value(1) # Turn on Player 2 serve LED
# Main loop
while True:
# Check if button 1 is pressed
if button1.value() == 0:
score_player1 = min(score_player1 + 1, 7)
update_scoreboard()
update_serve_indicator()
time.sleep(0.3) # debounce delay
# Check if button 2 is pressed
if button2.value() == 0:
score_player2 = min(score_player2 + 1, 7)
update_scoreboard()
update_serve_indicator()
time.sleep(0.3) # debounce delay
# Check if button 3 is pressed (new game)
if button3.value() == 0:
score_player1 = 0
score_player2 = 0
update_scoreboard()
update_serve_indicator()
time.sleep(0.3) # debounce delay