Archivi tag: arduino

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 🙂

Perché scegliere Arduino?

Mi è appena giuna una mail che ritengo interessante e rendo noto in quanto risponde, almeno spero, ad uno dei quesiti che spesso mi vengono posti: perché utilizzare Arduino e non altre piattaforme?

Questa la mia risposta:

On 14/mar/2012, at 18:42, Giacomo wrote:

Buonasera prof mi permetto di rubarle qualche minuto.
Sono un tecnico elettronico con mansioni di tester engineer presso una nota ditta emiliana.
Mi rivolgo a lei poiché la considero di grande professionalità e competenza nonché un professore che tutti gli appassionati come me avrebbero voluto avere .
Vengo al dunque. Vorrei avvicinarmi al magico mondo dei microprocessori e ho acquistato Arduino Uno.
Ora però le chiedo se secondo lei è un buon punto di partenza o se sarebbe meglio partire da starter kit tipo National o Dsp dove le cose non sono così semplificate come Arduino. In sostanza vale la pena di spendere energie Su Arduino con un linguaggio semplificato oppure offrirebbe più sbocchi imparare altri metodi professionali ?

Grazie

Distinti saluti

Mia risposta:

Salve Giacomo.

Grazie a te per avermi contattato.

La tua è una domanda molto interessante e devo dirti che è stato un dubbio che ho avuto quando incominciai ad utilizzare Arduino a scuola.
Ma perché ho scelto Arduino e non altre piattaforme?

La semplicità di Arduino lo rende ottimo come scheda di prototipazione, mi consente agevolmente di insegnare un linguaggio di programmazione e nello stesso tempo di introdurre concetti di base di elettronica realizzando immediatamente dispositivi che provocano soddisfazione nell’allievo, “faccio una cosa che serve” inoltre la disponibilità di moltissima documentazione e la sua grande diffusione mi permette di soddisfare le curiosità didattiche di gran parte dei miei allievi, creando, da parte loro, voglia di sperimentazione e ricerca, che per un docente credo sia la soddisfazione massima.

Tieni in conto che io utilizzo Arduino anche come stimolo motivazionale in quanto mediamente gli allievi con cui lavoro hanno lacune logiche matematiche anche gravi, ho quindi necessità di suscitare curiosità, farli appassionare e quindi dare un senso alla teoria e far capire che la matematica serve… quindi Arduino per imparare ad imparare.

Inoltre curva di apprendimento non ripida, posso impostare lezioni “ad oggetti” (nel senso fisico) che mi permettono di strutturare esperienze di laboratorio sempre più elaborate (unione di shield, shield ed elettronica esterna, ecc…)

E fino a questo punto solo motivi didattici.

Esiste poi la componente “costi” che non è da sottovalutare di questi tempi (soprattutto a scuola) poche centinaia di Euro per strutturare un corso che nel mio caso si sviluppa al 4′ e 5′ anno.

Ora per giungere alla tua domanda, dipende qual è il fine:

voglio incominciare ad imparare qualcosa sui microcontrollori?
devo andare in produzione con un prodotto?

Certo è che National, Texas offrono soluzioni molto più potenti, ma ritengo che la curva di apprendimento sia ben più ripida.
Il mio scopo è quello di dare una direzione con uno strumento che ritengo didatticamente valido e che mi permette di impostare una “forma mentale” o se vuoi “un modo di progettare” che ben si adatta allo sviluppo su altre piattaforme.

Se imparo e faccio cose complesse con Arduino sarò ben predisposto poi a fare anche con altre piattaforme.

In generale io prediligo sempre un approccio semplice, perché come docente mi devo porre nella condizione peggiore di chi non sa nulla, o che ha carenze anche in altre discipline e un mattoncino alla volta devo costruire i saperi, Arduino mi permette tutto ciò.

Questo non vuol dire che Arduino sia una scelta “sempliciotta” vuol dire solo che è un buon modo, anche per chi già sa di elettronica, di incominciare un percorso di apprendimento.

Ciò non toglie che tu possa progettare anche per andare in produzione con prodotti commerciali, costi bassi e velocità di implementazione, esistono moltissimi esempi, dalla domotica, al controllo remoto.

Quindi il mio consiglio è incomincia pure con Arduino, sperimenta studiane le possibilità e i limiti, tutto ciò potrà esserti utile per fare scelte, anche lavorative, adattabili alle diverse esigenze, sicuramente il tempo impiegato per studiarne la programmazione e l’elettronica non sarà tempo perso.

Un caro saluto.

Costruiamo un robot di carta

Sto leggendo con molto interesse la realizzazione di Mike Estee che ha progettato delle strutture meccaniche di cartone che assemblate possono essere utilizzate per costruire le parti meccaniche di un robot. Come detto da Mike, la carta è economica, facile da lavorare  e si possono realizzare molti progetti senza rompere per forza il salvadanaio e se ci pensate bene questo modo di agire calza a pennello con i budget delle nostre scuole 🙂

Le dinamiche fisiche/meccaniche, la matematica sono molto simili a quelle di un robot industriale, quindi fare robotica non solo con kit costosi ma utilizzando materiali di uso comune, elettronica e molta voglia di scoprire…

Cosa sto facendo in questo momento?
Sto realizzando la mia prossima lezione per i miei studenti per il corso di Alternanza Scuola Lavoro su Arduino, devo spiegare come pilotare un servomotore con Arduino ma probabilmente lo farò costruendo un piccolo braccio robot di cartone… vediamo se riesco.

Grazie Mike

Lezioni: