Archivi categoria: elettronica

Arduino esercizi – Base marziana ELYSIUM

Quest’anno sto supportando, con attività di sperimentazione pratica, anche classi non mie, proponendo laboratori motivanti per riaccendere curiosità e partecipazione. La prossima settimana lavorerò con una terza elettronica numerosa ed eterogenea, non semplice da gestire nei laboratori tradizionali. Per questo, insieme ai colleghi, abbiamo scelto di spostare la lezione nel Laboratorio Territoriale (LTO), uno spazio ricco di attrezzature “inusuali” per un normale laboratorio scolastico: il contesto giusto per stuzzicare l’attenzione e rendere concreti gli apprendimenti su Arduino.

Stato iniziale della classe:

  • hanno svolto le primissime prove con Arduino (blink e poco altro);
  • conoscono le variabili e hanno un’idea dei tipi di dato;
  • sanno riconoscere e usare pulsanti, interruttori, deviatori e LED.

L’obiettivo della lezione è mettere insieme questi elementi in un compito pratico, semplice ma significativo: progettare e realizzare un piccolo controller di luce che usa pulsante, interruttore/deviatore e LED, approfondendo al tempo stesso nozioni base di programmazione (lettura ingressi, gestione del tempo con millis() o delay(), piccola logica a stati AUTO/MANUALE).

Desidero che gli studenti vedano subito un risultato, si divertano a farlo funzionare e, passo dopo passo, consolidino lessico, metodo e fiducia.

Questa lezione sarà suddivisa in tre parti, due introduttive (ed ognuna con attività aggiuntive facoltative) che condurranno alla terza parte conclusiva in cui gli studenti dovranno realizzare il sistema completo.

In ogni fase viene mostrato:

  • diagramma di flusso;
  • pseudocodice;
  • schema di collegamento;

Lo studente deve realizzare lo sketch Arduino di ogni fase.

Come sempre amo introdurre il problema usando una narrazione coinvolgente e visto che mi piace la fantascienza andremo con i ragazzi su Marte. 🙂

Base marziana ELYSIUM

Siete il tecnico elettronico della base marziana. È stato inaugurato un nuovo modulo abitativo e, durante lo spostamento di carichi nel tunnel pressurizzato che collega la serra alla cupola, un carrello radiocomandato ha urtato la parete, provocando una micro-frattura con inizio di depressurizzazione. L’intervento rapido di un manutentore ha evitato il peggio. Dalle analisi emergono due cause principali: affaticamento del personale in turno e illuminazione insufficiente nel corridoio. Per prevenire incidenti e ridurre i consumi, il comando vi incarica di realizzare un controller luce “low-power”: in AUTO la luce si accende per pochi secondi quando viene rilevato il passaggio (lo simulerete con un pulsante); in MANUALE rimane attiva per la durata delle ispezioni EVA (Extra-Vehicular Activity). Il progetto deve essere affidabile, parsimonioso nei consumi e conforme agli standard di sicurezza della base, così da superare senza riserve la verifica dei consumi energetici imminente.

Per evitare che un bug in un solo componente comprometta l’intero sistema, decidete di scomporre il problema e validare separatamente i due comportamenti critici, prima di integrarli.

  1. Prima prova – “Solo PULSANTE” (sensore di passaggio)
    Nel banco di test allestito accanto al tunnel, il tecnico simula l’evento di passaggio con un pulsante. Alla pressione del pulsante la luce si accende un un determinato tempo e poi si spegne.
    (Facoltativo) Sperimentate anche la variante in cui la luce reagisca con un ping di cortesia temporizzato e che non riparta finché il pulsante resta premuto (niente retrigger). Questo serve a scongiurare illuminazioni troppo lunghe dovute a rimbalzi o pressioni involontarie: energia salva, rischio ridotto.
  2. Seconda prova – “Solo INTERRUTTORE” (modalità MANUALE)
    Il tecnico realizza il comando manuale: ON = luce stabile, OFF = buio. Qui controlla la priorità operativa.
    (Facoltativo) Sperimentate anche il feedback all’inserimento, due lampeggi rapidi. Quando si passa a ON: due lampeggi veloci e poi resta acceso.

