Arduino: Programmazione



Documenti analoghi
ARDUINO. Misurare e controllare. Riccardo Barberi. Dip. di Fisica Univ. Della Calabria Rende (CS), Italy

sulla PROGRAMMAZIONE del MICROCONTROLLORE

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

La selezione binaria

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Codifica: dal diagramma a blocchi al linguaggio C++

void setup() // funzione di configurazione dei Input/Output { pinmode(pin, OUTPUT); // setta il 'pin' come uscita (output) } 1

Richiesta pagina PHP (es: index.php)

Funzioni in C. Violetta Lonati

Concetto di Funzione e Procedura METODI in Java

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Le variabili. Olga Scotti

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

12 - timer da cucina display a 4 cifre

I file di dati. Unità didattica D1 1

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Introduzione alla programmazione in C

GESTIONE INFORMATICA DEI DATI AZIENDALI

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Corso di Informatica

INTERAZIONE ELETTRONICA

10 - Programmare con gli Array

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Il processore. Il processore. Il processore. Il processore. Architettura dell elaboratore

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Calcolare il massimo di una lista

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Matematica in laboratorio

4 3 4 = 4 x x x 10 0 aaa

Appunti di Sistemi Elettronici

Laboratorio di Informatica

Java: Compilatore e Interprete

Programmazione di Base Variabili Array Funzioni Strutture di controllo. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

D sistema d allarme con sensori magnetici

Programmare in Java. Olga Scotti

Algoritmi di Ricerca. Esempi di programmi Java

Gli algoritmi: definizioni e proprietà

Variabili e tipi di dato

Algebra Booleana ed Espressioni Booleane

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

LABORATORIO DI SISTEMI

Descrizione di un algoritmo

Arduino: manuale di programmazione wiring

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Progetti reali con ARDUINO

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

Lezione 8. La macchina universale

DAL DIAGRAMMA AL CODICE

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

I componenti di un Sistema di elaborazione. Memoria centrale. È costituita da una serie di CHIP disposti su una scheda elettronica

9^ parte : Come pilotare motori dc utilizzando il motor shield. Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

TUTORIAL: COME USARE UN LM35 PER MISURARE UNA TEMPERATURA SU TUTTA LA SCALA CENTIGRADA

Nozione di algoritmo. Gabriella Trucco

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag <script> inserito nella sezione <head> con la seguente sintassi:

Connessione ad internet

Elementi di Informatica

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Aritmetica dei Calcolatori 2

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Invio SMS. DM Board ICS Invio SMS

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Convertitori numerici in Excel

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

FONDAMENTI di INFORMATICA L. Mezzalira

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

SISTEMI DI NUMERAZIONE E CODICI

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

Struttura del calcolatore

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

ALGEBRA DELLE PROPOSIZIONI

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Inizializzazione, Assegnamento e Distruzione di Classi

Matlab: Strutture di Controllo. Informatica B

Informatica. Rappresentazione dei numeri Numerazione binaria

RICERCA DI UN ELEMENTO

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi

Dispense di Informatica per l ITG Valadier

Linguaggio C. Fondamenti. Struttura di un programma.

Esempi di algoritmi. Lezione III

LINGUAGGI DI PROGRAMMAZIONE

INFORMATICA 1 L. Mezzalira

Transcript:

Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite in eseguibile e poi trasferite sulla scheda Arduino.

