Skip to content

Repository files navigation

VibeCoding

materiali del corso Vibe Coding con Led e Sensori

2 febbraio 2026 - Santarcangelo

10 aprile 2026 - Rimini

Esempio di riepilogo usando ChatGPT versione free.


Corso ESP32-C3 + CircuitPython (Vibe Coding)

🎯 Obiettivo

Imparare a collegare:

  • input analogici (sensori)
  • output digitali (LED WS2812)
  • dati da Internet (meteo)

🔌 Setup hardware

  • Board: ESP32-C3 Supermini
  • Firmware: CircuitPython 10

Pin usati

  • A2 → IO2 → sensori analogici Grove
  • D20 → IO20 → strip 8 LED WS2812

Sensori utilizzabili

  • Potenziometro
  • Temperatura
  • Luce
  • Suono

🧪 Esperimento 1: Potenziometro → LED

Obiettivo

Accendere un LED alla volta ruotando il potenziometro.

Logica

  • Il potenziometro produce valori da 0 a 65535
  • Li trasformiamo in numeri da 0 a 7 (8 LED)

Codice

importboardimportanalogioimportneopixelimporttimepot=analogio.AnalogIn(board.IO2)
leds=neopixel.NeoPixel(board.IO20, 8)
whileTrue:
valore=pot.valuelivello= (valore*8) //65536iflivello>7:
livello=7leds.fill((0, 0, 0))
leds[livello] = (0, 10, 0)
time.sleep(0.05)

🌡️ Esperimento 2: Simulazione temperatura

Obiettivo

Usare il potenziometro come se fosse una temperatura reale.

Range scelto

  • 10°C → freddo
  • 30°C → caldo

Logica

  1. Convertire il valore analogico in temperatura
  2. Convertire la temperatura in LED
  3. Cambiare colore

Codice

importboardimportanalogioimportneopixelimporttimepot=analogio.AnalogIn(board.IO2)
leds=neopixel.NeoPixel(board.IO20, 8)
whileTrue:
valore=pot.value# temperatura simulata (10–30°C)temperatura=10+ (valore*20//65535)
# temperatura → LEDlivello= (temperatura-10) *8//20iflivello<0:
livello=0iflivello>7:
livello=7# coloriiflivello<=2:
colore= (0, 10, 20) # freddo (azzurro)eliflivello<=5:
colore= (20, 8, 0) # medio (arancione)else:
colore= (20, 0, 0) # caldo (rosso)leds.fill((0, 0, 0))
leds[livello] =coloretime.sleep(0.05)

🌐 Esperimento 3: Meteo reale (Open-Meteo)

Obiettivo

Visualizzare la temperatura di domani usando Internet.

WiFi laboratorio

  • SSID: Ospiti-88
  • Password: Ospiti-88

Servizio usato

  • Open-Meteo (gratis, senza API key)

Codice

importboardimportneopixelimportwifiimportsocketpoolimportsslimportadafruit_requestsimporttimeleds=neopixel.NeoPixel(board.IO20, 8)
wifi.radio.connect("Ospiti-88", "Ospiti-88")
pool=socketpool.SocketPool(wifi.radio)
requests=adafruit_requests.Session(pool, ssl.create_default_context())
whileTrue:
url="https://api.open-meteo.com/v1/forecast?latitude=44.06&longitude=12.57&daily=temperature_2m_max&timezone=auto"response=requests.get(url)
dati=response.json()
temperatura=dati["daily"]["temperature_2m_max"][1]
print("Temperatura domani:", temperatura)
livello=int((temperatura-10) *8/20)
iflivello<0:
livello=0iflivello>7:
livello=7iflivello<=2:
colore= (0, 10, 20)
eliflivello<=5:
colore= (20, 8, 0)
else:
colore= (20, 0, 0)
leds.fill((0, 0, 0))
leds[livello] =coloreresponse.close()
time.sleep(600)

🧠 Concetti imparati

  • Lettura input analogico
  • Conversione di valori (mapping)
  • Uso dei LED WS2812
  • Colori RGB
  • Connessione WiFi
  • Richieste HTTP
  • Lettura dati JSON

🚀 Idee per miglioramenti

  • Barra LED (tipo termometro)
  • Colori graduali (sfumature)
  • Mostrare temperatura minima e massima
  • Cambiare città
  • Animazioni LED

🧑‍🏫 Filosofia del corso

  • Codice semplice
  • Poche funzioni
  • Tutto visibile e modificabile
  • Imparare facendo (Vibe Coding)

About

Materiali del corso Vibe Coding con Led e Sensori

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages