from machine import Pin, ADC, I2C
from time import sleep
import ssd1306
i2c = I2C(0)
display = ssd1306.SSD1306_I2C(128, 64, i2c)
led_1 = Pin(25, Pin.OUT)
led_2 = Pin(26, Pin.OUT)
sensor_1 = ADC(33)
sensor_2 = ADC(27)
#attenuazione della tensione in ingresso al pin di ASC da 0V a 3.6V
sensor_1.atten(ADC.ATTN_11DB)
sensor_2.atten(ADC.ATTN_11DB)
def init_display():
display.fill(0)
display.text('Sistema', 35, 0, 1)
display.text('Baropodometrico', 4, 8, 1)
display.text('-----------', 1, 16, 1)
display.text('Applica pressione', 0,35, 1)
display.show()
while True:
digital_val_1 = sensor_1.read()
digital_val_2 = sensor_2.read()
analog_val_1 = digital_val_1*3.6/4095
analog_val_2 = digital_val_2*3.6/4095
init_display()
diff_carico = abs(analog_val_1 - analog_val_2) #fa il valore assoluto della differenza tra i due sensori
print("Valore digitgale 1: ", digital_val_1, "\tTensione 1: ", round(analog_val_1,2), "V")
print("Valore digitale 2: ", digital_val_2, "\tTensione 2: ", round(analog_val_2,2), "V")
display.fill(0)
display.show()
if analog_val_1 == 3.6 and analog_val_2 == 3.6: #se entrambi i sensori hanno la tensione massima vuol dire che sopra non c'è nessuno
led_1.value(0)
led_2.value(0)
init_display()
display.show()
elif diff_carico < 0.4: #se la differenza tra i due sensori è minima allora la postura è equilibrata
display.text('Postura', 35, 18, 1)
display.text('Equilibrata', 20, 38, 1)
display.show()
led_1.value(1)
led_2.value(1)
else:
if analog_val_1<analog_val_2: #se la tensione del primo sensore è minore del secondo allora sta subendo più pression: la postura è sbilanciata verso sinistra
display.text('Postura', 35, 10, 1)
display.text('Sbilanciata', 20, 28, 1)
display.text('Verso sinistra', 10, 46, 1)
display.show()
led_1.value(1)
led_2.value(0)
else: #analogo ragionamento ma verso destra
display.text('Postura', 35, 10, 1)
display.text('Sbilanciata', 20, 28, 1)
display.text('Verso destra', 16, 46, 1)
display.show()
led_1.value(0)
led_2.value(1)
sleep(1)
Loading
ssd1306
ssd1306