Superate queste due verifiche, il tecnico procede alla versione finale: unendo AUTO (pulsante) e MANUALE (interruttore) nello stesso controller, con la regola d’oro: MANUALE ha sempre priorità. È così che il progetto rispetta il protocollo Zero-Disturb e arriva pronto alla verifica dei consumi energetici.


Prima prova – “Solo PULSANTE” (sensore di passaggio)

Esercizio: realizzare lo sketch Arduino che permette di realizzare questa prima prova.

Diagramma di flusso

Pseudocodice

INIZIO
  imposta PIN_LED come USCITA
  imposta PIN_PULSANTE come INGRESSO
  scrivi PIN_LED = LOW

  RIPETI PER SEMPRE
    statoPulsante ← leggi(PIN_PULSANTE)   // HIGH = premuto (pull-down esterno)

    SE statoPulsante è HIGH ALLORA
      scrivi PIN_LED = HIGH
      attesa 1500 ms
      scrivi PIN_LED = LOW
      attesa 50 ms
    FINE SE
  FINE RIPETI
FINE

Schema di collegamento

 


Prima prova – “Solo PULSANTE” (sensore di passaggio) – variante che evita il retrigger

Esercizio: realizzare lo sketch Arduino che permette di realizzare la variante della prima prova.

    • Premo > LED acceso ~1,5 s > poi spento.
    • Tenendo premuto non riparte; riparte solo dopo il rilascio.

Diagramma di flusso – versione che evita il retrigger

Pseudocodice – versione che evita il retrigger

INIZIO
  // Setup
  imposta PIN_LED come USCITA
  imposta PIN_PULSANTE come INGRESSO
  scrivi PIN_LED = LOW

  RIPETI PER SEMPRE   // loop
    statoPulsante ← leggi(PIN_PULSANTE)

    SE statoPulsante è HIGH ALLORA           // pulsante premuto
      scrivi PIN_LED = HIGH                  // accendi luce di cortesia
      attesa 1500 ms                         // delay 1,5 s
      scrivi PIN_LED = LOW                   // spegni

      // attesa rilascio per evitare retrigger continui
      MENTRE leggi(PIN_PULSANTE) è HIGH FAI
        attesa 10 ms
      FINE MENTRE

      attesa 50 ms                           // piccolo anti-rimbalzo
    FINE SE
  FINE RIPETI
FINE

Seconda prova – “Solo INTERRUTTORE” (modalità MANUALE)

Esercizio: realizzare lo sketch Arduino che permette di realizzare questa seconda prova.

  • Interruttore ON > LED acceso fisso. (1500 ms)
  • Interruttore OFF > LED spento.

Prevedere un anti-rimbalzo realizzato con un delay di 50 ms.

Diagramma di flusso

Pseudocodice

INIZIO
  imposta PIN_LED come USCITA
  imposta PIN_PULSANTE come INGRESSO
  scrivi PIN_LED = LOW

  RIPETI PER SEMPRE
    statoPulsante ← leggi(PIN_PULSANTE)   // HIGH = premuto (pull-down esterno)

    SE statoPulsante è HIGH ALLORA
      scrivi PIN_LED = HIGH
      attesa 1500 ms
      scrivi PIN_LED = LOW
      attesa 50 ms
    FINE SE
  FINE RIPETI
FINE

Diagramma di flusso

Pseudocodice

INIZIO
  // Setup
  imposta PIN_LED come USCITA
  imposta PIN_INTER come INGRESSO
  scrivi PIN_LED = LOW

  RIPETI PER SEMPRE    // loop
    statoInterruttore ← leggi(PIN_INTER)   // HIGH = MANUALE ON (con pull-down esterno)

    SE statoInterruttore è HIGH ALLORA
      scrivi PIN_LED = HIGH               // LED acceso
    ALTRIMENTI
      scrivi PIN_LED = LOW                // LED spento
    FINE SE
  FINE RIPETI
FINE

Schema di collegamento


Seconda prova (facoltativo) – “Solo INTERRUTTORE” (modalità MANUALE) – variante con feedback all’inserimento

Per il feedback prevedere un accensione e spegnimento del LED per 3 cicli da 80 ms

