Appunti di programmazione su Arduino: comunicazione seriale

Serial.begin(rate)
Apre la porta seriale ed imposta la velocità di trasmissione (baud rate) seriale per trasmettere i dati. La velocità di trasmissione tipica per la comunicazione del computer è di 9600 bps (bps: baud rate per secondo)

Nota: attensione a non confondere la sigla bps con bit al secondo, nel nostro caso parliamo di boud, cioè simboli e ad ogni simbolo possono corrispondere più bit.

void setup()
{
   serial.begin(9600); // apre la porta seriale ed imposta
                       // la velocità di trasmissione a
                       // 9600 bps
}

Nota: quando si usa la comunicazione seriale, i pin digitali 0 (RX) e 1 (TX) non possono essere utilizzati contemporaneamente.

Serial.println(data)
Stampa i dati sulla porta seriale (invia i dati alla seriale e li visualizza) seguito da un ritorno a capo automatico ed un avanzamento linea.
Questo comando ha la stessa struttura della Serial.print() ma è più semplice da usare per la lettura sul serial monitor.

Serial.println(analogValue); // invia il valore di
                             // analogValue

Nota: Per ulteriori informazioni sui possibili utilizzi della Serial.println() e della Serial.print() fare riferimento al manuale on-line su Arduino.cc.

L’esempio che segue legge un valore dal pin analogico 0 ed invia i dati ogni secondo al computer:

void setup()
{
   Serial.begin(9600); // imposta la comunicazione seriale
                       // a 9600 pbs
}
void loop()
{
   Serial.println(analogRead(0)); // invia il valore analogico
   delay(1000);                   // fa una pausa di 1 secondo
}

Per le lezioni precedenti consultare la sezione Appunti di programmazione che trovate nella pagina Arduino di questo sito.

United States Navy Electricity & Electronics Training Series

La United States Navy dispone di un corso on-line per l’apprendimento di concetti di elettrotecnica ed elettronica di base: “Electricity & Electronics Training Series” indirizzato ad una formazione in auto-apprendimento. Ritengo che per la struttura modulare con cui e organizzato il corso e per la modalità di esposizione degli argomenti possa essere utile. Il corso è formato da 24 moduli (ogniuno in formato pdf) e collezione una gran quantità di argomenti di elettronica partendo da cosa è la corrente elettrica fino a giungere alle fibre ottiche.

Aggiungo questa risorsa nella pagina “Area Studenti” nella sezione: “Siti per lo studio dell’elettronica”

Appunti di programmazione su Arduino: numeri casuali

randomSeed(seed)

Imposta un valore di partenza per generare un numero casuale.

randomSeed(value); // assegna a value un valore casuale

Poiché Arduino non è in grado di creare un vero numero casuale la funzione randomSeed consente di inserire una variabile, una costante o un’altra funzione casuale per generare numeri “casuali” ancora più casuali 🙂
randomSeed viene utilizzata come base di partenza per generare un numero casuale, può essere utilizzata in diversi modi associandola ad altre funzioni, come ad esempio utilizzare il valore restituito da millis() funzione che restituisce il numero di millisecondi da quando la scheda Arduino è in funzione, o ancora con analogRead() per leggere il rumore elettrico attraverso un pin analogico, in questo modo trattandosi di rumore, che varia in modo caotico, la analogRead() restituirà un valore “abbastanza” casuale.

random(max)
random(min, max)

La funzione random permette di restituire numeri pseudo-casuali in un intervallo specificato tra un valore minimo e massimo.

value = random(100, 200); // assegna a 'value' un valore casuale
                          // compreso tra 100 e 200

Nota: utilizzare questa funzione dopo aver utilizzato la funzione randomSeed().

L’esempio che segue crea un numero casuale compreso tra 0 e 255 e fornisce un segnale PWM su un pin PWM uguale al valore casuale:

int randNumber; // variabile usata per memorizzare il valore casuale
int led = 10;   // un led con in serie una resistenza da 220 Ohm
                // inserito sul pin 10

void setup(){}  // non e' necessaria nessuna configurazione
void loop()
{
   randomSeed(millis());         // imposta millis() come base per
                                 // generare un numero
                                 // casuale da 0 a 255
   randNumber = random(255)      // numero casuale da 0 a 255
   analogWrite(led, randNumber); // uscita segnale PWM
   delay(500);                   // pausa di mezzo secondo
}

Come potete notare viene utilizzata la funzione randomSeed(millis()) per inizializzare il generatore di numeri casuali, agendo in questo modo siamo abbastanza sicuri di generare numri sempre diversi.

Per le lezioni precedenti consultare la sezione Appunti di programmazione che trovate nella pagina Arduino di questo sito.

TUTOMICS: Tutorial di fumetti per entrare nel mondo dell’elettronica, dell’open hardware e del fai da te

Lo scopo di questa iniziativa è quello di sviluppare una serie di tutorial a fumetti che permette alle persone di tutte le età, cultura e genere di entrare nel mondo dell’elettronica, dell’open hardware e del fai da te in un modo divertente e flessibile.

Questi tutorial sono presentati come i fumetti per renderli più accessibili, reinventando il modo di presentare l’elettronica in modo da renderlo molto più attraente per coloro che credono ancora che questa disciplina sia noiosa o difficile da affrontare.

Per maggiori informazioni e per sostenere l’iniziativa fate click sul banner che segue.

Tutomics from Reflexiona.biz on Vimeo.

After-school programming


Desiderate aprire un club di programmazione a scuola anche se siete dei principianti?

Una bella iniziativa di codecademy che mette a disposizione l’After School Code Kit, un documento che vi aiuterà ad aprire il vostro club di programmazione e pianificare le attività di apprendimento vostre o della classe o del club del “dopo scuola”.

Ma perché mai un giovane studente dovrebbero imparare a programmare?
La tecnologia sta cambiando radicalmente la nostra società e l’alfabetizzazione digitale è ormai una competenza fondamentale come la lettura e la scrittura.
Interagire con il mondo reale mediante la programmazione è qualcosa che affascina e coinvolge lo studente ed inoltre ne accentua le capacità logiche/matematiche e di comunicazione.

Certamente un’idea interessante da usare per aprire le scuole al territorio, rendendole un vero luogo di sperimentazione e di apprendimento.