from pushbutton import PushButton
from time import sleep
from machine import Pin
from machine import ADC, Pin
from machine import Pin, I2C
import ssd1306
from time import *

# ESP32 Pin assignment 
i2c = I2C(0, scl=Pin(22), sda=Pin(21))

oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

vert = PushButton(18)
rouge = PushButton(4)

led_rouge = Pin(2, Pin.OUT)
led_verte = Pin(15, Pin.OUT)

axe = ADC(Pin(35))
axe.atten(ADC.ATTN_11DB)

code = 0

while True:
    pot = axe.read() #définition de "pot" comme la valeur du potentiomètre
    if vert.was_pressed(): #définition des valeurs du cercle intérieur selon la plage de donnée du potentiomètre
        if int(pot)<=511:
            print("Axe_value = 0")
            oled.fill(0)
            oled.text('Input = 0',10,10) #entrée de la valeur dans la liste d'affichage de la carte oled
            code = 0

        elif 511 < int(pot) <= 1022:
            print("Axe_value = 1")
            oled.fill(0)
            oled.text('Input = 1',10,10)
            code = 0
      
        elif 1022 < int(pot) <= 1533:
            print("Axe_value = 2")
            oled.fill(0)
            oled.text('Input = 2',10,10)
            if code == 1:
                code += 1
            else:
                code = 0
      
        elif 1533 < int(pot) <= 2044:
            print("Axe_value = 3")
            oled.fill(0)
            oled.text('Input = 3',10,10)
            code = 0

        elif 2044 < int(pot) <= 2555:
            print("Axe_value = 4")
            oled.fill(0)
            oled.text('Input = 4',10,10)
            code = 0

        elif 2555 < int(pot) <= 3066:
            print("Axe_value = 5")
            oled.fill(0)
            oled.text('Input = 5',10,10)
            code = 0

        elif 3066 < int(pot) <= 3577:
            print("Axe_value = 6")
            oled.fill(0)
            oled.text('Input = 6',10,10)
            if code == 0:
                code += 1
            else:
                code = 0

        elif 3577 < int(pot) <= 4095:
            print("Axe_value = 7")
            oled.fill(0)
            oled.text('Input = 7',10,10)
            code = 0

    elif rouge.was_pressed():
        if int(pot)<=511:
            print("Axe_value = 8")
            oled.fill(0)
            oled.text('Input = 8',10,10)
            code = 0

        elif 511 < int(pot) <= 1022:
            print("Axe_value = 9")
            oled.fill(0)
            oled.text('Input = 9',10,10)
            if code == 3:
                code += 1
            else:
                code = 0

        elif 1022 < int(pot) <= 1533:
            print("Axe_value = A")
            oled.fill(0)
            oled.text('Input = A',10,10)
            code = 0

        elif 1533 < int(pot) <= 2044:
            print("Axe_value = B")
            oled.fill(0)
            oled.text('Input = B',10,10)
            code = 0

        elif 2044 < int(pot) <= 2555:
            print("Axe_value = C")
            oled.fill(0)
            oled.text('Input = C',10,10)
            if code == 4:
                code += 1
            else:
                code = 0

        elif 2555 < int(pot) <= 3066:
            print("Axe_value = D")
            oled.fill(0)
            oled.text('Input = D',10,10)
            code = 0

        elif 3066 < int(pot) <= 3577:
            print("Axe_value = E")
            oled.fill(0)
            oled.text('Input = E',10,10)
            code = 0

        elif 3577 < int(pot) <= 4095:
            print("Axe_value = F")
            oled.fill(0)
            oled.text('Input = F',10,10)  
            if code == 2:
                code += 1
            else:
                code = 0
    print(code)
    if code == int(5):
        oled.fill(0)
        oled.text('Safe opened',10,10)
        led_verte.value(1)
        led_rouge.value(0)
        sleep(1)
        led_verte.value(0)
        led_rouge.value(1)
        sleep(0.5)
    else:
        led_verte.value(0)
    oled.show()
    sleep(0.5)