Archivi tag: programmazione

Appunti di programmazione su Arduino: controllo di flusso

if

L’istruzione if è composta da un blocco “condizione” che verifica se una deterniata condizione logica si verifica. Se la “condizione” risulta “Vera“, viene eseguita un blocco “istruzioni“, se la “condizione” risulta “Falsa“, non viene eseguito il blocco “istruzioni” e l’esecuzione del programma prosegue oltre l’istruzione if.

In altro modo, se la condizione di controllo, costituita ad esempio dal superamento di un valore analogico rispetto ad un valore dato, risulta vera, verrà eseguito il codice incluso tra le parentesi graffe che seguono il controllo, altrimenti se la condizione di controllo risulta falsa, non vengono eseguite le istruzioni dell’if  e l’esecuzione del programma continua con la porzione di codice che segue.

if (someVariable ?? value)
{
   doSomething;
}

(con ?? indichiamo l’operatore logico usato dalla condizione di controllo e può essere: =, =, ==, !=)

Continua a leggere

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.

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.

Installazione e primo utilizzo del compilatore Code::Blocks versione 10.05 – parte 1

Durante il corso di sistemi insegnerò a programmare in C ed ho deciso di utilizzare come IDE Code::Blocks, software free, open source e multipiattaforma, infatti è disponibile per Windows, Linux e Mac OS X.

Durante questa breve guida vedrete delle schermate riprese dal Ubuntu, ma non preoccupatevi, l’utilizzo e le funzionalità sono identiche per tutti i sistemi operativi

I’IDE può essere prelevato direttamente dal sito http://www.codeblocks.org/ dalla sezione download.

[wpspoiler name=”Download”]Click su Download

Selezionate “Download the binary release”:

Selezionate il vostro sistema operativo:

Selezionate il sito da cui effettuare il download:

[/wpspoiler]

[wpspoiler name=”Installazione Windows”]

Doppio click sul file scaricato

Esegui

Proseguite facendo click su Next

Accettate le condizioni di utilizzo facendo click su I agree

Per i componenti lasciate la selezione “Custom” e proseguite con Next

Selezionate la cartella dove installare Code::Blocks. La proposta di default è C:\Program Files\CodeBlocks, proseguite poi facendo click su Install

Alla richiesta di avviare Code::Blocks rispondete No

Dopo l’installazione premere su Next

Click su Finish

[/wpspoiler]

[wpspoiler name=”Installazione Ubuntu”]

Click su Ubuntu Software Center

Nel campo di ricerca inserite: codeblocks

Click su: Installa

Inserite la password di amministratore

Il programma è installato

Se non installato procedete installate il compilatore GNU C++ il g++, anche in questo caso vi verrà richiesta la password di amministratore per procedere nell’installazione.

[/wpspoiler]

[wpspoiler name=”Installazione Mac”]

  • doppio click sul file .dmg scaricato
  • copiare il contenuto dell’immagine sul vostro computer
  • doppio click sul file CodeBlocks

[/wpspoiler]

Creazione del progetto

Al primo avvio si presenterà una schermata per la scelta del compilatore e noterete che il GNU GCC Compiler è quello che viene rilevato, infatti appare l’indicazione “Detected”, cioè trovato sul sistema. Premete il pulsante sulla destra: “Set as default” per confermare la selezione del compilatore di default e poi fate click su ok:

I programmi che realizzeremo possono essere composti da uno o più file sorgenti, dopo la compilazione i file vengono uniti dal linker per costruire un unico file eseguibile. Tutti questi sorgenti vengono identificati come un unico progetto.

Continua a leggere