#! /usr/bin/python
import RPi.GPIO as GPIO
import time

global blinking, blink_count

blinking: bool = False
led_state: bool = False
blink_count: int = 0

LED_PIN = 2
BTN_PIN = 3 

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(LED_PIN ,GPIO.OUT)
GPIO.setup(BTN_PIN,GPIO.IN, pull_up_down = GPIO.PUD_UP)

blinking = not GPIO.input(BTN_PIN)

def ISR_DECT_BOTH(channel: int):
    global blinking, blink_count
    time.sleep(0.05)
    blinking = not GPIO.input(BTN_PIN)
    if(blinking):
        blink_count = 0

GPIO.add_event_detect(BTN_PIN, GPIO.BOTH, callback = ISR_DECT_BOTH, bouncetime = 50)

try:
    while(1):
        print(blinking)
        if(blinking):
            if led_state == 0:
                blink_count += 1
            if blink_count <= 3:
                led_state = not led_state
        else:
            led_state = False
        GPIO.output(LED_PIN, led_state)
        time.sleep(1)
except:
    GPIO.cleanup()
        