Introducción a plataformas de prototipado: Arduino (rev. 2)

20
http://SolEpcc.unex.es @mlinaje Marino Linaje

description

Transparencias del curso impartido por el Smart Open Lab como introducción a plataformas de prototipado: Arduino (rev. 2)

Transcript of Introducción a plataformas de prototipado: Arduino (rev. 2)

Page 1: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

Marino Linaje

Page 2: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• ¿Qué es Arduino?

– Intro

– DIY, Open Hardware…

– Arduino Uno

• Formas de prototipado

• Programación

– Intro

– Ejemplos

Page 3: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

openPicus

Arduino

Seeeduino

Netduino

IOIO

Raspberry Pi

LilyPad

Etc.

Plataformas Prototipado HW (microcontrontrolador)

3

Page 4: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• Multiplatforma (Windows, Linux, Mac)

• Energía via USB o externo

– (Adaptador AC/DC o batería)

• Muchas alternativas

Intro

Arduino Mega 2560

Arduino Ethernet

Arduino Pro Mini 328

http://www.arduino.cc/

Page 5: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

Open Hardware, DIY

5

Arduino board

Arduino IDE

Page 6: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

Arduino Uno

Digital I/O Pins 14 (6 PWM)

Analog Input Pins 6

Flash Memory 32 KB

SRAM 2 KB

EEPROM 1 KB

Voltaje 5V

Cost ~$30.00

• Flash memory

– Almacena el sketch

• SRAM

– Donde el sketch crea y manipula

las variables

• EEPROM

– Memoria no volátil donde

almacenar información

Arduino Uno

Page 7: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

ArduinoUno

PWM: modulación por ancho

de pulsos (Pulse-Width

Modulation)

E.g., control de motores, ADCs

Page 8: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

Directa

Page 9: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

Breadboard (Tablero de circuitos)

Page 10: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

Problemas: Requiere ciertosconocimientos y habilidades

Page 11: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

Módulos

Page 12: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• Lenguaje propio basado en “wiring”

– (similar a C)

• Ejemplos de comandos:

– digitalWrite(pin#, HIGH or LOW);

– digitalRead(pin#);

– Serial.println(“hola”);

• Estructura del código:

– setup{ //código que se corre una vez al inicio }

– void loop{ //código principal }

Intro

http://arduino.cc/es/Reference/HomePage

http://www.tinkerkit.com/reference/

Page 13: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

Conectar Arduino mediante USB

Instalar driver

• Se encuentra en la carpeta del IDE

Abrir IDE

• Herramientas -> Tarjeta -> Arduino UNO

• Herramientas -> Puerto Serie -> COM#

Intro

13

Page 14: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• #define O0 11

• #define O1 10

• #define O2 9

• #define O3 6

• #define O4 5

• #define O5 3

• #define I0 A0

• #define I1 A1

• #define I2 A2

• #define I3 A3

• #define I4 A4

• #define I5 A5

Definición de los pines

14

SOLO PARA THINKERKIT!!!

Page 15: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• Hacer que un LED se encienda y apague continuamente

• Conectar un LED al output O0.

• Los zócalos se conectan con sensores/actuadores del mismo color.

• pinMode– INPUT

– OUTPUT

• digitalWrite– HIGH

– LOW

• delay

#define O0 11

void setup() {

pinMode(O0, OUTPUT);

}

void loop() {

digitalWrite(O0, HIGH);

delay(1000);

digitalWrite(O0, LOW);

delay(1000);

}

Ejemplo 1

15

Page 16: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• Hacer que el LED se

encienda cuando

toquemos un

pulsador

• Conectar el pulsador

o el sensor táctil a I0

(#define I0 A0)

• digitalRead

– True

– False

#define O0 11

#define I0 A0

void setup() {

pinMode(O0,OUTPUT);

pinMode(I0,INPUT);

}

void loop() {

if(digitalRead(I0)){

digitalWrite(O0, HIGH);

}else{

digitalWrite(O0, LOW);

}

delay(10);

}

Ejemplo 2

16

Page 17: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• Controlar la potencia de luz de

un LED con un eje de un

joystick

• Conectar a I0 uno de los

zócalos del joystick

• analogRead

• map

– Re-mapea un número de un

rango a otro

– y=map(x,1,150,0,20);

– 1,150rango original de x

– 0,20rango destino de y

• analogWrite

#define O0 11

#define I0 A0

int analogInputValue = 0;

int analogOutputValue = 0;

void setup() {

pinMode(O0,OUTPUT);

pinMode(I0,INPUT);

}

void loop() {

analogInputValue = analogRead(I0);

analogOutputValue = map(analogInputValue,0,1023,0,255);

analogWrite(O0,analogOutputValue);

delay(10);

}

Ejemplo 3

17

Page 18: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• Para hacer un debug

muy básico

int valorSensor=20;

void setup() {

// initializa comm. serie a 9600bps

Serial.begin(9600);

}

void loop() {

Serial.print("\t valor = " );

Serial.print(valorSensor);

delay(10);

}

Serial print

Page 19: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

• Controlar la potencia de luz de dos LEDs con los dos ejes de un joystick

• Pines O0 y O1 configurados como salidas analógicas (conectar dos LEDs)

• Pines I0 e I1 configurados como entradas analógicas (conectar los dos zócalos del joystick)

• Mapear las entradas con las salidas

• #define O0 11

• #define O1 10

• #define O2 9

• #define O3 6

• #define O4 5

• #define O5 3

• #define I0 A0

• #define I1 A1

• #define I2 A2

• #define I3 A3

• #define I4 A4

• #define I5 A5

Ejemplo 4

19

Page 20: Introducción a plataformas de prototipado: Arduino (rev. 2)

http://SolEpcc.unex.es@mlinaje

#define O0 11

#define O1 10

#define I0 A0

#define I1 A1

int analogSensorValue1 = 0;

int analogSensorValue2 = 0;

int analogOutputValue1 = 0;

int analogOutputValue2 = 0;

int digitalOutputValue1 = LOW;

void setup() {

Serial.begin(9600);

pinMode(O0,OUTPUT);

pinMode(O1,OUTPUT);

pinMode(I0, INPUT);

pinMode(I1,INPUT);

}

void loop() {

analogSensorValue1 = analogRead(I0);

analogSensorValue2 = analogRead(I1);

analogOutputValue1 = map(analogSensorValue1, 0, 1023, 0, 255);

analogOutputValue2 = map(analogSensorValue2, 0, 1023, 0, 255);

analogWrite(O0, analogOutputValue1);

analogWrite(O1, analogOutputValue2);

Serial.print("sensor = " );

Serial.print(analogSensorValue1);

Serial.print("\t output = ");

Serial.println(analogOutputValue1);

delay(10);

}

Ejemplo 4

20