introducción a arduino - eva.udelar.edu.uy filelibrerías de c/c++ para el microcontrolador...
TRANSCRIPT
Introducción a Arduino
Federico Davoine, Gabriel Eirea
Taller de Electrónica Libre, Instituto de Ingeniería Eléctrica
10 de abril de 2013
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 1 / 39
Esquema de la presentación
1 Introducción
2 Hardware
3 SoftwareIntroducciónVariablesControl de �ujoManejo de pines
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 2 / 39
Esquema de la presentación
1 Introducción
2 Hardware
3 SoftwareIntroducciónVariablesControl de �ujoManejo de pines
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 3 / 39
¾Qué es Arduino?
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 4 / 39
Arduino Uno
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 5 / 39
Filosofía: Electrónica Libre
Basada en el software libre. Permite:
Estudiar el hardware para entender cómo funciona
Hacer modi�caciones al hardware
Poder compartir esas modi�caciones con la comunidad
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 6 / 39
Filosofía: Electrónica Libre
Basada en el software libre. Permite:
Estudiar el hardware para entender cómo funciona
Hacer modi�caciones al hardware
Poder compartir esas modi�caciones con la comunidad
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 6 / 39
Filosofía: Electrónica Libre
Basada en el software libre. Permite:
Estudiar el hardware para entender cómo funciona
Hacer modi�caciones al hardware
Poder compartir esas modi�caciones con la comunidad
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 6 / 39
Filosofía: Electrónica Libre
Licencias de Arduino:
Diseños CAD de las placas bajo licencia Creative CommonsAttribution Share-Alike
Software del entorno de desarrollo bajo licencia GPL
Librerías de C/C++ para el microcontrolador liberadas bajo licenciaLGPL
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 7 / 39
Sitio web
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 8 / 39
Filosofía: Electrónica Libre
Consecuencias:
Comunidad activa de usuarios y desarrolladores (foros, ejemplos,tutoriales, etc)
Gran cantidad de software y hardware disponible para autoconstruir
Precios bajos
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 9 / 39
Teensy USB
Teensyduino: permite usar el software de Arduino en Teensy
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 10 / 39
Esquema de la presentación
1 Introducción
2 Hardware
3 SoftwareIntroducciónVariablesControl de �ujoManejo de pines
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 11 / 39
Características (Arduino UNO)
Microcontrolador: ATmega328 (8 bits)
Alimentación via USB (5 V) o independiente (7-12 V)
14 pines de entrada/salida (I/O) digitales (6 con Pulse WidthModulation: PWM)
Corriente máxima por pin I/O: 40 mA
6 pines de entrada analógica
Permite comunicación serial
Memoria �ash: 32 KB
Frecuencia del reloj: 16 MHz
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 12 / 39
Placa (Arduino UNO)
M. Margolis, Arduino Cookbook, O'Reilly Media 2011.
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 13 / 39
Características (Teensy USB 2.0)
Microcontrolador: ATmega32U4 (8 bits)
Alimentación via USB (5 V)
25 pines de entrada/salida (I/O) digitales (7 con Pulse WidthModulation: PWM)
Corriente máxima por pin I/O: 40 mA
12 pines de entrada analógica
Permite comunicación serial UART, I2C y SPI
Memoria �ash: 32 KB
Frecuencia del reloj: 16 MHz
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 14 / 39
Placa (Teensy USB 2.0)
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 15 / 39
Esquema de la presentación
1 Introducción
2 Hardware
3 SoftwareIntroducciónVariablesControl de �ujoManejo de pines
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 16 / 39
Lenguaje de programación
Basado en Processing y similar a C++
Sketches = Código fuente
Lenguaje compilado
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 17 / 39
Entorno de desarrollo: Arduino IDE
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 18 / 39
ProcesoCódigo fuente
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 19 / 39
ProcesoCódigo fuente -> Compilación (�verify�)
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 20 / 39
ProcesoCódigo fuente -> Compilación (�verify�) -> Programarlo en la placa (�upload�)
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 21 / 39
Estructura de un archivo
declaracion de variables;
void setup()
{
seteo de pines;
inicializacion de la comunicacion serial;
}
void loop()
{
lo que voy a hacer todo el tiempo;
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 22 / 39
VariablesTipos
byte: Enteros (1 byte): -128 a 127
int: Enteros (2 bytes): -32.768 a 32767
long: Enteros (4 bytes)
float, double: Números en punto �otante (4 bytes)
boolean: Verdadero (TRUE) o Falso (FALSE)
char: Un solo caracter
String: Listas de caracteres
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 23 / 39
VariablesDe�nición
int nombreVariable1 = 0
float nombreVariable2 = 1.24
int nombreArray [] = {valor0 , valor1 , valor2 , ...}
int nombreArray2 [5]
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 24 / 39
½No olvidar �;� al �nal de cada sentencia!
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 25 / 39
VariablesDe�nición
int nombreVariable1 = 0;
float nombreVariable2 = 1.24;
int nombreArray [] = {valor0 , valor1 , valor2 , ...};
int nombreArray2 [5];
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 26 / 39
Comentarios
/* Este es un
bloque de
comentarios
*/
// En cambio , este es un comentario de linea
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 27 / 39
Comparación
A == B : A igual a B
A != B : A distinto de B
A < B : A menor que B
A <= B : A menor o igual a B
A > B : A mayor que B
A >= B : A mayor o igual a B
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 28 / 39
Operadores lógicos
A && B : A AND B
A || B : A OR B
!A : NOT A
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 29 / 39
Control de �ujoif
if (condicion) {
hacer algo;
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 30 / 39
Control de �ujoif
if (condicion) {
hacer algo;
}
if (condicion) {
hacer algo;
} else {
hacer otra cosa;
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 31 / 39
Control de �ujoif
if (condicion) {
hacer algo;
}
if (condicion) {
hacer algo;
} else {
hacer otra cosa;
}
// Ejemplo:
if (buttonPushCounter % 4 == 0){
digitalWrite(ledPin , HIGH);
}
else {
digitalWrite(ledPin , LOW);
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 32 / 39
Control de �ujowhile
while (condicion) {
hacer algo;
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 33 / 39
Control de �ujowhile
while (condicion) {
hacer algo;
}
// Ejemplo:
int var = 0;
while(var < 200){
// hacer algo repetitivamente 200 veces
var ++;
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 34 / 39
Control de �ujofor
for (inicializacion; condicion; incremento) {
hacer algo;
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 35 / 39
Control de �ujofor
for (inicializacion; condicion; incremento) {
hacer algo;
}
// Ejemplo: atenuar un LED usando un pin con PWM
int PWMpin = 10; // hay que poner una resistencia de 470 Ohm
en serie
void setup(){
// no es necesario configurar nada
}
void loop(){
for (int i=0; i <= 255; i++){
analogWrite(PWMpin , i);
delay (10);
}
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 36 / 39
Manejo de pines digitales
Los pines digitales (pin 0 a 13) pueden tomar sólo 2 valores: 0 V (LOW) o+5 V (HIGH)1.
int pinEntrada = 10;
int pinSalida = 13;
void setup(){
pinMode(pinEntrada , INPUT);
pinMode(pinSalida , OUTPUT);
}
void loop(){
digitalWrite(pinSalida , HIGH); //pone el pin 13 en +5V
valor = digitalRead(pinEntrada); //lee el valor del
pin 10
}
1Excepto los pines con PWMTEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 37 / 39
Manejo de pines analógicos
Los pines analógicos (A0 a A5) sólo sirven para leer señales, no paraescribir.La Arduino tiene un convertidor Analógico/Digital (A/D), de 10 bits, queretorna enteros entre 0 y 1023.Para leer el valor en el pin A2, se debe usar la función analogRead():
int valor; // variable que va a almacenar lo que lee un pin
void setup(){
// no es necesario inicializar nada
}
void loop(){
valor = analogRead(A2); // valor es un int entre 0 y 1023
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 38 / 39
Fin
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 39 / 39