PDA

Visualizza Versione Completa : Arduino 2! La vendetta della programmazione.



Enrico rossi
01-10-2014, 01:25
La fine arte della programmazione:

In elettronica si disegnavano gli schemi a blocchi per descrivere interamente le funzionalità del circuito e poi si popolava con i componenti; con i microcontrollori si descrive la serie di operazioni che vanno eseguite, anche in base agli eventi e alle rilevazioni dei sensori, fino a creare il flusso logico completo.
Questo livello di astrazione è indispensabie per dare l'ossatura al programma che si scriverà nel liguaggio e con le modalità previste da arduino.
Vi consiglio di usare un metodo per lavorare e cercare di rispettare anche l'esecuzione delle parti apparentemente piu noiose: tutto questo è indispensabile per poter crescere e superare le difficoltà che comunque la programmazione degli algoritmi più sofisticati ti metterà di fronte.
Secondo il team di arduino e anche secondo me programmare è una forma d'arte, dove la creatività puo fare la differenza. Ci sono tante strade per arrivare alla soluzione finale, ma poche sono veramente efficienti.
Con i pc la programmazione del software è diventata ipertrofica, con applicazioni da migliaia e migliaia di righe di codice, magari destinate ad abbellire un' interfaccia grafica senza apportare nulla sull'efficienza del programma stesso.
Con i microcontrollori e con arduino ogni riga di programma si porta via un po di memoria. Arduino ha 32mila Kbyte circa di memoria.
Con cosi poca memoria una progettazione attenta nell'applicazione per trovare una giusta media fra prestazioni e dimensioni del programma fa una significativa differenza.

È ora di imparare l'arduinese

Graziee al lavoro fatto dal team di arduino, il linguaggio che abbiamo a disposizione per programmare è una versione semplificata di c/c++ e arricchito da una serie di comandi creati apposta per darti accesso alle funzioni specifiche della scheda.
Come tutti gli altri linguaggi anche questo ci permette di descrivere e strutturare il diagramma di flusso precedentemente creato in una serie di istruzioni che possono essere compilate in un altro linguaggio(codice oggetto) che può essere trasferito sul microcontrollore per la sua esecuzione.
Come accade per le lingue straniere basta poco per imparare a dire”buon giorno” mentreper l'apprendimento vero e proprio passa dallo studio della grammatica e del vocabolario.


Flusso logico

Come strutturare le idee affinche possa diventare un programma?
Basta trasformarli in piccoli passi logici che descrivono funzionalmente quello che deve succedere. I diagrammi di flusso sono di per se una forma di programmazione e sono ad un tale livello di astrazione da essere da un lato comprensibili a tutti e dall'altro sufficienti a descrivere un programma nella sua totalità. Con un diagramma di flusso il “programmatore” è in grado di scrivere il codice. Un diagramma di flusso può essere visto come una serie di frasi che descrivono passo passo quello che succed, utilizzando delle strutture grafiche predefinite per evidenziare gli elementi tipici della programmazione.
6960

esempio di diagramma di flusso

Le variabili

Il calcolatore svolge operazioni matematiche,acquisisce valori e svolge delle “attività” in base al confronto fra valori e stati logici. Adesso è necessario fare un piccolo sforzo e ricordare l'algebra imparata a scuola per trovare rapidamente le analogie e comprendere il concetto di variabili. Espressioni come “x=5” o “y=3” e “z=x+y” ci dicono che un certo x assume un valore di 5 una y che assume valore 3 e z che a come valore la somma di x e y, cioè 8. se cambiate i valori di x e y il risultato cambia di conseguenza. Con i programmi troviamo ancora questo tipo di notazione matematico con le variabili, alle quali pero è necessario aggiungere un ulteriore dimensione: il tipo. Nel caso di arduino ci sono i seguenti tipi:
-int=interi;
-float=numeri con virgola;
-bool= stati logici;
-char=caratteri;
-byte= singoli byte.
6961

Ciascun tipo può avere delle varianti per ottimizzare la quantità di memoria e il carico di lavoro sul microprocessore (listato 1).
Nel programma si useranno delle parole che il programma interpreterà come il valore ad esse assegnato e quindi non bisognerebbe usare lettere a caso, ma etichette in grado di semplificare la lettura del codice.
Le variabili sono utilizzate con gli operatori che ci permettono di fare somme, sottrazioni,moltiplicazioni, confronti, operazioni logiche e cosi via.(listato2)

La struttura di controllo
6950

le strutture di controllo sono il cuore del processo logico di un programma e permettono di definire come questo procede in base ai risultati di operazioni sulle variabili o in conseguenza di dati in ingresso. Quindi con arduino abbiamo delle parole che sono riservate alla creazione di strutture di controllo e pertanto non possono essere utilizzate come variabili ed etichette.

