Lezione Seconda Primi passi di programmazione

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Piattaforma Arduino Arduino uno Arduino Mega.
Per questo organizza un corso di Arduino per tutti i soci Amon e GMS.
Linguaggio Arduino: Struttura di un programma
Arduino: introduzione alla programmazione
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Hardware necessario Una board Intel galileo Un alimentatore Dc 7-15 v
ISTITUTO TECNICO – SETTORE TECNOLOGICO
Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”
Unità di apprendimento 6 Dal problema al programma.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
IL SOFTWARE (FPwin 6.0).
Arduino uno Introduzione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
La rappresentazione degli algoritmi
Introduzione al linguaggio C
Dal problema al processo risolutivo
PROGRAMMAZIONE SHELL -
Pic16f84 Assembly I/O.
7. Strutture di controllo Ing. Simona Colucci
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
Forme per rappresentare l’algoritmo:
FORMULE E FUNZIONI SU EXCEL
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
CICLO DO – WHILE LINGUAGGIO C.
istalliamo l’ambiente di sviluppo - ide
La scheda Arduino.
Global System for Mobile Comunication
realizzato dal prof.Conti Riccardo
mBlock Un modo semplice e innovativo per programmare Arduino
Un editor intelligente!!!
Programmazione e Laboratorio di Programmazione
Introduzione a JavaScript
Programmazione e Laboratorio di Programmazione
Programmare.
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Struttura di un programma
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Struttura di un programma
Vari e semplici programmi.
Interrupt Arduino.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Definizione di linguaggio di programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
La struttura dei primi programma in C
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
UNIT 12 INTERFACCIA SERIALE.
Fondamenti di Informatica
Unità 1 Programmi base.
CICLO WHILE LINGUAGGIO C.
Lezione Terza Primi passi di programmazione
Programmazione e Laboratorio di Programmazione
Progettiamo un robot Prof.ri Ponte Vincenzo Ovazza Sergio
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
La programmazione strutturata
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Lezione Seconda Primi passi di programmazione Arduino Lezione Seconda Primi passi di programmazione Prof. Ponte Vincenzo

Wiring Wiring e’ il linguaggio di programmazione, derivato dal C++, utilizzato per scrivere programmi installabili su Arduino. Il microcontrollore legge, attiva e disattiva le porte di Arduino seguendo le istruzioni contenute in uno sketch, e cioe’ un programma scritto in wiring e compilato attraverso l’IDE, un ambiente di sviluppo gratuito operante su pc.

Wiring L’IDE consente di utilizzare il PC per scrivere il programma, compilarlo e trasferirlo, tramite una connessione USB, su Arduino. L’IDE presenta una finestra riservata alla scrittura del programma, alcune icone per le funzioni di verifica, compilazione, carico e salvataggio dei programmi ed una serie di menu’ a tendina abbastanza intuitivi.

Wiring Una volta scritto e compilato lo sketch nell’IDE, dovete fare clic sul pulsante Verify. Se vedete che l’IDE fa apparire il messaggio Done compiling significa che avete scritto e verificato correttamente il vostro primo codice. Se no,dovete leggere il messaggio che vi mostra l’IDE e cercare di capire che cosa è successo.

struttura di un programma La struttura base del linguaggio di programmazione di Arduino si sviluppa sulla definizione di due funzioni: void setup() e void loop(). Queste due funzioni racchiuderanno le necessarie impostazioni per il funzionamento dei dispositivi collegati con Arduino e i blocchi di istruzioni per svolgere quanto richiesto. Attenzione: le variabili e le librerie vanno dichiarate prima del void setup()

