UNIVERSITÀ DEGLI STUDI DEL SANNIO Dipartimento di Ingegneria Corsi di Laurea: Ingegneria Informatica Ingegneria Elettronica per l’Automazione e le Telecomunicazioni Corso Sistemi Dinamici Arduino Dottorando: Gianmichele Siano Professore Luigi Glielmo ANNO ACCADEMICO 2013/2014 SOMMARIO • Presentazione Arduino • Piattaforma di sviluppo • Esempi • Arduino con Matlab/Simulink 2 Perché Arduino • Apprendimento Rapido • Programmazione Semplificata • Costo Contenuto • Facilità Interfacciamento • Documentazione facilmente fruibile • Ampia comunità mondiale 3 Arduino Hardware Piattaforma di prototipazione elettronica • Open Source (Hardware/Software) • Microcontrollore Avr/ATmega Amtel • I/O Digitali (PWM) e Analogici • Tensione Max 20 V • Programmabile USB • Espandibile • Flessibile • Elaborazione Segnali e controllo Motori 4 Basic Arduino Board 5 IDE (Integrated Development Environment 6 Tipi di dati e strutture dati Array = insieme di valori (ES. int mioArrey[]={valore1,valore2,….}) String= insieme di caratteri (ES. string[]=“Arduino”) 7 Ingressi e Uscite DIGITALI: pinMode (pin,mode) pinMode(4,OUTPUT) digitalRead(pin) digitalRead(6) digitalWrite(pin, valore) digitalRead(6,LOW) ANALOGICI: analogRead(pin) analogRead(A0) restituisce un numero tra 0-1023 analogWrite(pin,value) analogWrite(10,255) valore PWM 0-255 8 Struttura firmware const int ledPin = 13; // Dichiarazioni void setup() { pinMode(ledPin, OUTPUT); // Inizializzazione Serial.begin(9600); } void loop() { digitalWrite(ledPin, HIGH); // accende il led delay(3000); // aspetta un secondo Serial.println(“Acceso 3 secondi”) digitalWrite(ledPin, LOW); // spegne il led delay(2000); // aspetta un secondo Serial.println(“Spento 2 secondi”) } 9 Arduino Software • Wiring (Processing) • Matlab/Simulink • LabView • Python • Java • Visual Basic • Fritzing 10 Dotazione Laboratorio 1 Arduino Kit 11 Dotazione Laboratorio 2 Arduino uno s Arduino Mega Adk UNO Microcontroller Operating Voltage Input Voltage (recommended) Input Voltage (limits) Digital I/O Pins Analog Input Pins DC Current per I/O Pin DC Current for 3.3V Pin Flash Memory SRAM EEPROM Clock Speed ATmega328 5V 7-12V 6-20V 14 (of which 6 provide PWM output) 6 40 mA 50 mA 32 KB (ATmega328) of which 0.5 KB used by bootloader 2 KB (ATmega328) 1 KB (ATmega328) 16 MHz Mega ADK ATmega2560 5V 7-12V 6-20V 54 (of which 15 provide PWM output) 16 40 mA 50 mA 256 KB of which 8 KB used by bootloader 8 KB 4 KB 16 MHz 12 Arduino Support from Matlab/Simulink MATLAB Support Package for Arduino SIMULINK Support Package for Arduino 13 Progetto Blink int led = 13; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(led, HIGH); delay(2000); Serial.println(“Acceso”); digitalWrite(led, LOW); delay(1000); Serial.println(“Spento”); } 14 Progetto POT-LED int POT = A3; int ledPin = 13; int POTValue; void setup() { pinMode(ledPin, OUTPUT); } void loop() { POTValue = analogRead(POT); digitalWrite(ledPin, HIGH); delay(POTValue); digitalWrite(ledPin, LOW); delay(POTValue); } 15 Progetto Button-design 16 Esempio Controllo Temperatura Simulink 17 Programma servo #include <Servo.h> Servo myServo; int const potPin = A2; int potVal; int angle; void setup() { myServo.attach(9); Serial.begin(9600); } void loop() { potVal = analogRead(potPin); Serial.print("potVal: "); Serial.print(potVal); angle = map(potVal, 0, 1023, 0, 179); Serial.print(", angle: "); Serial.println(angle); myServo.write(angle); delay(15); } 18 Programma temperatura • Controllo di temperatura 19 Esempio Motore DC • Controllo Motore con H-bridge e PWM 20 Esempio State-flow 21 Esempio State-flow 22 Esempio State-flow 23 Esempio State-flow 24