Mostrem l'índex UV amb una tira de LEDs
Nivell UV Color Significat
0–2 Verd Baix
3–5 Groc Moderat
6–7 Taronja Alt
8–10 Vermell Molt alt
11+ Violeta Extrem
Mostrem l'índex UV amb una tira de LEDs
Nivell UV Color Significat
0–2 Verd Baix
3–5 Groc Moderat
6–7 Taronja Alt
8–10 Vermell Molt alt
11+ Violeta Extrem
# --- llibreries
import urequests
import miwifi
from time import ticks_ms, ticks_diff
from machine import Pin, I2C
import lcd_api
import i2c_lcd
import neopixel
# --- configuració neopixels
leds = neopixel.NeoPixel(Pin(23), 10) # 23: pin de connexió - 10: núm de LEDs en la tira
for i in range(10): # per a tots els 10 leds de la tira ...
leds[i] = (255,255,255) # assigna un color inicial
leds.write() # encén
# --- 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
# --- inicialització pantalles LCD (mateixa adreça: 0x27)
lcd1 = i2c_lcd.I2cLcd(i2c1, 0x27, 2, 16)
lcd2 = i2c_lcd.I2cLcd(i2c2, 0x27, 2, 16)
# missatge incial
lcd1.putstr ('HOLA')
lcd2.putstr ('HOLA')
# --- 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()
# --- Configuració Wi-Fi i ThingSpeak
ssid = 'xxx'
psw = 'yyy'
# adreça de recuperació de dades del canal:
url = 'https://api.thingspeak.com/channels/1825502/feeds.json?results=1'
miwifi.connecta_wifi(ssid, psw) # connecta a WiFi
def recupera():
global temp, pres, hum, lux, uv
consulta = urequests.get(url)
data = consulta.json()
consulta.close()
temp = data["feeds"][0]["field1"]
pres = data["feeds"][0]["field2"]
hum = data["feeds"][0]["field3"]
lux = data["feeds"][0]["field4"]
uv = int (data["feeds"][0]["field5"])
# si no defineixo uv com a enter, la funció de definició dels colors neopixel no funciona
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(): # encen tota la tira d'un color en funció del valor recuperat de l'índex UV
if uv <= 2:
color = (0, 255, 0) # Verd
elif uv <= 5:
color = (255, 150, 0) # Groc-taronja
elif uv <= 7:
color = (255, 80, 0) # Taronja fosc
elif uv <= 10:
color = (255, 0, 0) # Vermell
else:
color = (128, 0, 255) # Violeta
for i in range(10): # per a tots 10 leds de la tira ...
leds[i] = color # assigna a cada led el color corresponent
leds.write() # encén
while True:
ara = ticks_ms()
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() # gestiona la tira de leds
last_update = ara
except Exception as e:
print("Error:", e)
Sobre els colors (intensitat de la llum):
np[0] = (255, 0, 0) # set to red, full brightness
np[1] = (0, 128, 0) # set to green, half brightness
np[2] = (0, 0, 64) # set to blue, quarter brightness