Archivi autore: admin

Appunti di programmazione su Arduino: costanti

Il linguaggio Arduino ha alcuni valori predefiniti che sono chiamati costanti. Le costanti vengono usate per rendere più semplice la lettura di un programma.

Le costanti sono classificate in gruppi:

TRUE/FALSE

Queste sono costanti booleane che definiscono i livelli logici. FALSO è definito come 0 (zero) mentre TRUE è spesso definito come 1, ma anche qualsiasi valore diverso da 0. Quindi in logica booleana -1, -2 e -200 sono tutti definiti come TRUE.

if ( b == TRUE);
{
  soSomething;
}

HIGH/LOW

Queste costanti definiscono il livello del pin come HIGH (alto) o LOW (basso) e sono usati quando si legge o scrive su un pin digitale.
HIGH è definito come livello logico 1, ON oppure 5 volt, mentre LOW è definito come livello logico 0, OFF o 0 volt.

digitalWrite(13,HIGH); // il pin 13 si trova a livello logico 1

INPUT/OUTPUT

Costanti usate con la funzione pinMode() per definire in che modalità viene utilizzato un pin , come INPUT (ingresso) o come OUTPUT (uscita)

pinMode(13, OUTPUT) // il pin 13 viene definito come OUTPUT

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

Electro-Calc

Electro-Calc è un software gratuito per sistemi Windows sviluppato per facilitare l’ideazione di progetti elettrici ed elettronici. Non richiede installazione e può funzionare direttamente da chiavetta USB. L’interfaccia utente del software non è in lingua inglese, ma l’utilizzo è comunque semplice per chi ha conoscenze elettroniche.

Mettiamo in ordine il codice creato con Arduino, usiamo: Upload And Retrieve Source

Vi segnalo Upload And Retrieve Source un’estensione all’IDE di Arduino di cui ho trovato segnalazione su IDEO Labs (consiglio di aggiungere ai vostri bookmarks). L’estensione è utilissima e sicuramente proverò ad utilizzarla per rendere gli sketch pubblici su Github, ma anche recuperarli in un secondo momento, in modo semplice direttamente dall’IDE Arduino. Sicuramente un modo per tenere ordinato ed aggiornato il codice che produciamo.
Seguite il link per leggere il tutorial che vi spiega come usare l’estensione.

Appunti di programmazione su Arduino: aritmetica


Gli operatori aritmetici includono: addizioni, sottrazioni, moltiplicazioni e divisioni.
Queste operazioni restituiscono, rispettivamente: la somma, la differenza, il prodotto e il quoziente tra i due operandi.

y = y + 3;
x = x -7;
i = j * 6;
r = r / 5;

L’operazione viene eseguita usando il tipo dei dati degli operandi, così ad esempio l’operazione 9/4 (dove 9 e 4 sono stati in precedenza dichiarati di tipo intero) darà come risultato 2 e non 2,25, appunto perché 9 e 4 sono stati dichiarati interi e quindi non si avrà un risultato con punto decimale.

Questo significa anche che l’operazione può causare un overflow se il risultato eccede il valore massimo che può essere memorizzato con il tipo di dato che si sta utilizzando.

Se si sta eseguendo un’operazione tra operandi di tipo diverso, per il calcolo verrà usato il tipo di dati più grande.

Ad esempio se uno degli operandi è di tipo float e l’altro è di tipo int verrà utilizzato il calcolo in virgola mobile per il calcolo.

Bisogna quindi scegliere la dimensione dei tipi delle variabili in modo appropriato in modo che i risultati non vadano in overflow.

E’ opportuno sapere sempre con esattezza i valori che ogni volta la variabile assume, positivi e negativi, ad esempio: (0 – 1) oppure (0 – -32768).

Per la matematica che usa frazioni si dovranno utilizzare variabili di tipo float, ma bisogna essere consapevoli degli svantaggi che provoca questa scelta: dimensioni grandi dei numeri (necessità di maggiore memoria per i ccalcoli), calcoli più lenti.

Nota: potete utilizzare il cast operator per convertire il tipo di una variabile in un altro.

Ad esempio:

(int)myFloat

converte immediatamente la variabile myFloat in tipo intero.

Ad esempio:

i = (int)3.6

sarà uguale a 3

Assegnazioni composte

Le assegnazioni composte combinano le operazioni aritmetiche con assegnazioni di variabili e vengono largamente usate nei cicli for. Le assegnazioni composte più comuni includono:

x++  // uguale a x = x + 1, incrementa x di +1
x--  // uguale a x = x - 1, decrementa x di -1
x+=y // uguale a x = x + y, incrementa x di +y
x-=y // uguale a x = x - y, decrementa x di -y
x*=y // uguale a x = x * y, moltiplica x per y
x/=y // uguale a x = x / y, divide x per y

Nota: per esempio, x*=3 moltiplica per tre il valore precedente di x e riassegna il risultato a x.

Operatori di confronto

Il confronto tra variabili o costanti è spesso utilizzato nelle istruzioni if, while ma anche nei cicli for, per verificare se una determinata condizione è vera. Gli operatori di confronto sono:

x==y // x è uguale a y
x!=y // x è diverso da y
x>y  // x è maggiore di y
x>=y // x è maggiore o uguale a y

Opratori logici
Gli operatori logici vengono usalmente utilizzati per confrontare due espressioni e restituiscono un valore TRUE (vero) o FALSE (falso).

Ci sono tre operatori logici:

AND logico:

if (x>0 && x<5) // vera se solo se entrambe le espressioni sono vere

OR logico:

if (x>0 || y>0) // vero se una delle due espressioni è vera

NOT logico:

if (!x>0) // vera solo se l'epressione è falsa

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

Intervista “doppia” a Massimo Banzi e Sergio Tanzilli

Ricevo la segnalazione dalla rivista Elettronica In, che ringrazio, della doppia intervista realizzata a Massimo Banzi e Sergio Tanzilli che consiglio di vedere. Una conversazione di poco più di 5 minuti in cui è evidente la passione nell’elettronica e l’amore per il proprio lavoro, certamente un bel messaggio a chi desidera fattivamente “fare e costruire” il proprio futuro.

A margine di World Wide Rome (www.worldwiderome.it), Simone Majocchi intervista per ElettronicaIn, in stile “Le Iene”, due personaggi di spicco dell’elettronica italiana: Massimo Banzi, animatore del progetto open-source Arduino (www.arduino.cc) e di tante altre iniziative e Sergio Tanzilli, co-fondatore di ACME Systems (www.acmesystems.it) e fautore dei sistemi Linux embedded.