#made by DIEGO ;-)
#----Import de Bibliothèques----------------------------------------------
from machine import Pin, I2C, ADC, PWM
from time import sleep_ms
from lcd_api import LcdApi
from pico_i2c_lcd import I2cLcd
#----Sortie LED----------------------------------------------
#En PWM, la valeur oscille entre 0 (éteint) et 65535 (pleinement allumé)
pwm_led_int = PWM(Pin(25)) #Led interne à la carte Raspberry Pi Pico
pwm_led_int.freq(1_000)
pwm_led_bleu = PWM(Pin(9))
pwm_led_bleu.freq(1_000)
#----Sorties Ecran LCD----------------------------------------------
I2C_ADDR = 39 #adresse I2C
I2C_NUM_ROWS = 2 #nombre de lignes
I2C_NUM_COLS = 16 #nombre de colonnes
i2c = I2C(1, sda=Pin(2, Pin.OUT), scl=Pin(3, Pin.OUT), freq=400000)
lcd = I2cLcd(i2c, I2C_ADDR, I2C_NUM_ROWS, I2C_NUM_COLS)
#----Entrée Potentiomètre----------------------------------------------
potentiometre = ADC(Pin(27)) #valeurs de 0 à 65535
#----Tuto CREATION de son caractère----------------------------------------------
#https://www.youtube.com/watch?v=bXLgxEcT1QU&t=14s&ab_channel=NerdCave
#https://maxpromer.github.io/LCD-Character-Creator/
#----CREATION de ses caractères spéciaux----------------------------------------------
def custom_caractere():
lcd.custom_char(0, bytearray([0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
]))
lcd.custom_char(5, bytearray([0x1F,
0x1F,
0x1F,
0x1F,
0x1F,
0x1F,
0x1F,
0x1F
]))
#----CREATION de fonctions----------------------------------------------
def eteindre_ecran():
lcd.backlight_off()
def allumer_ecran():
lcd.backlight_on()
def clear_ecran():
lcd.clear()
def value_unity():
lcd.move_to(0,0) #se positionner colonne_0, ligne_0
lcd.putstr("0 50 100 %") #Ecrire ce texte
def lire_valeur_potentiometre():
global Value
Value = potentiometre.read_u16() #lecture de la valeur du potentiometre
def allumer_led_interne():
pwm_led_int.duty_u16(Value)
def allumer_led_bleu():
pwm_led_bleu.duty_u16(Value)
def barre_de_visualisation():
global variable_temporaire
variable_temporaire = int(14 * Value / 65535)
for i in range (variable_temporaire):
lcd.move_to(i,1) #se positionner colonne_i, ligne_1
lcd.putchar(chr(5)) #Ecrire ce caractère
for j in range (variable_temporaire, 15):
lcd.move_to(j,1) #se positionner colonne_j, ligne_1
lcd.putchar(chr(0)) #Ecrire ce caractère
#-#----Ecran LCD éteint---------------------------------------------
eteindre_ecran()
#----Début du programme----------------------------------------------
allumer_ecran()
custom_caractere()
clear_ecran()
value_unity()
while True:
lire_valeur_potentiometre()
allumer_led_interne()
allumer_led_bleu()
barre_de_visualisation()
sleep_ms(50) #temps d'arrêt