Introducción a
Arduino
VÍCTOR HUGO CABRERA
¿Que es Arduino?
Plataforma de desarrollo de productos
electrónicos.
Multiplataforma (Linux, Mac y Windows).
Alarmas y Sistemas de comunicaciones.
Redes de sensores.
Robótica sencilla.
¿Para que sirve Arduino?
Open Hardware.
Programación C++
Económico.
Muchos ejemplos en Internet.
Comunidad muy activa.
Características de Arduino
UNO
Microcontrolador Atmega 328 @ 16MHz.
Voltaje de trabajo 5v.
Tensión de alimentación 7v-12v.
Conexión USB.
16 Entradas/salidas digitales (DIO).
6 Entradas analógicas.
Corriente máxima de 40 mA.
Familia Arduino
Arduino UNO Arduino LyliPad Arduino Mega 2560
Arduino FIO Arduino PRO Arduino Mega ADK
Conceptos
básicos
de electrónica
• ALIMENTACIÓN Y TIERRA
• TIPOS DE SEÑALES
• CIRCUITOS BÁSICOS
Alimentación y tierra
Todos los circuitos tiene dos
conexiones: (+) y (-)
Ningún circuito puede tener una
única conexión.
Los circuitos tienen que estar
alimentados para funcionar.
Tipos de señales
Señales analógicas:
◦ Pueden tener cualquier valor
dentro de un rango.
◦ En Arduino entre 0 y 5 v
Señales digitales:
◦ Tienen dos estados:
◦ High (H) entre 4,5 y 5,3 v
◦ Low (L) entre -0,3 y 0,5v
Circuitos básicos
Conexión de un LED Conexión de un botón
Conexión de un relé Conexión de un altavoz
Toma de contacto
• INSTALACIÓN DEL SOFTWARE
• ENTORNO DE DESARROLLO
• CONFIGURACIÓN DEL PUERTO USB
• COMPILACIÓN
Instalación del software
Descargamos la última versión de: [Link]
Descargar e instalar Java
El software consta de dos partes_
◦ Entorno de desarrollo
◦ Puerto virtual FTDI (Serie)
Módulos
Shields Arduino
Motores Relés Matriz de leds
WiiChuck Midi GPS
Familia Arduino
Display 7 segmentos Arduino LyliPad
Display LCD Alfanum. Display LCD Matricial
Ethernet Arduino PRO Arduino Mega ADK
Simulador
Simulador
[Link]
Programación de
Arduino
• BLOQUES BÁSICOS
• INSTRUCCIONES BÁSICAS
• ESTRUCTURAS DE CONTROL
• PRIMER PROGRAMA
Bloques básicos de código
Se ejecuta
una sola vez
Se ejecuta
infinitamente
Instrucciones básicas
pinMode(nº Pin, Configuración)
◦ nº Pin: entre 0 y 13.
◦ Configuración: INPUT o OUTPUT
digitalWrite(nº Pin, Estado)
◦ nº Pin: entre 0 y 13.
◦ Estado: HIGH o LOW
digitalRead(nº Pin)
◦ nº Pin: entre 0 y 13.
analogRead(nº Pin);
◦ nº Pin: entre 0 y 5.
Instrucciones básicas
[Link](Velocidad)
◦ Velocidad: típicamente 9600.
[Link](Variable)
◦ Variable: Dato a mandar
Serial. read()
Delay(ms)
◦ ms: Tiempo de espera en milisegundos.
Todas las funciones en:
[Link]
Led intermitente
Se trata de realizar un
ejercicio básico que
consiste en encender y
apagar un led que
conectamos en el PIN 13
de Arduino que lo
configuramos como
salida. El tiempo de
encendido y apagado es
de 1 segundo.
Led intermitente
int ledPin = 13; seg. (tiempo apagado)
void setup() { }
pinMode(ledPin, OUTPUT); void loop()
// Definición de la salida en el PIN {
13 //Configuración
digitalWrite(ledPin, HIGH);
// designa la salida digital al PIN
13 delay(1000);
// bucle de funcionamiento digitalWrite(ledPin, LOW);
// activa el LED // espera 1 seg. delay(1000);
(tiempo encendido) }
// desactiva el LED // espera 1
Pulsador
Cuando se pulsa el pulsador (entrada5 a “0”) se enciende y se apaga de
forma intermitente la salida 13
Pulsador
#define LED 12 {
#define BUTTON 7 if ( digitalRead(BUTTON) == HIGH )
void setup() {
{ digitalWrite(LED, HIGH); // turn on
the LED
pinMode(LED, OUTPUT); // output
for the LED delay(500); // wait for 0.5 seconds
pinMode(BUTTON, INPUT); // input digitalWrite(LED, LOW); // turn off
for the button the LED
} }
void loop() }
Secuencia de Leds
Se trata de encender y
apagar 3 LEDs colocados
en las salidas 6, 7 y 8
(PIN6, PIN7 y PIN8) con
una cadencia de 200 ms.
Las variables asignadas a
cada led son ledPin1,
ledPin2 y ledPin3.
Secuencia de Leds
// Encendido y apagado de 3 LEDs digitalWrite(ledPin3, LOW); }
int ledPin1 = 6; // Define las salidas de los void loop(){ //Bucle de Funcionamiento
LED ́s
digitalWrite(ledPin1, HIGH); // Apaga y
int ledPin2 = 7; enciende los leds cada 200 ms delay(200);
int ledPin3 = 8; digitalWrite(ledPin1, LOW);
void setup() { // Configura las SALIDAS digitalWrite(ledPin2, HIGH);
pinMode(ledPin1, OUTPUT); // declarar delay(200);
LEDs como SALIDAS
digitalWrite(ledPin2, LOW);
pinMode(ledPin2, OUTPUT);
digitalWrite(ledPin3, HIGH);
pinMode(ledPin3, OUTPUT);
delay(200);
digitalWrite(ledPin1, LOW); // Apaga los
LEDs digitalWrite(ledPin3, LOW);
digitalWrite(ledPin2, LOW); }
Indicador Nivel
Se trata de construir u
indicador de nivel que sea
capaz de medir el valor de una
señal de entrada generada por
un potenciómetro desde una
entrada analógica.
Se establecerán 3 diodos Led
conectados a las salidas PIN6,
PIN7 y PIN8. La entrada la
conectaremos en la entrada
analógica PIN 1 (analog IN1)
Indicador Nivel
int ledPin1 = 8; // Selección de PIN para cada LED turn_off(); //
int ledPin2 = 7; }
int ledPin3 = 6; void loop()
int inPin= 1; // selecciona la entrada analógica 1 { int val;
(potenciómetro)
val= analogRead(inPin); // lee el valor de la señal
void turn_off() { //Apaga los 3 LEDS analógica
digitalWrite(ledPin1, LOW); turn_off(); apaga los tres LED
digitalWrite(ledPin2, LOW); // Si el valor de la señal medida es > 256 enciende
LED del PIN8
digitalWrite(ledPin3, LOW);
if (val>= 256) digitalWrite(ledPin1, HIGH);
}
// Si el valor de la señal medida es > 512 enciende
void setup() { LED del PIN7
pinMode(ledPin1, OUTPUT); // declara LEDs como if (val>= 512) digitalWrite(ledPin2, HIGH);
salidas
// Si el valor de la señal medida es > 758 enciende
pinMode(ledPin2, OUTPUT); LED del PIN6
pinMode(ledPin3, OUTPUT); if (val>= 768) digitalWrite(ledPin3, HIGH); }