Accendiamo un Led con Arduino e Scratch/MBlock

E' una delle prime esperienze che si fa con Arduino. E' alla portata degli alunni più giovani, anche delle medie. Se ci accontenta di montare il circuito senza una grande conoscenza dell'elettronica e della elettrotecnica, risulta essere una esperienza davvero gradevole per tutti. In giro per la rete troverete centinaia di articoli e disegni simili a questo. Io trovo particolarmente più semplice questo tipo di assemblaggio con relativa descrizione. Invitate sempre gli alunni a leggere la descrizione: per esperienza si gettano a capofitto sull'immagine ma è facile che sbaglino improvvisando cavetti e buchi non corretti.

 

Occorrente:

-Un Arduino o analogo con cavetto USB per alimentarlo e programmarlo

-Un led rosso (o del colore che ci piace)

-Tre cavetti con gli inserti metallici, detti jumper wire, maschio/maschio(consiglio due lunghi ed uno corto, colori a piacere)

-Una resistenza da 220 ohm (rosso rosso marrone oro)

-Una breadboard (o versione ridotta)

 

 

Se non vi è già capitato di metter mano ad un Arduino, guardate i due lati dove sono presenti le barre nere. Sui lati, sulla schedina sono riportati dei nomi e numeri come quelli in figura. Usateli come riferimento.

Per chi è a digiuno di breadboard, due considerazioni base: 

 

Sono basette di prototipazione in cui la corrente scorre con delle direzioni assegnate. Nei canali laterali dove compare spesso anche il simbolo + o - con delle linee rosse e blu, la corrente scorre nel verso della lunghezza della basetta. Sono presenti dei tratti non bucherellati ma non costituiscono una interruzione al circuito che è dentro la basetta. Nella parte centrale, la corrente scorre nel verso più corto, con lo zoccolo centrale che interrompe di fatto il circuito interno, per poi ricominciare analogamente nell'altro lato. Il senso interrompe sulle pareti interne. Le linee centrali sono spesso identificate da una lettera alfabetica a,b,c ecc

Se vi state chiedendo perché ci sia lo zoccolo centrale è perché risulta più comodo usarlo come riferimento per i test sui chip operazionali o simili come quello in figura sotto, costruiti con questa forma di ragnetto, per non far arrivare lo stesso segnale ai piedini differenti. In genere la "pancia" del chip è pari pari alla larghezza della scalanatura della nostra breadbord.

Risultati immagini per operazionale chip 

Istruzioni:

- se non è già piegato, il piedino del led più lungo va piegato leggermente per facilitare l'inserimento, formando una specie di R. Le due zampette rappresentano il nostro meno (corta) e più (lunga piegata)

- colleghiamo un cavo di quelli più lunghi alla porta con scritto POWER → GND. Ce ne sono due, uno vale l'altro.

- lo stesso cavo lo colleghiamo dall'altra parte della breadboard dove c’è il simbolo - meno

- mettiamo la resistenza come un ponte in mezzo allo zoccolo/pista centrale. Non è importante scegliere i fori, cerchiamo di metterla però dritta.

- al lato in basso della resistenza mettiamo un cavetto corto che va verso il - meno

- dall'altro lato della resistenza mettiamo il led

- il lato più corto è in corrispondenza del piede della resistenza

- sotto la zampetta piegata del led, mettiamo un cavetto lungo  che portiamo alla porta DIGITAL → 13 (o una qualsiasi pin di quel lato, a patto di segnarsi il numero!)

 

Programma

Trovo particolarmente utile, soprattutto per i più giovani, usare un linguaggio a blocchi per programmare il nostro Arduino. Le scelte sono tante. Ne suggerisco due: Snap4Arduino e mBlock. Entrambe le soluzioni mettono a disposizione una sorta di ambiente grafico simile a Scratch con blocchi colorati da installare stand-alone, oppure installando una estensione detta mLink di Chrome, possiamo usare le medesime funzionalità direttamente da browser. Qui a voi la scelta, sono molto validi entrambi. Snap4Arduino è leggermente più generico, mentre mBlock è un po' più scarno di comandi ma non se ne avverte la differenza. Nella figura sotto, ho usato mBlock con estensione per browser su piattaforma Linux con Firefox per giunta. Abbiate cura di seguire le istruzioni della parte download. Una volta nell'area ONLINE CREATE bisogna cliccare su uno dei bottoni con il più in basso a sinistra. L'IDE parte con la connessione ad un robottino CODEY mentre a noi serve aggiungere Arduino UNO che ovviamente sarà compatibile con qualsiasi versione originale o cinese voi abbiate. Premete il bottone azzurro collega e siamo pronti a programmare. Su linux, dopo aver scaricato il tool/demone mLink ed attivato con il comando da shell mblock-mlink start, se non abilita la connessione, controllate che le /dev/ttyAM0 o /dev/ttyUSB0 abbiano i permessi di scrittura/lettura col comando sudo chmod a+rw /dev/ttyACM0. In alcune vecchie versioni di Windows, potrebbe esserci qualche noia con il driver di Arduino. Per velocità, vi consiglio di installare l'IDE di Arduino che potete reperire qui. Tra le spunte di installazione c'è proprio il driver che cerchiamo.
Possiamo passare a piazzare i nostri blocchi. Per questo esercizio, peschiamo blocchi dalle sezioni SITUAZIONI, CONTROLLO, PIN. Una volta ultimato, non ci resta che schiacciare la bandierina verde sulla sinistra e verificare il comportamento del nostro led! In figura sotto è riportato un esempio dove il led è collegato al pin, sempre digitale, 13

Sul bordo destro, c'è una piccola linguetta dove potete mostrare ai vostri alunni il corrispondete codice C. Nel nostro caso:

// generated by mBlock5 for <your product>
// codes make you happy

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

void _delay(float seconds) {
  long endTime = millis() + seconds * 1000;
  while(millis() < endTime) _loop();
}

void setup() {
  pinMode(13,OUTPUT);

}

void _loop() {
}

void loop() {
  digitalWrite(13,1);
  _delay(1);
  digitalWrite(13,0);
  _delay(1);

  _loop();
}

 Solitamente possiamo semplifica il codice proposto se usiamo direttamente l'IDE Arduino, senza scomodare interfacce a blocchi. In questo caso suggerisco di usare il seguente codice per uno "sketch", un progettino semplice:

int led = 13; //o il pin digitale scelto
 
void setup() {                
  //inizializziamo il PIN come OUPUT, ovvero "non cattura" dati
  pinMode(led, OUTPUT);     
}
 

void loop() {
  digitalWrite(led, HIGH);   // accende il LED (HIGH è il voltaggio +5V)
  delay(1000);               // aspetta un secondo
  digitalWrite(led, LOW);    // spegne il LED 
  delay(1000);               
}

Potete proporre come ulteriore esercizio di replicare tre collegamenti ad altrettanti led collegati ad altre porte digitali e programmare un piccolo semaforo rosso, giallo, verde. 


Stampa