La piattaforma hardware e software Arduino: parte I. Corso di autoapprendimento



Documenti analoghi
La piattaforma hardware e software Arduino Corso completo di autoapprendimento Aggiornato a Arduino Yun

Arduino: Programmazione

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

ARDUINO. Ing. Francesco Giurlanda

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Corso Base Arduino ed Elettronica

Codifica: dal diagramma a blocchi al linguaggio C++

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

Introduzione alla programmazione in C

CORSO ARDUINO. Giulio Fieramosca Stefano Panichi. Corsi GOLEM 2014

Autoware Ladder Tool (per Arduino ) Basic Tutorial

12 - timer da cucina display a 4 cifre

Il pacchetto contiene sia l ambiente di sviluppo sia i driver per la scheda.

La piattaforma hardware e software Arduino: parte II. Corso di autoapprendimento

IZ1MHN e IW1ALX. Agenda. Introduzione ad Arduino Arduino l hardware Arduino il software Alcune idee realizzabili con Arduino E se facessimo un corso?

Arduino UNO. Single board microcontroller

Arduino. Laboratorio Arduino Base. HackLab Terni. Laboratorio aperto a tutti di elettronica, scienza e arte. hacklabterni.

Arduino: manuale di programmazione wiring

introduzione I MICROCONTROLLORI

Arduino: domotica open source

Semplice progetto con Arduino simpatico G-meter col quale misurare e registrare le accelerazioni del proprio veicolo

Appunti di Informatica 1

4. Un ambiente di sviluppo per Java

Invio SMS. DM Board ICS Invio SMS

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Linguaggio C. Fondamenti. Struttura di un programma.

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

IRSplit. Istruzioni d uso 07/10-01 PC

Procedura di aggiornamento del firmware Display Remoto IntellyGreenPV

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

Funzioni in C. Violetta Lonati

4 3 4 = 4 x x x 10 0 aaa

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

Informazione analogica e digitale

NOZIONI ELEMENTARI DI HARDWARE E SOFTWARE

sulla PROGRAMMAZIONE del MICROCONTROLLORE

Le variabili. Olga Scotti

Introduzione a Arduino

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

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Guida Joomla. di: Alessandro Rossi, Flavio Copes

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

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Visual basic base Lezione 01. L'ambiente di sviluppo

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

Sistema operativo: Gestione della memoria

Progetti reali con ARDUINO

Variabili e tipi di dato

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Programmare in Java. Olga Scotti

Powered by: Relators:

NOTE GENERALI DI PROGRAMMAZIONE icon100

Programmatore Bootloader

Guida rapida Vodafone Internet Box

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Indruduzione... 1 Il modulo Bluetooth HC Il firmware... 3 Collegamento della scheda... 4 Software PC e l applicazione Android...

Programmatore per telaio scheller

STRUMENTO PER LA COMPRESSIONE E LA CRIPTAZIONE DI FILE

SOMMARIO. 1. Corso Base - USO E PROGRAMMAZIONE C5G - Primo giorno...1.1

Avvio di Internet ed esplorazione di pagine Web.

Esercitazione Controllo di un motore DC mediante Arduino YUN

STAMPA UNIONE DI WORD

Tipi di dato-prima parte

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

CONTASECONDI CON DISPLAY A 7 SEGMENTI ARDUINO LIKE

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

Introduzione al linguaggio C Gli array

Concetto di Funzione e Procedura METODI in Java

Interfaccia ottica Iskraemeco Sonda 5 / Sonda 6 Guida all installazione del driver per i sistemi operativi Windows 7 e Windows XP

Corso di Fondamenti di Informatica

Progetto Esami Di Stato Anno 2014/2015

Tipologie dei dati nell SDK di Arduino come in un vero LP ad alto livello :

D sistema d allarme con sensori magnetici

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

DOCUMENTAZIONE J-BO. Progetto FabSchool ITE GINO ZAPPA CLASSE 4D

Connessione di RStone al computer tramite RKey

Gui Gu d i a d ra r p a i p d i a V d o a d f a one Int fone In e t r e net rnet Box Key Mini