Diagramma di flusso

Pseudocodice – variante con feedback all’inserimento

INIZIO
  // Setup
  imposta PIN_LED come USCITA
  imposta PIN_INTER come INGRESSO    // pull-down esterno
  scrivi PIN_LED = LOW
  statoPrec ← LOW

  RIPETI PER SEMPRE
    stato ← leggi(PIN_INTER)          // HIGH = MANUALE ON

    // Rilevazione fronte di salita (OFF -> ON)
    SE (stato = HIGH) AND (statoPrec = LOW) ALLORA
      PER i da 0 a 1 FAI               // due lampeggi rapidi
        scrivi PIN_LED = HIGH
        attesa 80 ms
        scrivi PIN_LED = LOW
        attesa 80 ms
      FINE PER
    FINE SE

    // Stato stabile della modalita MANUALE
    SE (stato = HIGH) ALLORA
      scrivi PIN_LED = HIGH
    ALTRIMENTI
      scrivi PIN_LED = LOW
    FINE SE

    statoPrec ← stato
  FINE RIPETI
FINE

Realizzazione del sistema completa

Esercizio 03: realizzare lo sketch Arduino che permette di realizzare l’intero sistema.

  • manuale ON? = interruttore HIGH
  • pulsante premuto? = pulsante HIGH
  • timer attivo? = millis() prima di tScadenza (luce ancora entro i 5 s)

Diagramma di flusso

Pseudocodice

INIZIO
  // Setup
  imposta PIN_LED come USCITA
  imposta PIN_PULSANTE come INGRESSO
  imposta PIN_INTER come INGRESSO
  scrivi PIN_LED = LOW
  tScadenza ← 0
  DURATA_MS ← 5000

  RIPETI PER SEMPRE   // loop
    // Lettura ingressi
    statoInterruttore ← leggi(PIN_INTER)      // HIGH = MANUALE ON (pull-down esterno)
    statoPulsante     ← leggi(PIN_PULSANTE)   // HIGH = pulsante premuto

    // Significato applicativo
    manuale ← (statoInterruttore è HIGH)
    premuto ← (statoPulsante è HIGH)

    SE manuale ALLORA
      scrivi PIN_LED = HIGH                   // LED acceso fisso in MANUALE
    ALTRIMENTI
      SE premuto ALLORA
        tScadenza ← tempoCorrenteMs() + DURATA_MS
      FINE SE

      SE tempoCorrenteMs() < tScadenza ALLORA // timer attivo?
        scrivi PIN_LED = HIGH                 // LED acceso (luce di cortesia)
      ALTRIMENTI
        scrivi PIN_LED = LOW                  // LED spento
      FINE SE
    FINE SE
  FINE RIPETI
FINE

Schema di collegamento

 

Buon Coding a tutti 🙂

Meditazione da Maker: un supporto DIN per prototipare in fretta (e con ordine)

5 minuti da Maker del fine settimana.

In queste settimane devo prototipare velocemente e rispondere ai dubbi di studenti di classi diverse: c’è chi inizia a “giocare” con l’elettronica e chi, più grande, pensa già ai progetti per la maturità. Risultato? Un continuo montare e smontare circuiti… e l’ordine che vacilla.

Per la mia attività di making del weekend ho deciso di dare forma a un supporto di prototipazione basato su guide DIN (guide omega), utilissime in elettronica e automazione. Chi mi segue sa che in passato ho realizzato vari supporti, trovate esempi sul mio sito e su Thingiverse, soprattutto per esercitazioni con PLC e microcontrollori.

Oggi pomeriggio, stanco dei moduli sparsi sul banco, ho sfruttato solo materiale di recupero per costruire una base pratica che mi permetta di passare da un’esercitazione all’altra in pochi minuti. Ho trattato l’attività come una piccola “Meditazione da Maker”: due ore di musica in sottofondo, progettazione e realizzazione. Missione compiuta nei tempi.

Il progetto è ancora migliorabile, quindi per ora non condivido i sorgenti: li pubblicherò a breve. Dalle immagini si capisce comunque quanto sia semplice replicarlo. La base misura 22×22 cm, una scelta dettata dal pannello già a disposizione e la struttura che ospita le barre DIN riprende i miei progetti precedenti, con qualche variazione mirata.

