# --- llibreries
import urequests
import miwifi
from time import ticks_ms, ticks_diff
from machine import Pin, I2C, RTC
import lcd_api
import i2c_lcd
import neopixel
import ssd1306 # Llibreria per a l'OLED, desada a la carpeta lib del dispositiu
# --- configuració neopixels. Sense canvis
# --- inicialització busos I2C
i2c1 = I2C(0, scl=Pin(22), sda=Pin(21)) # LCD 1
i2c2 = I2C(1, scl=Pin(18), sda=Pin(19)) # LCD 2
i2c_oled = I2C(0, scl=Pin(22), sda=Pin(21)) # I2C per a OLED, és el mateix bus que el del LCD1
# --- inicialització pantalles LCD. Sense canvis
# --- Variables de temps
interval = 10000 # actualització cada 10 segons (10.000 ms)
# actualització definitiva cada 5 min = 300 s (300.000 ms)
last_update = ticks_ms()
last_data_update = ticks_ms() # Temporització per actualitzar la data/hora cada segon
# --- Configuració Wi-Fi i ThingSpeak. Sense canvis
miwifi.connecta_wifi(ssid, psw) # connecta a WiFi
def recupera():
# no cal fer cap canvi en aquesta funció
def mostra_consola():
# no cal fer cap canvi en aquesta funció: de fet ja no ens cal
def mostra():
# no cal fer cap canvi en aquesta funció
def colors_uv():
# no cal fer cap canvi en aquesta funció
# --- Funció per obtenir data i hora del RTC intern
def get_datetime():
rtc = RTC()
return rtc.datetime() # Retorna la data i hora en format (YYYY, MM, DD, W, HH, MM, SS, MS)
# --- Funció per mostrar data i hora en OLED
def mostra_data_hora():
dt = get_datetime()
# Format hora i data
hora = "{:02d}:{:02d}:{:02d}".format(dt[4], dt[5], dt[6])
data = "{:02d}/{:02d}/{:04d}".format(dt[2], dt[1], dt[0])
oled.fill(0) # Neteja la pantalla OLED
oled.text(hora, 30, 30) # Centrat aproximadament a la part superior
oled.text(data, 20, 55) # Centrat aproximadament a la part inferior
oled.show() # Mostra els canvis
while True:
ara = ticks_ms()
# Actualitza la data i hora cada segon
if ticks_diff(ara, last_data_update) >= 1000:
mostra_data_hora() # Actualitza la data i hora a l'OLED
last_data_update = ara
if ticks_diff(ara, last_update) >= interval:
try: # l'estructura try / except fa que si hi ha errors el programa continui funcionant
recupera()
mostra()
colors_uv()
last_update = ara
except Exception as e:
print("Error:", e)