ZZBlocks 0.3 — aggiornamento 12 ottobre 2026

Attuatori > Suoni > Cicalino attivo: aggiunto il blocco “cicalino attivo pin … stato acceso/spento”. Il pin digitale è selezionabile dal menu; il codice configura il pin come uscita e lo porta inizialmente a LOW. HIGH attiva il modulo, LOW lo spegne. Il blocco è separato dalle note e dalle melodie RTTTL del cicalino passivo; il modulo attivo produce un tono fisso.

Sensori > Robotica > Collisione: aggiunti i blocchi “sensore collisione imposta pin” e “collisione rilevata?”. Il pin digitale è selezionabile. Il blocco di lettura restituisce vero quando l’uscita del sensore è LOW, come indicato nella documentazione KS0021. La verifica impedisce la compilazione se il pin non è configurato una volta nel Setup.

Sensori > Robotica > Evitamento ostacoli: aggiunti i blocchi “sensore ostacoli imposta pin” e “ostacolo rilevato?”. Il pin digitale è selezionabile e va configurato una volta nel Setup. Il blocco restituisce vero quando l’uscita è HIGH, secondo l’esempio KS0051; la distanza di rilevamento si regola col potenziometro del modulo.

Sensori > Robotica > Interruttore fotoelettrico: aggiunti i blocchi “interruttore fotoelettrico imposta pin” e “fascio interrotto?”. Il pin digitale è selezionabile e va configurato una volta nel Setup. La condizione è vera quando il segnale è HIGH, secondo l’esempio della documentazione Keyestudio KS0009. Utile per conteggio di passaggi, finecorsa ottici e rilevamento oggetti.

Sensori > Robotica > Sensore Hall: aggiunti i blocchi “sensore magnetico imposta pin” e “campo magnetico rilevato?”. Pin digitale selezionabile e configurazione richiesta una volta nel Setup. Il blocco booleano restituisce vero quando il segnale è LOW, come nell’esempio Keyestudio KS0020; portata indicativa fino a circa 3 cm, variabile secondo il magnete.

Sensori > Robotica > Sensore di urto: aggiunti i blocchi “sensore di urto imposta pin” e “urto rilevato?”. Il pin digitale è selezionabile e deve essere configurato una volta nel Setup. L’esempio Keyestudio usa un ingresso LOW durante il colpo; il segnale è momentaneo, quindi il blocco va controllato continuamente nel Loop.

Sensori > Robotica > Inclinazione: aggiunti i blocchi “sensore inclinazione imposta pin” e “sensore inclinato?”. Pin digitale selezionabile e configurazione richiesta nel Setup. La condizione restituisce vero con uscita HIGH durante l’inclinazione, secondo l’esempio Keyestudio KS0025.

Correzione menu Robotica: i nuovi sensori di oggi sono stati inseriti direttamente nella categoria Robotica, insieme a Line Tracking e Microfono. La precedente struttura a sottocategorie annidate non era visibile nell’interfaccia.

Sensori > Robotica > Interruttore reed: aggiunti i blocchi “interruttore reed imposta pin” e “magnete rilevato?”. Pin digitale selezionabile e configurazione richiesta una volta nel Setup. La condizione rileva il magnete con uscita LOW, secondo il test Keyestudio KS0038. I blocchi sono visibili direttamente nella categoria Robotica.

Sensori > Temperatura e umidità: aggiunto il blocco “temperatura analogica pin … °C” per il modulo termistore analogico. Pin A0–A5 selezionabile. Conversione con modello NTC da 10 kΩ, beta 3950 e resistenza di riferimento da 4,7 kΩ (formula dell’esempio Keyestudio); restituisce NaN alle letture ADC estreme per evitare calcoli non validi. La misura è indicativa e dipende dalle tolleranze e dalla tensione di alimentazione.

LM35: aggiunto tooltip al passaggio del mouse con collegamenti, sensibilità 10 mV/°C, riferimento ADC da impostare e intervallo 0–100 °C.

Sensori > Robotica: aggiunto il sensore di vibrazione piezoelettrico analogico. I blocchi permettono di impostare A0–A5 nel Setup, leggere il valore istantaneo 0–1023 e verificare se supera una soglia regolabile. Il tooltip descrive collegamenti e limiti della misura. Test automatici e sintassi C++ generata superati; prova sul sensore fisico non eseguita.

Sensori > Robotica: aggiunto il modulo analogico di rilevamento della tensione. Il blocco principale “Tensione imposta pin analogico” seleziona A0–A5 e va inserito nel Setup; gli altri blocchi, con iniziale minuscola, leggono il valore grezzo ADC, la tensione in volt o verificano una soglia regolabile. Conversione nominale per Arduino UNO: ADC × 25 / 1023, assumendo riferimento di 5 V e partitore 5:1. Valido per tensione continua entro 25 V; precisione dipendente dal riferimento e dalle tolleranze. Test automatici e sintassi C++ superati; prova hardware non eseguita.

