#L2x  -MIT App Inventor Aqua Drone
# Program activare BLDC cu coenzi
# trimise cu aplicatie MIT App Inventor
#-------Conexiuni:------------------------
# Semnal PWM generat cu GP14 - fizic Pin 19
# Alimentarea de 12V pentru ESC se conecteaza la 1-2 secunde dupa activare
# program, in secventa de initializare
# Tx de la modulul BT este conectat la GP5, fizic pin 7
# vmax- GP17, fizic pin 22, semnal activare drena tranzistor comutare
# baterie de 12V
#--------------------------------------
import machine
from machine import Pin, UART, PWM
import utime


esc_pin = Pin(14)
esc = PWM(esc_pin)

#---LED RGB -------
red=Pin(6,Pin.OUT)
green=Pin(7,Pin.OUT)
blue=Pin(8,Pin.OUT)
ser = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5)) # RP2040


esc.freq(50) # frecventa ceruta de ESC

MIN = 2277  # 1.0 ms -> Motor oprit / Semnal minim experimental
MAX= 6553  # 2.0 ms -> Viteza maximă / Semnal maxim
vmax=Pin(17,Pin.OUT) # grila MOSFET conectare 12V
vmax.value(0)

def init_esc():
    print("---SECVENȚĂ DE INIȚIALIZARE ESC ---")
    
    print("Se poate conecta  bateria la ESC")
    utime.sleep(2)  # timp pentru conectare
    vmax.value(1)   # conectare 12V la ESC
    utime.sleep(0.2)
    esc.duty_u16(MAX) # valoarea maxima
    
    
    utime.sleep(3)
    
    esc.duty_u16(MIN) # valoarea minima
   
    utime.sleep(4)
    
init_esc()

while 1:
    c=ser.read(1)  # receptie de la MIT App inventor
    
    if c == b'1':       # low speed
        
        red.value(1) 
        
        esc.duty_u16(2700)
        utime.sleep(0.3)
        red.value(0) 
        

    if c == b'2':      # medium speed
        
        green.value(1) # 
        
        esc.duty_u16(3200)
        utime.sleep(0.3)
        green.value(0)
        
    if c == b'3':      # high speed
        
        blue.value(1)  # aprind rosu
        
        esc.duty_u16(4000)
        utime.sleep(0.3)
        blue.value(0)
   
    if c == b'0':      # STOP
               
        esc.duty_u16(MIN)
        esc.deinit()
        utime.sleep(0.3)
        
   
    