#L5Mai. - Program test control Modul Infineon
# DC Motor Shields si sensor de curent Infineon TLI4970 cu RP2040 Zero
# Afisarea datelor se face pe  TM1637 cu 4 digiti.
# Plusul bateriei de 12V trebuie conectat la TLI4970
# Conexiuni DC Motor
# IN1- GP0
# IN2 - GP1
# INH1 - GP2
# INH2 - GP3
#------------------------
# Conexiuni TM1637:
# CLK - GP29
# DIO - GP28
#-------------------------
#Conexiuni TLI 4970
# cs  - GP13 
# clk - GP14
# out - GP12
#--------------------------
# Fara curent sensorul se comporta ca o antena radio
#
import time
#import machine
import tm1637
from machine import Pin, SPI
import _thread
tm = tm1637.TM1637(clk=Pin(29), dio=Pin(28))
#------------HBridge---------
IN1=Pin(0,Pin.OUT)
IN2=Pin(1,Pin.OUT)
INH1=Pin(2,Pin.OUT)
INH2=Pin(3,Pin.OUT)

INH1.value(0) # desactivare
INH2.value(0) # desactivare
#------------------------------
global a       # variabila identificare nivel curent
spi_sck=Pin(14)     # polarity si phase se refera la starea si frontul SCK
spi_rx=Pin(12)
spi=SPI(1,baudrate=1000000, polarity=0,
        phase=1,      # implicit datele sunt pe 8 biti
        bits=16,
        firstbit=SPI.MSB,
        sck=spi_sck,
        mosi=Pin(11),
        miso=spi_rx)

cs=Pin(13,Pin.OUT)
cs.value(1)

tm.brightness(1)

a=0
def read_I():     # task daemon aciv supraveghere nivel curent
    
    while 1:
        global a
        cs.low()
        data = spi.read(1)
        cs.high()
        i=data[0]
        if i>70 :  # depsire nivel curent
            a=0    # opresc motor
        else:
            a=1    #print(a)
        tm.number(i)
        time.sleep(1)
        print(i)
_thread.start_new_thread(read_I,())      

 
while 1:
    IN1.value(1)  # inainte
    IN2.value(0)
    INH1.value(1) # activare canal1
    INH2.value(1) # activare canal 2
    time.sleep(10)
    IN1.value(0)  # inapoi
    IN2.value(1)
    time.sleep(10)