Nei prossimi giorni arriveranno sorgenti e dettagli, tornate a trovarmi. 🙂

Dirimere i conflitti con il pensiero computazionale – educazione civica – diagramma di flusso e pseudocodice – lezione 02

Dal problema definito passiamo alla modellazione del processo: un diagramma di flusso rende visibile il percorso di mediazione (controllo sicurezza > turni > parafrasi > opzioni > decisione/mediatore). Poi tradurremo nella prossima lezione lo pseudocodice scritto in un linguaggio comprensibile (con nomi di variabili e commenti in italiano), in uno sketch Arduino.

Contenuto dell’attività

Obiettivi

  • Costruire un diagramma di flusso corretto (start/end, bivi, ciclo).
  • Scrivere pseudocodice coerente e leggibile.

Durata: 60–75 minuti
Materiali: fogli A3, pennarelli, template di blocchi; in alternativa editor con Mermaid.

Diagramma di flusso (Mermaid)

graph TD
    A([Start]) --> B{E' sicuro parlare}
    B -- No --> C[Time-out 2 minuti e chiama adulto]
    C --> B
    B -- Si --> D[Definisci il problema in una frase]
    D --> E[Turni di parola: A 60s, B 60s]
    E --> F{Parafrasi reciproca corretta}
    F -- No --> E
    F -- Si --> G[Genera almeno 2 opzioni di soluzione]
    G --> H{Accordo su una opzione}
    H -- Si --> I[Piano di azione: chi fa cosa entro quando]
    I --> J[Impegno reciproco]
    J --> K[Verifica dopo 24 ore]
    K --> L([End])
    H -- No --> M[Chiedi mediatore o rinvia confronto]
    M --> B

Diagramma di flusso

Pseudocodice

INIZIO
  mostra "Benvenuto: risoluzione conflitto (Base)"
  RIPETI
    chiedi "E' sicuro parlare? (y/n)"
    se risposta = 'n' allora
       mostra "Time-out breve"
       attendi breve tempo
    altrimenti esci dal ciclo
  FINO A quando è sicuro parlare

  mostra "Definisci il problema in UNA frase"
  attendi conferma

  RIPETI
     mostra "Turno A (60s simulati) → invio"
     attendi conferma
     mostra "Turno B (60s simulati) → invio"
     attendi conferma
     chiedi "Parafrasi reciproca corretta? (y/n)"
  FINO A quando risposta = 'y'

  numeroOpzioni = 0
  RIPETI
     chiedi "Aggiungi opzione? (a = aggiungi, f = fine)"
     se 'a' allora numeroOpzioni = numeroOpzioni + 1
  FINO A quando comando = 'f' e numeroOpzioni >= 2

  chiedi "C'e' accordo su una opzione? (y/n)"
  se 'y' allora
      mostra "Piano d'azione e verifica a 24h"
      FINE
  altrimenti
      mostra "Mediatore o rinvio"
      vai a controllo sicurezza
FINE

Nella prossima lezione si passerà dallo pseudocodice allo sketch Arduino.

Buon Coding a tutti, ma soprattutto che la pace sia con voi 🙂

Dirimere i conflitti con il pensiero computazionale – educazione civica – Definizione del problema – lezione 01

La violenza, dai conflitti globali alla violenza verbale quotidiana, nasce spesso dal non-ascolto e dalla prevaricazione. Nel laboratorio di sistemi elettronici trasformiamo i principi di convivenza civile in processi chiari: condizioni, regole, passi verificabili. Il lavoro in gruppo e la scrittura dell’algoritmo favoriscono la riflessione e il senso di giustizia che nasce dal confronto tra pari, non dall’imposizione. In un’epoca di bombardamento continuo di notizie che rischia di normalizzare la violenza e di farci sentire impotenti, progettare insieme percorsi di dialogo è un dovere civico oltre che un’attività didattica.

Contenuto dell’attività

Obiettivi

  • Distinguere fatti da interpretazioni in un conflitto.
  • Formulare il problema in una frase chiara.
  • Definire regole minime di dialogo e condizioni di sicurezza.

Durata: 60–75 minuti
Materiali: scheda cartacea o digitale (tabella), post-it, pennarelli.

Fasi

  1. Rompighiaccio (5 minuti)
    • Brainstorm: dove incontriamo conflitti (classe, chat, famiglia, social, ambiente)?
    • Raccogli su post-it parole chiave (ascolto, rispetto, tempi, diritti, minoranze).
  2. Fatti vs interpretazioni (15 minuti)
    • Consegna una scheda con due colonne:
      • Colonna A: FATTI (osservabili, verificabili).
      • Colonna B: INTERPRETAZIONI (opinioni, giudizi, attribuzioni di intenzioni).
    • Ogni gruppo (3–4 studenti) compila la tabella su un caso realistico proposto da te.
  3. Regole minime del confronto (10 minuti)
      • Stabilire 4 regole operative: niente insulti, parlo di me non accuso te, no interruzioni, tempi uguali.
        • Cosa si intende per: “parlo di me non accuso te”
          • Esempio 01: “Io mi sento confuso quando parliamo tutti insieme, perché non capisco. Ti chiedo di alzare la mano.”
          • Esempio 02: “Io mi innervosisco quando vengo interrotto, perché perdo l’idea. Ti chiedo di farmi finire.”
      • Decidere la condizione di sicurezza: se non è un buon momento, si prevede un time-out.
  4. Definizione del problema (15 minuti)
    • Ogni gruppo formula 1 “frase problema” chiara e neutra (max 20 parole).
    • Esempio: “Nel gruppo di laboratorio c’è disaccordo sulla divisione dei compiti e sui tempi di consegna”.
  5. Condivisione e feedback (10 minuti)
    • Ogni gruppo legge la frase. Feedback degli altri: è chiara? è neutra? evita accuse?

Lista elementi per la valutazione formativa

  • Chiarezza della frase problema.
  • Distinzione corretta fatti/interpretazioni.
  • Qualità delle regole proposte.
  • Partecipazione e rispetto dei turni.
  • Sintesi finale.

Buon lavoro 🙂

Dirimere i conflitti con il pensiero computazionale – educazione civica – presentazione

Esercitazione di Educazione Civica nelle ore di Laboratorio di Sistemi Elettronici

Desidero condividere la scheda di lavoro del percorso di educazione civica che avvierò oggi con i miei studenti. Come sapete, l’educazione civica è affidata a tutti i docenti del consiglio di classe e viene insegnata con un approccio trasversale e interdisciplinare. Per quanto mi riguarda, condurrò le prime tre ore di lezione a partire da oggi, integrandole con i contenuti della disciplina che insegno: Laboratorio di Sistemi Elettronici.

Condivido la scheda così come l’ho progettata nei giorni scorsi: modificatela e adattatela liberamente dove ritenete opportuno. Vi ringrazio fin d’ora se vorrete darmi un riscontro sia sulla validità della proposta sia sull’eventuale sperimentazione nelle vostre classi. La sto testando e con ogni probabilità apporterò modifiche in itinere.

Perché fare educazione civica in laboratorio di sistemi elettronici

Perché progettare un algoritmo è progettare una convivenza: si definiscono condizioni, stati, ingressi/uscite e verifiche di esito. Nel laboratorio trasformiamo i principi di costituzione, diritti e responsabilità in procedure operative che gli studenti possono vedere, toccare e migliorare.

In più, scrivere l’algoritmo e svilupparlo in gruppo porta inevitabilmente a riflettere su questi problemi, a cercare modi concreti per affrontarli e, soprattutto, a coltivare un senso di giustizia che nasce dal confronto civile. È nella pratica del “decidere insieme” e non nell’imposizione dall’alto tipica di leadership autocratiche che si progetta la pace: solo così, con regole condivise, possiamo contribuire a rendere migliore questo mondo.

Infine, in un contesto in cui il bombardamento continuo di notizie rischia di assuefarci a una falsa normalità della violenza e di farci sentire impotenti di fronte ai problemi globali, il laboratorio offre un antidoto: riflettere e progettare insieme percorsi di dialogo e cooperazione. Farlo non è solo un’opportunità didattica: è un dovere civico, un esercizio concreto di responsabilità verso il bene comune.

Ho previsto una versione base che, secondo la mia progettazione, richiede circa tre ore. Non so se durante le prossime lezioni o più avanti proporrò una versione avanzata, che integra criteri di valutazione, punteggi: questa seconda forse la farò sviluppare quando la classe avrà acquisito maggiore dimestichezza con la programmazione, ma osservo e nel caso troverete su questo sito la proposta avanzata integrata all’interno delle tre lezioni che vi condividerò settimanalmente (credo) con lo sviluppo di una proposta di soluzione del diagramma di flusso, pseudocodice e Sketch Arduino.

Scheda di lavoro

In questa attività uniamo educazione civica e competenze tecnico-scientifiche per riflettere su conflitti che toccano la nostra società: escalation di guerre, fenomeni di apartheid e discriminazione, crisi climatica, violenza verbale online e offline. Al centro c’è un’idea semplice e credo potente: molte forme di violenza nascono dal non-ascolto e dalla prevaricazione, dal non tenere conto del pensiero altrui e dei diritti delle minoranze.
Useremo il pensiero computazionale (diagrammi di flusso, pseudocodice, automazione con Arduino) per progettare procedure di dialogo e mediazione: la logica degli algoritmi diventa un modo per rendere trasparente, equo e verificabile il percorso verso una soluzione condivisa.

Obiettivi formativi

  • Civici: sviluppare ascolto attivo, rispetto reciproco, gestione non violenta dei conflitti, attenzione ai diritti e alle minoranze.
  • Tecnici: saper rappresentare un processo con diagramma di flusso e pseudocodice; tradurre la procedura in uno sketch Arduino semplice con input da seriale e feedback visivo/sonoro.
  • Metodologici: passare da opinioni generiche a passi operativi (regole, turni di parola, verifica di comprensione, decisione).

Struttura del percorso (3 lezioni)

Lezione 1 – Definizione del problema

  • Analisi di casi: conflitti quotidiani (classe, social, famiglia) e macro-temi (discriminazione, clima, linguaggi d’odio).
  • Riconoscere attori, interessi, regole e condizioni minime per un confronto sicuro.
  • Distinguere fatti da interpretazioni e formulare il problema in una frase chiara.

Lezione 2 – Diagramma di flusso e pseudocodice

  • Costruzione di una versione base dell’algoritmo di mediazione:
    controllo sicurezza del confronto > turni di parola > parafrasi reciproca > generazione di opzioni > decisione o richiesta di mediazione.
  • Stesura del pseudocodice con variabili in italiano e commenti esplicativi.

Lezione 3 – Sketch Arduino

  • Implementazione su Arduino con input via Serial Monitor e feedback con LED integrato (e buzzer opzionale).
  • Test guidato: simulare conversazioni e verificare come l’algoritmo aiuta a ridurre ambiguità, toni aggressivi e fraintendimenti.

Competenze attese

  • Competenze civiche e sociali: ascolto, empatia, negoziazione, responsabilità.
  • STEM: modellazione di processi, astrazione, controllo di flusso (condizioni e cicli), debugging di procedure.
  • Comunicazione: parafrasi, sintesi in una frase problema, linguaggio tecnico chiaro.

Materiali essenziali

  • PC con Arduino IDE, scheda Arduino UNO (o equivalente), cavo USB.
  • Serial Monitor per l’interazione, LED integrato (pin 13) e buzzer opzionale su pin 5.
  • Fogli per diagrammi/pseudocodice; regole di dialogo condivise.

Valutazione (formativa)

  • Qualità del diagramma di flusso (chiarezza, completezza, uso corretto di bivi e cicli).
  • Aderenza del pseudocodice al diagramma.
  • Funzionamento dello sketch e qualità dei commenti.
  • Comportamenti osservabili di ascolto e rispetto durante le simulazioni.

Inclusione e clima di classe

  • Ruoli rotanti (moderatore, portavoce, time-keeper, osservatore del linguaggio).
  • Consegnare una griglia di frasi utili per “io-messaggi” e parafrasi.
  • Tempi scanditi e check-point per favorire la partecipazione di tutti.

Progettiamo la pace 🙂