If/else:
struttura classica e semplice della programmazione; in base all'espressione contenuta fra parentesi esegue due blocchi diversi di codice. Se l'espressione è vera verra eseguito il codice che segue, se è falsa verra eseguito tutto il codice che segue l'else(listato3). L'if puo anche essere usato senza l'uso dell'else(listato 4)
6962
for:
è un'istruzione che serve per creare un ciclo che ripete il codice un numero finito di volte(listato 5)


switch case:
istruzione che serve quando ci sono piu strade da percorrere in base al valore della variabile switch(variabile) . Per ogni valore da gestire si usa il case(valore): seguito dal codice da eseguire in quello specifico caso. Quando viene eseguito un case verranno eseguiti anche i sucessivi case. Se non si vuole che arduino faccia questo si usa il break che fa saltare tutti i test successivi e puo essere usato anche in altre istruzioni. (listato 7)
6963
while:
continua a ripetere all'infinito il codice all'interno del suo blocco finche l'espressione indicata diventa falsa. Bisogna pero che sia possibile uscire dall'istruzione, se no diventa un ciclo infinito (loop).(listato 8)

6951
do...while:
si comporta come il while ma poiché il test per la ripetizione è alla fine del blocco, il codice in esso contenuto è eseguito almeno una volta( listato 9).
continue:
puo essere utilizzato per far saltare parte dell'istruzione nelle istruzioni do,for o while. (listato 10)
6964
goto:
permette di andare ad un punto definito da un etichetta.

Return:
interrompe lo svolgimento di una funzione e restituisce un risultato alla funzione che l'ha chiamata (listato 11).

La struttura base degli sketch

ogni programma ha una strutura predefinita: all'inizio ci sono le dichiarazioni delle variabili, messe all'inizio per questioni di leggibilità e praticità. Poi c'è la struttura di setup e infine c'è la struttura che viene eseguita come programma e viene ripetuta se necessario anche all'infinito. (listato 12)
6965
le funzioni:

è grazie alle funzioni proprie dell'hardware e software di arduino che possiamo passare dal mondo sofware a quello dell'hardware. Le funzioni sono istruzioni speciali gia predefinite dalle librerie oppure con la possibilità di crearle noi che ci aiutano e semplificano molti lavori che fa arduino. Come per le porte digitali e analogiche.


Le librerie:
le libreria sono insiemi di funzioni,srutture e variabili che ci permettono di semplificare il nostro lavoro e rendere più semplice il codice del programma, cosi avremo vantaggi sia nella praticità del codice sia nella sua memoria.

6966
6968
schema semplificativo.

bibliografia:
-libro primi passi con arduino ( ve lo consiglio)
-le mie conoscenze
foto prese dal libro.

Jefri
01-10-2014, 02:46
Grazie per la condivisione Enrico :-)

ALGRANATI
01-10-2014, 09:47
Posso articolizzarlo?

Enrico rossi
01-10-2014, 10:24
Volevo cambiare le foto che sono pessime. Oggi cerco di farle meglio.


Inviato con un discus volante non identificato

mentalità ultras
01-10-2014, 11:39
Enrico ma il libro da cui hai fatto le foto è uno specifico di Arduino oppure è un libro di testo scolastico?

Enrico rossi
01-10-2014, 11:41
è uno specifico di arduino. si intitola primi passi con arduino. :)

Ale87tv
01-10-2014, 22:05
benissimo! non ci ho capito un cazzo... ma benissimo!

Pesce Bastardo
09-10-2014, 20:06
E possibile programmarlo per queste pompe qui? http://www.acquaefiltri.net/web2/negozio/reefline-linea-per-acquari-marini-e-di-barriera/pompe-dosatrici/motore?vmcchk=1

ovviamente se uno dovesse partire nell'acquisto, si utilizzerebbe anche per altro.

Enrico rossi
09-10-2014, 20:12
Se le pompe vanno con la 220 le puoi pilotare con arduino mediante rele :)


Inviato con un discus volante non identificato

billykid591
09-10-2014, 20:27
Se le pompe vanno con la 220 le puoi pilotare con arduino mediante rele :)


Inviato con un discus volante non identificato

Esatto anche se penso funzionino a 12 volt o comunque a bassa tensione...in tal caso credo basterebbe anche un piccolo transistor di media potenza

Enrico rossi
09-10-2014, 20:34
Gia [emoji106]


Inviato con un discus volante non identificato

Pesce Bastardo
09-10-2014, 20:37
Sono pompe dosometriche non credo che vadano a 220V quello che mi domandavo, è pilotarle in base al numero di giri da fargli fare per dosare i liquidi

billykid591
10-10-2014, 11:13
Sono pompe dosometriche non credo che vadano a 220V quello che mi domandavo, è pilotarle in base al numero di giri da fargli fare per dosare i liquidi

Si può fare però bisognerebbe conoscere bene le specifiche tecniche delle pompe.