Arduino chi era costui?
Inviato: martedì 1 marzo 2016, 21:45
Se ne parla ovunque e tutti ne parlano.... ma non sempre a proposito.
Proviamo a desrcivere cosa è Arduino e cosa può fare per noi fermodellisti, come può aiutarci a risolvere i problemucci vari del nostro plastico.
Innanzi tutto quando parliamo di Arduino, parliamo di hardware. Il progetto, italiano una volta tanto, è nato nel 2005 in mabito universitario e da lì è cresciuto, generando una moltitudine di modelli per 1000 applicazioni: dagli Arduino indossabili sino ai Mega con moltissime porte.
Ma cos'è? In maniera mooolto sintetica lo possiamo descrivere così: è una scheda composta da un microcontrollore che gestisce una serie di porte di ingresso e uscita.
Per decidere come gestire gli eventi di ingresso e uscita serve un programma che deve essere caricato sul nostro Arduino. E qui sta l'idea che ha fatto esplodere la Arduino mania: gli (allora) studenti che hanno messo a punto la piattaforma hanno creato un'IDE (che in inglese sta per Integrated Development Environment - cioè ambiente di sviluppo integrato) che altro non è che un programma (facilissimo da usare) che può girare su un PC windows, o su un iMac o su un PC Linux.
Collegando il nostro Arduino al PC con un normale cavo USB, l'IDE lo riconosce e permette, schiacciando un solo tasto, di caricargli il programma che abbiamo creato.
Da quel momento Arduino diventa autonomo (poi vediamo meglio che vuol dire) e può lavorare senza cordone ombelicale con il PC (leggi cavo USB).
Bene, dopo queste informazioni di base, cerchiamo di capire come funziona.
Per iniziare, dobbiamo immaginare il nostro Arduino come una macchinetta che fa sempre le stesse cose e le fa all'infinito.
Cosa sono queste cose?
Abbiamo visto che Arduino è dotato di porte; quindi le cose (più importanti) che può fare sono:
a) leggere lo stato (o una tensione) di alcune porte che definiremo di input
b) scrivere uno stato su alcune porte che definiremo di output.
E questo replicato all'infinito.
Facciamo un esempio.
colleghiamo un tasto su una porta di input ed il led rosso di un segnale su una porta di output
il programma leggerà con continuità la porta di input e se troverà un valore alto, attiverà l'uscita a cui è collegato il segnale.
ecco il programma ispirato da un esempio del sito provalotu.com:
const int buttonPin = 2; // Settiamo il pin dove è collegato il pulsante - sarà un pin di ingresso
const int ledPin = 13; // Impostiamo il pin cui è collegato il led - sarà un pin di uscita
int buttonState = 0; // Introduciamo una variabile "buttonState" nella quale verrà inserito lo stato del pulsante (aperto o chiuso)
void setup() // definiamo come si devono comportare le porte
{
pinMode(ledPin, OUTPUT); // Impostiamo il led come Output (porta 13)
pinMode(buttonPin, INPUT); // Impostiamo il pulsante come Input (porta 2)
}
void loop() // è il corpo principale del programma: verrà ripetuto all'infinito fino che arduino resterà acceso. Se lo spegniamo il programma resterà in memoria pronto a ripartire non appena ridaremo alimentazione
{
buttonState = digitalRead(buttonPin); //Leggiamo lo stato del pulsante e lo inseriamo nella variabile buttonState
if (buttonState == HIGH) { //Ora, se il pulsante viene premuto (valore Alto perchè chiude il circuito)
digitalWrite(ledPin, HIGH); //verrà impostato il valore Alto al led che si accenderà
}
else { / /altrimenti, se il pulsante non viene premuto,
digitalWrite(ledPin, LOW); //imposta il valore basso al led che si spegnerà
}
}
questo è lo schema di collegamento del pulsante all'arduino.
La rilflessione sorge spontanea: che me ne faccio di tutta sta elettronica per accendere un segnale?
Giusto, ma in realtà questo è solo un primo passo verso un sistema che mi permetterà di muovere deviatoi, accendere quadri sinottici, cambiare stato a segnali alla presenza di determinate condizioni logiche.
Intendiamoci, nulla che non si possa fare anche in altro modo. Ma con questo sistema si può fare facilmente e concedersi il lusso di cambiare idea e riprogrammare il nostro microcontrollore per variare
le condizioni di apertura di un segnale o di movimento di un deviatoio.... fino a implementare il codice che trasforma tutto in un decoder DCC e fare replicare tutte le azioni ad un computer o
da una centrale...... [continua]
Proviamo a desrcivere cosa è Arduino e cosa può fare per noi fermodellisti, come può aiutarci a risolvere i problemucci vari del nostro plastico.
Innanzi tutto quando parliamo di Arduino, parliamo di hardware. Il progetto, italiano una volta tanto, è nato nel 2005 in mabito universitario e da lì è cresciuto, generando una moltitudine di modelli per 1000 applicazioni: dagli Arduino indossabili sino ai Mega con moltissime porte.
Ma cos'è? In maniera mooolto sintetica lo possiamo descrivere così: è una scheda composta da un microcontrollore che gestisce una serie di porte di ingresso e uscita.
Per decidere come gestire gli eventi di ingresso e uscita serve un programma che deve essere caricato sul nostro Arduino. E qui sta l'idea che ha fatto esplodere la Arduino mania: gli (allora) studenti che hanno messo a punto la piattaforma hanno creato un'IDE (che in inglese sta per Integrated Development Environment - cioè ambiente di sviluppo integrato) che altro non è che un programma (facilissimo da usare) che può girare su un PC windows, o su un iMac o su un PC Linux.
Collegando il nostro Arduino al PC con un normale cavo USB, l'IDE lo riconosce e permette, schiacciando un solo tasto, di caricargli il programma che abbiamo creato.
Da quel momento Arduino diventa autonomo (poi vediamo meglio che vuol dire) e può lavorare senza cordone ombelicale con il PC (leggi cavo USB).
Bene, dopo queste informazioni di base, cerchiamo di capire come funziona.
Per iniziare, dobbiamo immaginare il nostro Arduino come una macchinetta che fa sempre le stesse cose e le fa all'infinito.
Cosa sono queste cose?
Abbiamo visto che Arduino è dotato di porte; quindi le cose (più importanti) che può fare sono:
a) leggere lo stato (o una tensione) di alcune porte che definiremo di input
b) scrivere uno stato su alcune porte che definiremo di output.
E questo replicato all'infinito.
Facciamo un esempio.
colleghiamo un tasto su una porta di input ed il led rosso di un segnale su una porta di output
il programma leggerà con continuità la porta di input e se troverà un valore alto, attiverà l'uscita a cui è collegato il segnale.
ecco il programma ispirato da un esempio del sito provalotu.com:
const int buttonPin = 2; // Settiamo il pin dove è collegato il pulsante - sarà un pin di ingresso
const int ledPin = 13; // Impostiamo il pin cui è collegato il led - sarà un pin di uscita
int buttonState = 0; // Introduciamo una variabile "buttonState" nella quale verrà inserito lo stato del pulsante (aperto o chiuso)
void setup() // definiamo come si devono comportare le porte
{
pinMode(ledPin, OUTPUT); // Impostiamo il led come Output (porta 13)
pinMode(buttonPin, INPUT); // Impostiamo il pulsante come Input (porta 2)
}
void loop() // è il corpo principale del programma: verrà ripetuto all'infinito fino che arduino resterà acceso. Se lo spegniamo il programma resterà in memoria pronto a ripartire non appena ridaremo alimentazione
{
buttonState = digitalRead(buttonPin); //Leggiamo lo stato del pulsante e lo inseriamo nella variabile buttonState
if (buttonState == HIGH) { //Ora, se il pulsante viene premuto (valore Alto perchè chiude il circuito)
digitalWrite(ledPin, HIGH); //verrà impostato il valore Alto al led che si accenderà
}
else { / /altrimenti, se il pulsante non viene premuto,
digitalWrite(ledPin, LOW); //imposta il valore basso al led che si spegnerà
}
}
questo è lo schema di collegamento del pulsante all'arduino.
La rilflessione sorge spontanea: che me ne faccio di tutta sta elettronica per accendere un segnale?
Giusto, ma in realtà questo è solo un primo passo verso un sistema che mi permetterà di muovere deviatoi, accendere quadri sinottici, cambiare stato a segnali alla presenza di determinate condizioni logiche.
Intendiamoci, nulla che non si possa fare anche in altro modo. Ma con questo sistema si può fare facilmente e concedersi il lusso di cambiare idea e riprogrammare il nostro microcontrollore per variare
le condizioni di apertura di un segnale o di movimento di un deviatoio.... fino a implementare il codice che trasforma tutto in un decoder DCC e fare replicare tutte le azioni ad un computer o
da una centrale...... [continua]