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 Software
Introducción
Variables
Control de ujo
Manejo 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 Software
Introducción
Variables
Control de ujo
Manejo 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 modicaciones al hardware
Poder compartir esas modicaciones 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 modicaciones al hardware
Poder compartir esas modicaciones 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 modicaciones al hardware
Poder compartir esas modicaciones 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 Commons
Attribution Share-Alike
Software del entorno de desarrollo bajo licencia GPL
Librerías de C/C++ para el microcontrolador liberadas bajo licencia
LGPL
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 Software
Introducción
Variables
Control de ujo
Manejo 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 Width
Modulation: 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 Width
Modulation: 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 Software
Introducción
Variables
Control de ujo
Manejo 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
Proceso
Código fuente
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 19 / 39
Proceso
Código fuente -> Compilación (verify)
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 20 / 39
Proceso
Có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
Variables
Tipos
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
Variables
Denició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
Variables
Denició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 ujo
if
if ( condicion ) {
hacer algo ;
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 30 / 39
Control de ujo
if
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 ujo
if
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 ujo
while
while ( condicion ) {
hacer algo ;
}
TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 33 / 39
Control de ujo
while
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 ujo
for
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 ujo
for
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 +5 V
valor = digitalRead ( pinEntrada ) ; // lee el valor del
pin 10
}
1
Excepto los pines con PWM
TEL (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 para
escribir.
La Arduino tiene un convertidor Analógico/Digital (A/D), de 10 bits, que
retorna 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