Archivi tag: arduino

A breve l’IDE Arduino in italiano

Ricevo dalla redazione di Elettronica In, che ringrazio, la segnalazione che il team di Arduino rilascerà nelle prossime settimane la versione dell’IDE in tutte le lingue, tra cui anche l’italiano. A pochi giorni dall’annuncio, grazie al valente lavoro di Sara Gallo e di Simone Majocchi la versione nella nostra lingua é già pronta! Un fantastico lavoro che ridurrà ancora di piú i tempi per l’apprendimento all’uso della piattaforma Arduino.

Per maggiori informazioni: news di Elettronica In

Annuncio sito Arduino: Translations of the IDE

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.

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.

Tutti i modi per distruggere Arduino: puntata 1

Non preoccupatevi questo non vuole essere un modo alternativo per divertirsi e misurare i limite estremi di Arduino, magari facendolo cadere da altezze incredibili o sottoponendolo a limiti estremi di temperatura (cosa che per altro ho fatto 🙂 ), ma un mia personale raccolta di appunti che derivano dalle richieste che mi giungono dai lettori del mio blog, da articoli letti on-line e dall’incredibile fantasia dei miei allievi che trovano sempre nuovi modi per far circolare gli elettroni dove non dovrebbero andare.

Quindi parliamo di collegamenti non corretti.

Un buon modo per danneggiare Arduino è collegare direttamente un qualsiasi piedino I/O impostato con uscita HIGH a GND, in questo caso si ha il passaggio di una sovracorrente che distrugge il piedino.

Se consultate i datasheet del microcontrollore viene specificato che la corrente massima che può circolare su ogni piedino è di 40mA, la resistenza interna su ogni piedino è di soli 25 Ohm ed un cortocircuito (colegamento diretto tra +Vcc e GND) può far fluire una corrente di 200 mA più che sufficienti per danneggiare la scheda.

Perché dico 200 mA?

Dalla legge di Ohm: V=R*I da cui I=V/R

allora, sapendo che HIGH equivale a +5V ed essendo la R del pin di 25 Ohm avro che:

I = 5/25 = 0,2A = 200 mA

Di seguito porzione dello schema elettrico della scheda Arduino UNO (link a schema completo)

Piccola parentesi meccanica.

La scheda è sufficientemente resistente come faccio a dirvi questo?
Ho disposto un Arduino UNO ad un’altezza di circa 2,5 m per realizzare un controllo presenze in una stanza mi è caduta di piatto lato componeti, non è successo nulla… molta fortuna? Sicuramente 🙂