http://SolEpcc.unex.es@mlinaje
Marino Linaje
http://SolEpcc.unex.es@mlinaje
• ¿Qué es Arduino?
– Intro
– DIY, Open Hardware…
– Arduino Uno
• Formas de prototipado
• Programación
– Intro
– Ejemplos
http://SolEpcc.unex.es@mlinaje
openPicus
Arduino
Seeeduino
Netduino
IOIO
Raspberry Pi
LilyPad
Etc.
Plataformas Prototipado HW (microcontrontrolador)
3
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/
http://SolEpcc.unex.es@mlinaje
Open Hardware, DIY
5
Arduino board
Arduino IDE
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
http://SolEpcc.unex.es@mlinaje
ArduinoUno
PWM: modulación por ancho
de pulsos (Pulse-Width
Modulation)
E.g., control de motores, ADCs
http://SolEpcc.unex.es@mlinaje
Directa
http://SolEpcc.unex.es@mlinaje
Breadboard (Tablero de circuitos)
http://SolEpcc.unex.es@mlinaje
Problemas: Requiere ciertosconocimientos y habilidades
http://SolEpcc.unex.es@mlinaje
Módulos
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/
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
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!!!
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
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
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
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
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
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
Top Related