Sensori > Robotica: aggiunto il sensore analogico di pressione a film sottile. “Pressione imposta pin analogico” configura A0–A5 nel Setup; gli altri blocchi, con iniziale minuscola, leggono il valore grezzo 0–1023 e verificano una soglia regolabile. Tooltip con collegamenti, intervallo nominale riportato dal produttore e nota che il dato ADC non equivale a una forza calibrata. Test automatici e sintassi C++ superati; hardware non provato.

Sensori > Robotica: aggiunto il joystick Keyestudio. Il blocco “Joystick imposta pin X … Y … pulsante … premuto LOW/HIGH” configura due ingressi analogici distinti e un ingresso digitale nel Setup. Gli altri blocchi leggono asse X, asse Y, stato digitale e pulsante premuto. LOW/HIGH è selezionabile per adattarsi alla polarità del pulsante. Test automatici e sintassi C++ superati; hardware non provato.

Sensori > Robotica: riorganizzato il menu in sottocategorie, come “Gas e qualità dell’aria”. Joystick, rilevatore di linea, microfono, vibrazione piezoelettrica, sensori di tensione e pressione, collisione, evitamento ostacoli, interruttore fotoelettrico, Hall, urto, inclinazione e reed sono ora separati; i blocchi restano invariati.

Sensori > Robotica > Encoder rotativo: aggiunti configurazione dei pin CLK/DAT/SW, aggiornamento nel Loop, conteggio con verso, lettura del pulsante e azzeramento. L’esempio usa ingressi INPUT_PULLUP e conteggio a polling con filtro antirimbalzo breve, senza librerie esterne o interrupt. Test automatici e sintassi C++ superati; prova hardware non eseguita.

Attuatori > Motori > Passo passo: aggiunti i blocchi per ULN2003 e motore 28BYJ-48. Configura quattro pin digitali distinti, ruota un numero di passi positivo o negativo a velocità impostabile e rilascia le bobine per ridurre consumo e riscaldamento. Sequenza a mezzo passo, senza librerie esterne; 4096 passi/giro è indicativo e può variare tra esemplari. Velocità limitata a 1–10 giri/min. Test automatico e sintassi C++ superati; hardware non provato.


Sensori > IR: aggiunto il trasmettitore IR Keyestudio. Il blocco “Trasmettitore IR invia” permette di inviare comandi NEC, Sony o RC5 con indirizzo, comando e 0–4 ripetizioni; il blocco “trasmettitore IR invia codice NEC grezzo” reinvia codici NEC a 32 bit catturati dal ricevitore. Su Arduino UNO il pin di trasmissione della libreria IRremote è D3 (S→D3, +→5 V, −→GND). Evitare invii continui nel Loop: usare un pulsante o una condizione. I blocchi condividono la libreria già usata dal ricevitore; Timer2 crea conflitti con PWM D3/D11 e tone. Test automatico dei generatori e sintassi con API stub superati; prova radio non eseguita.

Sensori > Robotica > Luce e prossimità: aggiunto il sensore APDS-9930 con blocchi per inizializzarlo in Setup, leggere la luce ambientale in lux, leggere la prossimità grezza e confrontarla con una soglia regolabile. Il sensore non misura l’inclinazione. Tooltip: alimentazione 3,3 V, I²C su A4/A5 con Arduino UNO; la prossimità nominale arriva a circa 10 cm e il valore grezzo non è una distanza calibrata. Test automatici e sintassi C++ della libreria superati; prova hardware non eseguita.

Visualizzazione > LED Matrix 8×8: aggiunti i blocchi per il modulo Keyestudio KS0336 con driver HT16K33 e indirizzo I²C selezionabile (0x70–0x77). La luminosità si regola da 0 a 15; i blocchi permettono di cancellare, ruotare, disegnare pixel, linee, rettangoli e cerchi, e stampare testo. Aggiunti un menu di faccine e un blocco editor 8×8 con 64 caselle cliccabili, che genera il disegno scelto. La libreria LED Backpack, Adafruit GFX e BusIO sono incluse nel pacchetto; collegamento UNO: SDA=A4, SCL=A5, VCC=5 V, GND=GND. Test automatici, salvataggio/riapertura del progetto e sintassi C++ con API sostitutive superati; display fisico non ancora provato.

Aggiornamento LED Matrix 8×8: il blocco «faccina» è stato rinominato «Matrice LED 8x8 immagine» e il menu ora contiene tutti i 30 disegni dell’esempio fornito, con etichette in italiano: volti, occhi, batterie, icone e frecce. Le immagini sono bitmap PROGMEM; l’inizializzazione richiama anche setType(0), setTextWrap(false) e setTextSize(1), come nel codice di riferimento. Testati tutti i 30 disegni, il salvataggio/riapertura del progetto e la sintassi C++ con API sostitutive.