Corso Eclipse. Prerequisiti. 1 Introduzione

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

Tutorial per il modulo Composizione e tecnica fotografica Un approfondimento sulla fotografia panoramica. Roberto Gonella, Alberto Terragni

MANUALEDIUTILIZZO MODULO CRM POSTVENDITA

MANUALE OCCHIALI SPY 720P

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

ISTRUZIONI PER L INSTALLAZIONE DI MINGW

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

7^ parte : Acquisizione della temperatura con LM35 e visualizzazione su display LCD. Author: Ing. Sebastiano Giannitto (ITIS M.

Il software e la programmazione

I file di dati. Unità didattica D1 1

[FINANZAECOMUNICAZIONE / VADEMECUM]

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

Esercitazione 1 primi passi e uso dei file

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Office 2007 Lezione 02. Le operazioni più

Testi di Esercizi e Quesiti 1

Installazione driver per connessione inverter al PC

Transcript:

La piattaforma hardware e software Arduino: parte I (tempo di apprendimento previsto circa 2-3 ore) Introduzione Corso di autoapprendimento Prof. Angelo Monfroglio Questa è la prima parte di un corso di base sulla piattaforma open source hardware e software Arduino. Arduino è stato creato da Olivetti nel 2005, è progettato e costruito intermente ad Ivrea (stabilimento di Scarmagno, quello dei famosi PC Olivetti), e ha conquistato un successo mondiale (100000 schede in tutti i paesi, Corea compresa). La piattaforma è adottata, fra gli altri, dai laboratori di robotica del MIT e della Carnegie Mellon University, i due principali centri di ricerca mondiali in questo settore. E adatta a molti impieghi, oltre che alla robotica: design, arte, programmazione evoluta. Arduino è presente all Omar dal 2010 (versioni Arduino Uno e Arduino Mega). Questo corso è diviso in 4 parti, ognuna prevista per circa 3 ore, teoriche e pratiche, di insegnamento e autoapprendimento. La base è Arduino Uno, l ultimo nato, ma, con poche varianti, si adatta a tutte le versioni. Arduino Uno

Gianluca Martino e David Mellis. Il team Arduino: Massimo Banzi, David Cuartielles, Tom Igoe, Open Source significa che viene fornita tutta la documentazione e gli schemi hardware e software, e l utente può liberamente attuare modifiche e personalizzazioni, riconoscendo i crediti ad Arduino. Così abbiamo fatto nei laboratori di Elettronica, Robotica, Telecomunicazioni e Progettazione all Omar, che è l unica scuola novarese dove è presente la piattaforma. Naturalmente, l invito è ad iscriversi agli indirizzi di Elettronica o Informatica (che sono solo all Omar). La scheda Arduino è unanimemente riconosciuta come più potente, più facile da usare e più economica di tutte le concorrenti, come Basic Stamp, BasicX, ecc. L ambiente di sviluppo (IDE), ovviamente gratuito, si chiama Sketch ed è scritto in Java ; comprende anche un editor con il syntax highlighting, il controllo automatico delle parentesi e l indentazione automatica. Il linguaggio di programmazione è basato sul linguaggio C e C++, di cui adotta la sintassi, ma usa una libreria chiamata Wiring, che semplifica enormemente la programmazione, specialmente per l input output verso sensori, motori, ecc. Il tutto mantenendo un ottimizzazione delle risorse pari all assembler, che, così, non è necessario. Inoltre si tratta di un C molto facile da usare. Ogni programma è costituito da due parti Setup() inizializzazioni Loop() funzione eseguita fino allo spegnimento della scheda Arduino adotta i microcontrollori Atmel AVRmega. Arduino Uno ha un interfaccia USB (del tipo stampante ) per il collegamento e la programmazione da PC. E anche possibile collegare un programmatore esterno per AVR, attraverso l interfaccia e il connettore ISP. Tuttavia, per la presenza di un bootloader precaricato, il programmatore esterno non è indispensabile. Inoltre, si può usare il linguaggio di programmazione Processing, sviluppato al MIT e basato su Java. Ovviamente, Processing da solo non è Arduino. Arduino si compone di 3 elementi: -una scheda elettronica -un ambiente di programmazione (ambiente di sviluppo sketch, linguaggio Arduino, Wiring ed eventualmente Processing) -la comunità degli utenti (a Novara il gruppo all Omar). Arduino, una volta programmato, può funzionare autonomamente, alimentato da una batteria, oppure collegato a un PC e alimentato dalla USB.

Le caratteristiche della scheda Arduino uno La scheda Arduino Uno, ultima nata, nel 2010, ha le seguenti caratteristiche: Microcontrollore Tensione di lavoro Tensione di ingresso raccomandata Ingressi-Uscite ATmega328 5V 7-12 V 14 (di cui 6 possono fornire il comando PWM di motori) Ingressi analogici 6 Memoria Flash SRAM EEPROM Clock 32 KB 2 KB 1 KB 16 MHz Il linguaggio base di Arduino, basato sulla sintassi del linguaggio C Strutture generali setup() loop() Strutture di controllo if if.. else for switch case while do.. while break continue return goto Segni di interpunzione usati ;

{ // /*/ Direttive #define #include Tipi di dati void boolean char insigne char byte int insigne int word long unsigned long intero a 32 bit con segno intero a 32 sempre positivo float double string (di caratteri) String (oggetto) Array Funzioni per la gestione dell hardware Digitali pinmode() digitalwrite() digitalread() Analogici

analogreference() analogread() analogwrite() Avanzate tone() notone() shiftout() pulsein() Gestione del tempo millis() micros() delay() delaymicroseconds() Funzioni matematiche min() max() abs() contrain() costringe un valore in un intervallo a, b operazioni + - * / % cioè modulo; map() pow() sqrt() trasforma un intero da un intervallo ad un altro Potenza radice quadrata sin() cos() tan() Numeri casuali randomseed() random()

Operazioni sui bit e i bytes lowbyte () highbyte() bitread() bitwrite() bitset() bitclear() bit() &(and su bit) (or su bit) ^(xor) ~(not su bit) <<(shift a sinistra) >>(shift a destra) Costanti predefinite LOW HIGH, INPUT OUTPUT Utilità sizeof() fornisce le dimensioni in byte di una variabile Gestioni interrupt esterni Interni attachinterrupt() nointerrupt() interrupts() nointerrupts() Comunicazione seriale Serial Come si vede, queste istruzioni, che consentono di operare a livello di singoli bit e piedini, e l ottimizzazione che Arduino assicura per il codice macchina generato, rendono inutile il ricorso all assembler.

confronti = =!= (diverso) < > <= >= booleani && (and) (or)! (not) Si noti che == significa confronto mentre = è usato per le assegnazioni. Per cominciare -prendere una scheda Arduino (nel nostro caso Arduino UNO) -scaricare il software Arduino dal sito arduino.cc -scompattare il file zip -installare sketch -collegare Arduino alla USB -al riconoscimento del nuovo hardware, installare il driver (sul sistema operativo Vista è anche necessario copiare un piccolo file dal sito, secondo le istruzioni) -lanciare Arduino (e la festa comincia!). Primo uso di Arduino L IDE è diviso in 3 zone: -zona bottoni e menu -zona editor -zona di stato (messaggi di errore o successo) Nel menu File ci sono già pronti alcuni esempi di prova, da caricare e provare senza neanche scrivere una riga di codice. Occorre, prima di tutto, selezionare la scheda (board) nel menu Tools: nel nostro caso Arduino Uno; e la porta seriale. Per quest ultima, andare sul Pannello di Controllo, Sistema, Gestione dispositivi, porte seriali. Si vede quale COM è stata assegnata (esempio COM10). Tornare all IDE di Arduino e al menu Tools e selezionare Serial port. Ora nel menu Preferences selezionare una directory di lavoro (creata precedentemente). Il mio primo programma Il primo programma che si insegna per un linguaggio generale è di solito quello che visualizza Ciao mondo (hello world). Con Arduino, evidentemente, questo non avrebbe senso alcuno. Invece, accenderemo (e spegneremo) un LED. La scheda Arduino ha un LED di prova al pin 13, quindi il test si può fare senza nessun componente aggiuntivo.

Scriveremo con l editor Esempio 1 void setup(){ pinmode(13,output); void loop(){ digitalwrite(13,high); delay(1000); digitalwrite(13,low); delay(1000); -salvare con un nome -compilare, premendo il bottone compila in alto a sinista (triangolino in un cerchio) -se non ci sono errori, nel menu File selezionare Upload to I/O Board per trasferire l eseguibile nella scheda. -verificare il funzionamento. -Fine: facile? Ora, come esercitazione, provare a comprendere, scrivere ed eseguire il seguente programma un po più complicato. Esempio 2 const int ledpin = 13; // il numero del piedino corrispondente al LED int ledstate = LOW; long previousmillis = 0; aggiornamento // memorizza il tempo dell ultimo // long perchè il tempo è in millisecondi long interval = 1000; // interval at which to blink (milliseconds) void setup() { pinmode(ledpin, OUTPUT); // metto il piedino in Output void loop() { unsigned long currentmillis = millis(); if(currentmillis - previousmillis > interval) { // save the last time you blinked the LED previousmillis = currentmillis; // se il LED è On mettilo OFF e viceversa: if (ledstate == LOW) ledstate = HIGH; else ledstate = LOW;

digitalwrite(ledpin, ledstate); Come avrete visto, i programmi di Arduino, la cui sintassi è quella del linguaggio C, hanno i blocchi che sono delimitati dalle parentesi graffe aperta { (si ottiene col tasto Alt e 123) e chiusa (alt 125). Le istruzioni sono terminate dal punto e virgola e le funzioni sono sempre seguite da una tonda aperta e poi chiusa. Errori comuni Un errore frequente è l errata scelta della COM. In ogni caso, il testo rosso nell area messaggi dell IDE riassume gli errori. Un programma che usa un uscita analogica Ora vediamo un programma che usa un valore analogico da mandare al pin 9 e a un LED. Occorre procurarsi un LED e un resistore di valore appropriato (e un breadboard). Lo schema di collegamento è elementare. Esempio 3 // varia la luce del LED int value = 0 int ledpin = 9 void setup() { // nulla da inizializzare void loop() { for(value = 0; value <= 255; value+=5) { analogwrite(ledpin,value); delay(30); for(value = 255; value >= 0; value-=5) { analogwrite(ledpin,value); delay(30); // cresce // diminuisce Si noti, per chi non è abituato al linguaggio C, che value+=5 è la forma sintetica per value = value + 5 si può anche scrivere così, se si preferisce. Esempio 4 Ora controlleremo l accensione di un LED con un bottone int ledpin = 13; int inputpin = 2;

int val = 0; void setup(){ pinmode(ledpin,output); pinmode(inputpin,input); void loop(){ val = digitalread(inputpin); if(val == HIGH){ digitalwrite(ledpin,low); else{ digitalwrite(ledpin,high); Esempio5 Infine, scriviamo un programma che, a seconda del valore letto sul pin 2, lampeggia o varia la luminosità di un LED collegato al pin 9. int ledpin = 9; int input Pin = 2 int val = 0; intfadeval = 0; void setup(){ pinmode(ledpin,output); pinmode(inputpin,input); void loop(){ val = digitalread(input Pin); if(val == HIGH) { digitalwrite(ledpin, LOW); delay(50); digitalwrite(ledpin,high); delay(50); else{ for(fadeval = 0;fadeval <= 255;fadeval +=5){ analogwrite(ledpin,fadeval); delay(10); for(fadeval = 255;fadeval = 255;fadeval >= 0;fadeval -=5){ analogwrite(ledpin,fadeval); delay(10); Fine parte I

Buon lavoro Bibliografia -Banzi M., Getting started with Arduino, Make Books, 2009 -Gadre V. Dhananjay, Programming and customizing the AVR Microcontroller, McGraw-Hill, New York, 2000 -Tod E. Kurt, Bionic Arduino, Introduction to Microcontrollers with Arduino, 2007