Post on 24-Jun-2015
description
http://SolEpcc.unex.es@mlinaje
Taller de Iniciación
Arduino
Marino Linaje
http://SolEpcc.unex.es@mlinaje
Índice
• ¿Qué es Arduino?– Intro– DIY, Open Hardware…– Arduino Uno
• Formas de prototipado• Programación
– Intro– Ejemplos
http://SolEpcc.unex.es@mlinaje 3
¿Qué es Arduino?
openPicus
Arduino
Seeeduino
Netduino
IOIO
Raspberry Pi
LilyPad
Etc.
Plataformas Prototipado HW (microcontrontrolador)
http://SolEpcc.unex.es@mlinaje
¿Qué es Arduino?
• 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/
http://SolEpcc.unex.es@mlinaje 5
¿Qué es Arduino?Open Hardware, DIY
Arduino board
Arduino IDE DIY: Do It Yourself
http://SolEpcc.unex.es@mlinaje
Hardware
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
http://SolEpcc.unex.es@mlinaje
HardwareArduino Uno
PWM: modulación por ancho de pulsos (Pulse-Width Modulation)E.g., control de motores, ADCs
http://SolEpcc.unex.es@mlinaje
Formas de prototipadoDirecta
http://SolEpcc.unex.es@mlinaje
Formas de prototipadoBreadboard (Tablero de circuitos)
http://SolEpcc.unex.es@mlinaje
Formas de prototipadoProblemas: Requiere ciertos conocimientos y habilidades
http://SolEpcc.unex.es@mlinaje
Formas de prototipadoMódulos
http://SolEpcc.unex.es@mlinaje
Programación
• 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/HomePagehttp://www.tinkerkit.com/reference/
http://SolEpcc.unex.es@mlinaje 13
Programación
Conectar Arduino mediante USB
Instalar driver• Se encuentra en la
carpeta del IDE
Abrir IDE• Herramientas ->
Tarjeta -> Arduino UNO
• Herramientas -> Puerto Serie -> COM#
Intro
http://SolEpcc.unex.es@mlinaje 14
Programación
• #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
SOLO PARA THINKERKIT!!!
http://SolEpcc.unex.es@mlinaje 15
Programación
• 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
http://SolEpcc.unex.es@mlinaje
Programación
• 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
http://SolEpcc.unex.es@mlinaje
Programación
• 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
http://SolEpcc.unex.es@mlinaje
Programación
• 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
http://SolEpcc.unex.es@mlinaje
Programación
• 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
http://SolEpcc.unex.es@mlinaje
Programación#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