from microbit import *
import neopixel
import music

# Setup for NeoPixel ring
num_pixels = 10
np = neopixel.NeoPixel(pin0, num_pixels)

def show_ring(pattern):
    """Display a specific pattern on the NeoPixel ring."""
    colors = {
        "green": (0, 255, 0),
        "red": (255, 0, 0)
    }
    pattern_list = pattern.split()
    for i in range(num_pixels):
        if i < len(pattern_list):
            np[i] = colors.get(pattern_list[i], (0, 0, 0))  # Default to off if color not found
        else:
            np[i] = (0, 0, 0)
    np.show()

def set_servo_angle(pin, angle):
    """Set servo angle using PWM."""
    pulse = int((angle / 180) * 1023)  # Map 0-180 degrees to 0-1023 PWM
    pin.write_analog(pulse)

# Main function to handle loud sound trigger
while True:
    if microphone.was_event(MICROPHONE_EVENT_LOUD):
        ring_patterns = [
            "green green green green green green green green green green",
            "red green green green green green green green green green",
            "red red green green green green green green green green",
            "red red red green green green green green green green",
            "red red red red green green green green green green",
            "red red red red red green green green green green",
            "red red red red red red green green green green",
            "red red red red red red red green green green",
            "red red red red red red red red green green",
            "red red red red red red red red red green",
            "red red red red red red red red red red"
        ]

        for pattern in ring_patterns:
            show_ring(pattern)
            sleep(6000)

        music.play(music.WAWAWAA)

        for _ in range(6):
            set_servo_angle(pin1, 90)
            sleep(100)
            set_servo_angle(pin1, 70)
            sleep(100)
# Write your code here :-)
