from machine import Pin, PWM, I2C
from time import sleep, ticks_ms
from ssd1306 import SSD1306_I2C

sda = Pin(21)
scl = Pin(22)

i2c = I2C(0, sda=sda, scl=scl, freq=400000)
oled = SSD1306_I2C(128, 64, i2c)

oled.fill(0)
oled.text("ALARM OFF", 10, 10)
oled.hline(15,32, 65,1)
oled.show()

led_red = Pin (13, Pin.OUT)
led_blue = Pin (12, Pin.OUT)
led_white = Pin (14, Pin.OUT)
pir = Pin(26, Pin.IN)  # geen pull resistor nodig bij pir
button = Pin(25, Pin.IN, Pin.PULL_UP)

buzzer = PWM(Pin(27))
buzzer.freq(500)
buzzer.duty(0)

timestamp_buzzer = 0
timestamp_led = 0
is_buzzer_on = 0
is_led_on = 0
status_pir_before = 0 
is_alarm_on = 0
is_alarm_trigeered = 0
status_button_before = 1

led_blink_rate = 500

while True:

    status_button = button.value()
    if status_button_before != status_button:
        status_button_before = status_button
        if status_button == 0:
            is_alarm_on = not is_alarm_on
            print("alarm_status =" , is_alarm_on)
            if is_alarm_on == 0:
                # alles uitschakelen
                led_red.value(0)

        sleep(0.05)

    if is_alarm_on:
        if ticks_ms() - timestamp_led > 200:
            timestamp_led = ticks_ms()
            is_led_on = not is_led_on
            #print("is_led_on", is_led_on)
            led_red.value(is_led_on)

    pir_status = pir.value()
    if pir_status != status_pir_before:
        status_pir_before = pir_status
        print("PIR=" , pir_status)
        led_white.value(pir_status)

'''
    if ticks_ms() - timestamp_buzzer > 500:
        timestamp_buzzer = ticks_ms()
        is_buzzer_on = not is_buzzer_on
        print("is_buzzer_on", is_buzzer_on)
        buzzer.duty(512 * is_buzzer_on)
        oled.fill(0)
        oled.text(f"buzzer {is_buzzer_on}", 0, 0)
        oled.show()

    if ticks_ms() - timestamp_led > 200:
        timestamp_led = ticks_ms()
        is_led_on = not is_led_on
        print("is_led_on", is_led_on)
        led_red.value(is_led_on)

    pir_status = pir.value()
    if pir_status != status_pir_before:
        status_pir_before = pir_status
        print("PIR=" , pir_status)
'''