'''Simulare in Wokwi un partitore resistivo utilizzando il componente ‘potenziometro’,
e leggerne il valore di tensione in uscita mediante un GPIO della board ESP32
opportunamente configurato.'''
'''NOTE:
• Il simulatore Wokwi attualmente non simula correttamente due
resistenze collegate in serie.
• Il potenziometro presenta tre terminali, due di alimentazione e uno
da cui prelevare l’uscita.
• Per il potenziometro non è possibile scegliere il valore delle
resistenze, tuttavia può essere visto come un partitore all’interno
del quale all’aumentare di una resistenza diminuisce l’altra e
viceversa.'''
from machine import ADC, Pin
from time import sleep
#Configurazione dell'ADC con il pin 26,
#uno dei GPIO specifici per la conversione analogico-digitale
sensor=ADC(26)
#Creo l'oggetto button associato al pin 13 e lo configuro come Digital Input
button=Pin(13, Pin.IN)
#1)Aggiorna il valore visualizzato periodicamente
while True:
d_val=sensor.read() #lettura del dato fornito in ingresso al pin
#Conversione del valore digitale attraverso la formula Vm=ACDout*Vref/((2^k)-1)
#la scheda ESP32 ha una risoluzione a 12 bit, perciè 2^12-1=4095
a_val=d_val*3.3/4095
print("Valore digitale:", d_val, "Valore analogico:", a_val, "V")
sleep(1) #per acquisire un nuovo dato ogni secondo, sennò fa flash!
#esplicita il "periodicamente"
#2)Aggiornare il valore periodicamente solo mentre si tiene premuto un pulsante
while True:
button_state=button.value()
if button_state==1:
d_val=sensor.read() #lettura del dato fornito in ingresso al pin
#Conversione del valore digitale attraverso la formula Vm=ACDout*Vref/((2^k)-1)
#la scheda ESP32 ha una risoluzione a 12 bit, perciè 2^12-1=4095
a_val=d_val*3.3/4095
print("Valore digitale:", d_val, "Valore analogico:", a_val, "V")
sleep(1) #per acquisire un nuovo dato ogni secondo, sennò fa flash!
#3)Aggiornare il valore periodicamente solo mentre si tiene premuto un pulsante
#e fai in modo che si accenda un LED in fase di lettura
#Creo l'oggetto led associato al pin 33 configurato come Digital Output
led=Pin(33, Pin.OUT)
while True:
button_state=button.value()
if button_state==1:
d_val=sensor.read() #lettura del dato fornito in ingresso al pin
#Conversione del valore digitale attraverso la formula Vm=ACDout*Vref/((2^k)-1)
#la scheda ESP32 ha una risoluzione a 12 bit, perciè 2^12-1=4095
a_val=d_val*3.3/4095
led.value(1)
sleep(0.2)
print("Valore digitale:", d_val, "Valore analogico:", a_val, "V")
sleep(1) #per acquisire un nuovo dato ogni secondo, sennò fa flash!
else:
led.value(0)
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4