struttura di un programma La funzione setup( ) è la prima ad essere chiamata quando parte uno sketch. Sarà la prima ad essere eseguita dopo ogni accensione o reset. Sintassi void setup( ) { // istruzioni varie; }

struttura di un programma void loop() // programma principale (main) --> //ciclo infinito (loop) { // istruzioni del programma che deve essere //eseguito all’infinito }

struttura di un programma setup() è la funzione per l’inizializzazione, mentre loop() è la funzione principale per l'esecuzione. La funzione setup() viene eseguita solo una volta, ed è usata per impostare le modalità di funzionamento dei pin come input/output (pinMode) o per inizializzare la comunicazione seriale. La funzione loop() che segue include il codice che deve essere eseguito in un ciclo infinito (loop), ad esempio con la lettura degli ingressi, la successiva elaborazione degli stessi e la modifica delle uscite, ecc. Questa funzione è il cuore di tutti i programmi di Arduino e risulta quella che esegue il software implementato per eseguire un determinato lavoro.

le parentesi graffe { } parentesi graffe Le parentesi graffe definiscono l'inizio e la fine dei blocchi di funzione e di blocchi delle istruzioni come il “void loop()” ed anche per le istruzioni “for”, “if”, “while”, etc. Una parentesi graffa aperta “{“ deve sempre essere seguita da una parentesi graffa di chiusura “}”

“;” punto e virgola Un punto e virgola deve essere utilizzato per terminare una istruzione e separare gli elementi o istruzioni del programma. Un punto e virgola è usato anche per separare le istruzioni sul contatore all’interno di un’struzione for.

/*... */ commento su più righe I commenti su più righe sono aree di testo che vengono ignorate dal programma e sono usate per le descrizioni di grandi dimensioni di codice o di commenti che aiutano a far capire ad altre persone tutte le parti del programma. Essi iniziano con “/*” e finiscono con “*/”. Poiché i commenti vengono ignorati dal programma e non occupano spazio di memoria dovrebbero essere usati con generosità e devono essere usati per "commentare" i blocchi di codice.

// linea di commento Il commento sulla riga singola inizia con “//” e termina quando si va a capo. Tutti i commenti vengono ignorati dal programma e non occupano spazio di memoria. // questa è una singola linea di commento I singoli commenti vengono spesso utilizzati dopo una dichiarazione valida per fornire maggiori informazioni su ciò che compie la dichiarazione o per fornire un promemoria futuro.

Variabili (definizione, dichiarazione) Le variabili sono sequenze di caratteri alfanumerici (lettere, numeri e caratteri di punteggiatura) che identificano uno o più bytes nella memoria del PC. Una dichiarazione è quindi una riga di programma del tipo: int calcolo; // indica che la variabile che si chiama calcolo è un intero .Nella dichiarazione si può anche dare un valore iniziale alla variabile int calcolo=3; // indica che la variabile che si chiama calcolo è un intero e a quel punto del programma vale 3.

Operazione di assegnazione Il simbolo “=” nella dichiarazione “ int calcolo=3; ” indica che il valore o l’espressione che sta a destra viene inserito nella variabile (nelle celle di memoria) che sta a sinistra; non vuol dire assolutamente che quello che c’è a destra è “=” a quello che c’è a sinistra, come in matematica. Se in una dichiarazione come quella precedente la differenza di definizione non è significativa, lo diventa in un’istruzione come “ i=i+1 ” espressione che in matematica è errata, ma che in linguaggio C significa che si somma alla variabile “i” il numero 1 e il risultato viene inserito nella cella dove prima c’era la variabile i. Il simbolo “=” in C si chiama operazione di assegnazione.

Variabili (definizione, dichiarazione) Esiste una situazione in cui si usa il doppio simbolo “=”, ovvero “==”: if (x==4) // se la variabile x e’ uguale 4 y=y+10; /* se la condizione precedente è vera allora aggiunge 10 alla variabile y */ In questo caso “x==4” è un’operazione di confronto: si controlla se il numero contenuto nelle celle di memoria identificate dalla x è uguale a 4, ma non si cambia il valore.

operatori aritmetici Gli operatori aritmetici inclusi nel compilatore sono addizione, sottrazione, moltiplicazione e divisione che restituiscono la somma, differenza, prodotto e quoziente (rispettivamente) dei due operandi. L'operazione è elaborata utilizzando il tipo dei dati degli operandi, così, per esempio, 9 / 4 fornisce come risultato 2 invece di 2,25 se i valori 9 e 4 sono del tipo “int” e vengono troncati i decimali.

operatori di confronto I confronti tra due variabili o costanti sono spesso utilizzati nelle istruzioni “if ... else” per verificare se una condizione specificata è vera. Le operazioni di confronto utilizzate sono:

true / false (vero / falso) Queste sono le costanti booleane che definiscono i livelli della logica. FALSE è definito come “0” (oppure livello logico BASSO = LOW), mentre VERO (TRUE) è definito come “1” (oppure livello logico ALTO = HIGH). Volendo utilizzare la logica booleana si ottiene che tutti i numeri diversi da zero corrispondono a VERO (TRUE) mentre solo il numero “0” corrisponde a FALSO (FALSE).

high / low (alto / basso) input / output (ingressi / uscite) Queste costanti definiscono i livelli dei pin come un livello alto o basso e vengono utilizzati durante la lettura e/o la scrittura dei pin digitali. Il livello ALTO (HIGH) viene definito come livello logico “1”, “ON” oppure +5V mentre il livello BASSO (LOW) è livello logico “0”, OFF oppure 0V (GND = GROUND).

if (se) L’istruzione “if” controlla se una certa condizione (compresa tra le parentesi tonde) si è verificata ed esegue le istruzioni all'interno delle parentesi graffe se l'affermazione è VERA. Se la condizione è FALSA, il programma salta alla prima istruzione dopo la chiusura della parentesi graffa. Nota: In condizione di uguaglianza occorre utilizzare il doppio simbolo “==”

if... else (se ... altrimenti) L’istruzione “if... else” permette di effettuare una scelta in base alla condizione dell’espressione contenuta nelle parentesi tonde.

Struttura del programma Nel linguaggio per Arduino occorre: 1) Dichiarare le variabili da utilizzare 2) Inizializzare la scheda definendo gli input (ingressi) digitali / analogici e gli output (uscite). 3) Funzione: setup() - viene eseguito una sola volta all'inizio per inizializzare le periferiche. 4) Funzione: loop() - vengono eseguite ripetutamente tutte le istruzioni comprese tra le parentesi graffe.

