from machine import Pin ,PWM,SoftI2C,I2C
from i2c_lcd import I2cLcd
from time import sleep
import utime
from servo import Servo

# Keypad
KEY_UP= const(0)
KEY_DOWN = const(1)
keys = [['1', '2', '3', 'A'], 
        ['4', '5', '6', 'B'], 
        ['7', '8', '9', 'C'], 
        ['*', '0', '#', 'D']]
# Pin names for Pico
cols = [18,23,15,14]
rows = [2,4,5,19]

# set pins for rows as outputs
row_pins = [Pin(pin_name, mode=Pin.OUT) for pin_name in rows]

# set pins for cols as inputs
col_pins = [Pin(pin_name, mode=Pin.IN, pull=Pin.PULL_DOWN) for pin_name in cols]

def init():
    for row in range(0,4):
        for col in range(0,4):
            row_pins[row].value(0)

def scan(row, col):
    """ scan the keypad """

    # set the current column to high
    row_pins[row].value(1)
    key = None

    # check for keypressed events
    if col_pins[col].value() == KEY_DOWN:
        key = KEY_DOWN
    if col_pins[col].value() == KEY_UP:
        key = KEY_UP
    row_pins[row].value(0)

    # return the key state
    return key

#Servo
servo=Servo(pin=12)


led1=Pin(32,Pin.OUT)
led2=Pin(25,Pin.OUT)
led3=Pin(27,Pin.OUT)

while True:
     for row in range(4):
        for col in range(4):
            key = scan(row, col)
            if key == KEY_DOWN:
                if keys[row][col] == '1' :
                    led1.value(1),led2.value(0),led3.value(0)
                    servo.move(180)
                if keys[row][col] == '2' :
                    led1.value(0),led2.value(1),led3.value(0)
                    servo.move(0)
                if keys[row][col] == '3' :
                    led1.value(0),led2.value(0),led3.value(3)
                    servo.move(90)