Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
UNIVERSITÀ DEGLI STUDI DEL SANNIO
Dipartimento di IngegneriaCorsi di Laurea:
Ingegneria InformaticaIngegneria Elettronica per l’Automazione e le Telecomunicazioni
Corso Sistemi Dinamici
Dottorando:Gianmichele Siano
Corso Sistemi Dinamici
Arduino
ProfessoreLuigi Glielmo
ANNO ACCADEMICO 2013/2014
• Presentazione Arduino
• Piattaforma di sviluppo
SOMMARIO
• Esempi
• Arduino con Matlab/Simulink
2
Perché Arduino
• Apprendimento Rapido
• Programmazione Semplificata
• Costo Contenuto
• Facilità Interfacciamento
3
• Facilità Interfacciamento
• Documentazione facilmente fruibile
• Ampia comunità mondiale
Arduino Hardware
• Open Source (Hardware/Software)
• Microcontrollore Avr/ATmega Amtel
• I/O Digitali (PWM) e Analogici
Piattaforma di prototipazione elettronica
4
• Tensione Max 20 V
• Programmabile USB
• Espandibile
• Flessibile
• Elaborazione Segnali e controllo Motori
Basic Arduino Board
5
IDE (Integrated Development Environment
6
Tipi di dati e strutture dati
7
Array = insieme di valori (ES. int mioArrey[]={valore1,valore2,….})
String= insieme di caratteri (ES. string[]=“Arduino”)
Ingressi e Uscite
DIGITALI:
pinMode (pin,mode) pinMode(4,OUTPUT)
digitalRead(pin) digitalRead(6)
digitalWrite(pin, valore) digitalRead(6,LOW)
8
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
Struttura firmware
const int ledPin = 13; // Dichiarazioni
void setup(){
pinMode(ledPin, OUTPUT); // InizializzazioneSerial.begin(9600);
}void loop()
9
void loop(){
digitalWrite(ledPin, HIGH); // accende il leddelay(3000); // aspetta un secondoSerial.println(“Acceso 3 secondi”)digitalWrite(ledPin, LOW); // spegne il leddelay(2000); // aspetta un secondoSerial.println(“Spento 2 secondi”)
}
Arduino Software
• Wiring (Processing)
• Matlab/Simulink
• LabView
• Python
10
• Python
• Java
• Visual Basic
• Fritzing
Dotazione Laboratorio 1
Arduino Kit
11
Dotazione Laboratorio 2
Arduino uno s Arduino Mega Adk
UNO Mega ADK
Microcontroller ATmega328 ATmega2560
Operating Voltage 5V 5V
Input Voltage (recommended) 7-12V
7-12V
Input Voltage (limits) 6-20V 6-20V
Digital I/O Pins 14 (of which 6 provide 54 (of which 15 provide PWM
12
Digital I/O Pins 14 (of which 6 provide PWM output) output)
Analog Input Pins 6 16
DC Current per I/O Pin40 mA
40 mA
DC Current for 3.3V Pin50 mA
50 mA
Flash Memory32 KB (ATmega328) of which 0.5 KB used by bootloader
256 KB of which 8 KB used by bootloader
SRAM 2 KB (ATmega328) 8 KB
EEPROM 1 KB (ATmega328) 4 KB
Clock Speed 16 MHz 16 MHz
Arduino Support from Matlab/Simulink
MATLAB Support Package for Arduino
SIMULINK Support Package for Arduino
13
SIMULINK Support Package for Arduino
Progetto Blink
int led = 13;
void setup() {pinMode(led, OUTPUT);Serial.begin(9600);
14
Serial.begin(9600);}
void loop() {digitalWrite(led, HIGH);delay(2000);Serial.println(“Acceso”);digitalWrite(led, LOW);delay(1000);Serial.println(“Spento”);
}
Progetto POT-LED
int POT = A3; int ledPin = 13; int POTValue;
void setup() {
pinMode(ledPin, OUTPUT);
15
pinMode(ledPin, OUTPUT);}
void loop() {POTValue = analogRead(POT); digitalWrite(ledPin, HIGH); delay(POTValue); digitalWrite(ledPin, LOW); delay(POTValue);
}
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);
}
18
}
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);
}
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