Funzioni implementate:vediamole pinMode( ) - impostare un pin come ingresso o uscita digitalWrite( ) - impostare un pin output digitale a livello alto / basso digitalRead( ) - leggi lo stato di un pin definito come input digitale analogRead( ) - legge e converte la tensione di un pin analogico in un valore numerico (10-bit) analogWrite( ) - scrive un valore "analogico" con PWM (8-bit) Delay( ) - aspetta un periodo di tempo (espresso in millisecondi) Millis( ) - si ottiene il tempo da quando la scheda è stata accesa.

INPUT / OUTPUT input / output digitale Come INPUT è possibile collegare e configurare qualsiasi pulsante o sensore tra i pin 2 e 12 della scheda [sono da escludere i pin O (RX), 1 (TX) e 13 (led interno)] Come OUTPUT è possibile collegare e configurare qualsiasi led tra i pin 2 e 13 della scheda [sono da escludere i pin O (RX), 1 (TX)]

PRIMO PROGRAMMA Lampeggio di un LED // Lampeggio LED int LED = 6; // LED connesso al pin digitale 6 // si può anche scrivere #define LED 6 “senza il ;” void setup( ) { // inizializza il pin del LED come uscita digitale: pinMode (LED, OUTPUT); } // Le istruzioni interne al loop vengono continuamente eseguite void loop( ) { digitalWrite(LED, HIGH); // Accende il LED delay(1000); // aspetta un secondo digitalWrite(LED, LOW); // spegne il LED

UTILIZZIAMO IL PULSANTE // Accendiamo e spegniamo un LED con 2 pulsanti int LED = 6; // LED connesso al pin digitale 6 int ButtonON =2; // pulsante connesso al pin2 int ButtonOFF =7; // pulsante connesso al pin7 /*Dichiarazione della variabile che legge lo stato del pulsante*/ int ButtonON_State = 0; int ButtonOFF_State = 0; void setup() { // inizializza il pin dei LED come uscita digitale: pinMode(LED, OUTPUT); pinMode(ButtonON, INPUT); // ìnizializza i l pin del pulsante come ingresso pinMode(ButtonOFF, INPUT); // ìnizializza i l pin del pulsante come ingresso digitalWrite(LED, LOW); // spengo il LED }

UTILIZZIAMO IL PULSANTE void loop() { // Legge Io stato dei pulsanti : ButtonON_State = digitalRead(ButtonON); delay(20); // attendo 20msec ButtonOFF_State = digitalRead(ButtonOFF); delay(20); // Se è premuto ON accende il LED): if (ButtonON_ State ==HIGH) { digitalWrite(LEDl, HIGH); // Accendo il LED } if (ButtonOFF_ State ==HIGH) { digitalWrite(LEDl, LOW); // Spengo il LED }

LABORATORIO Scegliere uno dei due progetti proposti: 1) Realizzare due giochi di luci con 4 led comandati da un pulsante. 2) Realizzare un semaforo che lampeggia quando si preme il pulsante.

Fine seconda parte Buon lavoro Prof. Ponte Prof. Ovazza