introducción a arduino - eva.udelar.edu.uy filelibrerías de c/c++ para el microcontrolador...

41

Upload: vuongcong

Post on 24-Sep-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 2: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 3: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 4: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

¾Qué es Arduino?

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 4 / 39

Page 5: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

Arduino Uno

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 5 / 39

Page 6: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 7: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 8: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 9: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 10: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

Sitio web

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 8 / 39

Page 11: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 12: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 13: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 14: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 15: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 16: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 17: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

Placa (Teensy USB 2.0)

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 15 / 39

Page 18: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 19: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 20: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

Entorno de desarrollo: Arduino IDE

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 18 / 39

Page 21: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

ProcesoCódigo fuente

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 19 / 39

Page 22: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

ProcesoCódigo fuente -> Compilación (�verify�)

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 20 / 39

Page 23: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 24: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 25: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 26: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 27: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

½No olvidar �;� al �nal de cada sentencia!

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 25 / 39

Page 28: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 29: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 30: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 31: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 32: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

Control de �ujoif

if (condicion) {

hacer algo;

}

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 30 / 39

Page 33: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 34: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 35: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

Control de �ujowhile

while (condicion) {

hacer algo;

}

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 33 / 39

Page 36: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 37: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 38: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 39: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 40: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

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

Page 41: Introducción a Arduino - eva.udelar.edu.uy fileLibrerías de C/C++ para el microcontrolador liberadas bajo licencia LGPL TEL aller(T de Electrónica Libre) Introducción a Arduino

Fin

TEL (Taller de Electrónica Libre) Introducción a Arduino 10 de abril de 2013 39 / 39