Linguaggio C: Struttura di un programma main() { // istruzioni di programma da eseguire

Linguaggio Arduino: Struttura di un programma void setup() { // istruzioni da eseguire una sola volta void loop() { // istruzioni da eseguire ciclicamente

Linguaggio C: Compilazione ed esecuzione Per eseguire un programma in linguaggio C è necessario compilarlo. Il processo di compilazione trasforma le istruzioni scritte in linguaggio naturale in una serie di istruzioni macchina eseguibili dal calcolatore. Questa operazione converte il codice sorgente in codice oggetto eseguibile dalla macchina (codice macchina) Per ARDUINO avviene la stessa cosa ma la fase di compilazione si traduce e completa essenzialmente nella fase di caricamento del codice sulla scheda stessa.

Linguaggio Arduino: Struttura di un programma setup() Fase di preparazione loop() Fase di esecuzione

Istruzioni: Le istruzioni di programma vanno terminate con il punto e virgola. Un gruppo di istruzioni deve essere racchiuso tra parentesi graffe. Le istruzioni del preprocessore NON vanno terminate con il punto e virgola.

Un esempio di programma per ARDUINO: #define LED 13 int INGRESSO = 7; void setup() { pinmode(led, OUTPUT); pinmode(ingresso, INPUT); void loop() { if (digitalread(ingresso)) digitalwrite(led, HIGH); if (!digitalread(ingresso)) digitalwrite(led, LOW);

Per comprendere il programma di esempio visto è necessario introdurre i seguenti concetti: Variabili, Costanti e Tipo di dato Funzioni (parametri di ingresso e parametri di ritorno) Operazioni Aritmetiche e Operatori Logici e di Confronto Istruzioni condizionali Istruzioni di preprocessore Costanti di Arduino Funzioni di Arduino

Le variabili: La variabile è una locazione di memoria alla quale attribuiamo un nome e nella quale memorizziamo un valore. Le variabili prima di essere usate devono essere dichiarate. Le variabili hanno una portata di visibilità più o meno ampia a seconda di dove si trova la loro dichiarazione.

Un esempio di programma per ARDUINO: #define LED 13 int INGRESSO = 7; void setup() { pinmode(led, OUTPUT); pinmode(ingresso, INPUT); void loop() { if (digitalread(ingresso)) digitalwrite(led, HIGH); if (!digitalread(ingresso)) digitalwrite(led, LOW);

Tipi di dato: Arduino: Programmazione

Le costanti: La costante è una locazione di memoria alla quale attribuiamo un nome e nella quale memorizziamo un valore. Le costanti prima di essere usate devono essere dichiarate. Esistono delle costanti in ARDUINO pre dichiarate e sempre disponibili in qualsiasi punto del programma.

Un esempio di programma per ARDUINO: #define LED 13 int INGRESSO = 7; void setup() { pinmode(led, OUTPUT); pinmode(ingresso, INPUT); void loop() { if (digitalread(ingresso)) digitalwrite(led, HIGH); if (!digitalread(ingresso)) digitalwrite(led, LOW);

Le COSTANTI in Arduino: Il linguaggio Arduino ha una serie di parole chiave predefinite con valori speciali. HIGH e LOW si usano, quando si vuole accendere o spegnere un pin di Arduino. INPUT e OUTPUT si usano per impostare un determinato pin come ingresso o uscita. TRUE / FALSE indica il fatto che una condizione o un espressione è vera o falsa.

I commenti: I commenti inseriti all'interno del sorgente tra le istruzioni di programma permettono di documentare le parti del programma. I commenti sono ignorati dal processore. Ce ne sono di due tipi commenti a blocchi e commenti a singola linea, naturalmente con sintassi diversa.

Un esempio di programma per ARDUINO: #define LED 13 // preprocessore: definisco una costante int INGRESSO = 7; /* variabile intera con valore assegnato uguale a 7 */ void setup() { pinmode(led, OUTPUT); pinmode(ingresso, INPUT); void loop() { if (digitalread(ingresso)) digitalwrite(led, HIGH); if (!digitalread(ingresso)) digitalwrite(led, LOW);

Funzioni (parametri di ingresso e parametri di ritorno): Una funzione è un blocco di codice che ha un nome ben definito, quindi è un blocco di istruzioni che vengono eseguiti quando la funzione viene chiamata. Le funzioni sono utilizzate per eseguire operazioni ripetitive in modo da ridurre il codice programma ed evitare quindi confusione nel programma stesso. Le funzioni sono dichiarate all inizio del programma e specificate dal tipo di funzione. La struttura della funzione è la seguente: <Tipo del valore restituito> <nome funzione> ( <elenco dei parametri> ) Dopo il tipo, occorre dichiarare il nome dato alla funzione e tra parentesi i parametri che vengono passati alla funzione.

Un esempio di dichiarazione di Funzione per ARDUINO: int delayval() // funzione senza parametri { int v; // dichiaro la variabile v = analogread(pot); // funzione arduino v = v / 4; // espressione aritmetica return v; // valore di ritorno della funzione

Un esempio di Blocco di Istruzioni per ARDUINO: { digitalwrite (pin, HIGH); delay (1000); digitalwrite (pin, LOW); delay (1000); // il 'pin' è su // un secondo di pausa // il 'pin' è giù // un secondo di pausa

Operazioni aritmetiche: Gli operatori aritmetici sono addizione, sottrazione, moltiplicazione e divisione. Esempi: y = y + 3; x = x 7; i = j * 6; r = r / 5;

Compound assignments Assegnazioni compound: Si tratta di operatori speciali che si usano per rendere più conciso il codice di programma. Esso combina un'operazione aritmetica con un assegnazione di variabile. Esempi: a = a + 1 si può scrivere a++ a = a + 2 si può scrivere a += 2 Attenzione! Se scrivo: value++, prima valuta la variabile value e poi la incrementa di 1. Se invece scrivo: ++value, prima incrementa di 1 e poi lo valuta. Lo stesso vale per (meno meno).

Compound assignments Assegnazioni compound: Questi operatori speciali si trovano comunemente nei cicli for. Le assegnazioni più comuni includono: x++; // è uguale a x = x + 1, incrementa la variabile 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 da come risultato il triplo del valore di x e poi viene riassegnato alla variabile x.

Operatori di confronto: Alcune volte si ha bisogno di confrontare una variabile o una costante con un'altra. Il confronto si usa nelle istruzioni condizionate if, while e for per verificare se una determinata condizione è vera. Esempi: x == y x!= y x < y x > y x <= y x >= y // x è uguale a y // x è diverso da y // x è minore di y // x è maggiore di y // x è minore o uguale a y // x è maggiore o uguale a y

Gli operatori logici o operatori booleani: Gli operatori logici sono un modo per confrontare due espressioni. Si usano anche quando si vogliono combinare diverse condizioni. Restituiscono una funzione TRUE o FALSE. Ci sono tre operatori logici AND, OR e NOT, che vengono utilizzati in istruzioni if: AND logico: if ( x > 0 && x < 5 ) OR logico: if ( x > 0 y> 0 ) NOT logico: if (!x > 0 ) // vera solo se entrambe le espressioni sono vere // vero se uno delle due espressioni è vera // vera solo se l espressione è falsa

Controllo del flusso di esecuzione del codice di programma: 1. Controllo di flusso (IF) istruzione condizionale 2. Controllo di flusso (IF ELSE) istruzione condizionale 3. Controllo di flusso (FOR) ciclo finito e determinato 4. Controllo di flusso (WHILE) ciclo a condizione iniziale 5. Controllo di flusso (DO WHILE) ciclo a condizione finale

Controllo di flusso (IF): L istruzione if verifica se una certa condizione. Se l espressione è vera lo sketch esegue le istruzioni che seguono. Se falsa il programma ignora la dichiarazione. Un esempio: if (variabile == valore) { // esegue blocco di istruzioni

Controllo di flusso (IF ELSE): Se l espressione contenuta all interno delle parentesi tonde è vera, viene eseguito il codice di programma che segue. Se l espressione è falsa vengono eseguite le righe di codice subito dopo l istruzione else. #define Acceso 1 // definisce Acceso = 1 #define Spento 0 // definisce Spento = 0 if (pulsante == ON) { digitalwrite(rele, acceso); else { digitalwrite(rele, spento);

Controllo di flusso (FOR): Il for viene utilizzato per ripetere un blocco di istruzioni racchiuso tra parentesi graffe un determinato numero di volte. Viene utilizzato un contatore per incrementare e terminare il ciclo. Esso è composto da tre parti, separate da punto e virgola (;): for (inizializzazione; condizione; espressione) { esegui istruzioni; Esempio: for (int A = 0; A < 10; A++) { // esegui le istruzioni;

Controllo di flusso (WHILE): È un comando simile a If. Il ciclo while esegue all infinito le istruzioni racchiuse tra le parentesi graffe fino a quando la condizione racchiusa dentro le parentesi tonde diventa falsa. Qualcosa deve far cambiare la variabile in esame, o il ciclo while non potrà mai uscire. Esempio: while (somevariable < 200) // verifica se meno di 200 { dosomething; // esegue le istruzioni racchiuse tra le parentesi graffe SomeVariable++; // la variabile viene incrementata di una unità

Controllo di flusso (DO WHILE): Il ciclo do while si comporta come l istruzione while ma con una importante differenza: esegue almeno una volta l istruzione all interno del ciclo do while. Quindi viene usato quando si vuole che il codice dentro le parentesi graffe venga eseguito almeno una volta prima di verificare la condizione. Esempio: do { x = readsensors(); // assegna il valore di readsensors() a x delay (50); // pausa di 50 millisecondi while (x < 100); // ciclo finché x è minore di 100

Ingressi / Uscite digitali: pinmode (pin, mode) Utilizzato in void setup (), serve per configurare un determinato pin e stabilire se deve essere un ingresso o un'uscita. digitalread (pin) L istruzione permette di leggere lo stato di un pin di input e restituisce un valore HIGH se al pin è applicato un tensione o un valore LOW se non è applicato nessun segnale. Il pin può essere specificato come una variabile o costante (0 13). digitalwrite (pin, valore) Attiva o disattiva un pin digitale, quindi l istruzione pone il pin di uscita a livello logico HIGH o LOW. Il pin può essere specificato come una variabile o una costante (0 13).

Ingressi / Uscite analogici: analogread (pin) Legge il valore di tensione applicato ad un pin di input analogico con una risoluzione pari a 10 bit. Questa funzione restituisce un numero intero compreso tra 0 e 1023. analogwrite (pin, value) Cambia la percentuale della modulazione di larghezza di impulso (Pulse Width Modulation PWM) su uno dei pin contrassegnati dalla sigla PWM.

Orologio Interno: delay (ms) Mette in pausa un programma per la quantità di tempo specificato in millisecondi. Il valore 1000 è pari a 1 secondo. Esempio: delay (1000); // attende un secondo DelayMicroseconds(us) Mette in pausa il programma per la quantità specificata di microsecondi. Esempio: delaymicroseconds (1000); // attende un millesimo di secondo Millis () Restituisce il numero di millisecondi da quando la scheda Arduino ha iniziato l'esecuzione del programma corrente. Il tipo di dato è un unsigned long. value = Millis (); // imposta la variabile 'value' al numero di millisecondi Millis()

Riferimenti valentino.stampone@gmail.com https://www.facebook.com/valentino.stampone http://about.me/valentino.stampone