Académique Documents
Professionnel Documents
Culture Documents
Introduccin.
Entradas y salidas digitales.
Entradas analgicas.
Salidas PWM.
Interrupciones.
Comunicacin Serial.
Introduccin
Arduino es un proyecto desarrollado como una
plataforma de software y hardware libres, para
ser usada por gente no especializada en estos
campos (diseadores, artistas o simples
aficionados).
Por ser abierta, econmica y fcil de usar se ha
convertido en una de las plataformas ms
utilizadas para el desarrollo de dispositivos
electrnicos interactivos.
Es ideal para la enseanza en las reas de la
programacin y la electrnica de una manera
muy atractiva y novedosa, donde se aprende a
partir de la construccin de proyectos
interactivos.
Introduccin
Arduino puede tomar informacin del entorno a
travs de sus pines de entrada de toda una gama
de sensores y puede afectar aquello que le rodea
controlando luces, motores y otros actuadores.
El microcontrolador en la placa Arduino se
programa mediante el lenguaje de programacin
Arduino.
Los proyectos hechos con Arduino pueden
ejecutarse sin necesidad de estar conectado a
una PC.
Construccin
Microcontrolador Atmel ATmega328
8 bits.
Memoria Flash 32K Bytes (Almacenamiento del programa).
Memoria EEPROM 1K Bytes (Memoria para el usuario).
Memoria SRAM 2K Bytes (Memoria para ejecucin del programa).
1 Puerto Serial.
1 Puerto I2C.
1 Puerto SPI.
14 E/S Digitales (6 PWM).
6 Entradas analgicas.
2 Interrupciones.
Sketch
Nombre que usa Arduino para un programa. Es la
unidad de cdigo que se descarga y ejecuta en la placa
Arduino.
Todo lo que se encuentra entre /* y */ es ignorado por
Arduino cuando ejecuta el sketch.
/* Se declara la variable ledPin de tipo entero y se le asigana
el valor 13, que es el pin donde se conecta el LED integrado
en la placa */
int ledPin = 13;
Sketch
Estilo para comentarios cortos de una sola lnea.
Comienzan con // y continan hasta el final de la lnea.
Declaracin de variables.
Lugar donde se almacena un dato.
Posee un nombre, un tipo y un valor.
Declaracin de Funciones.
Cdigo que puede ser utilizado desde cualquier otro punto del
sketch
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
Sketch
Existen dos funciones especiales que son parte de
cada sketch de Arduino:
setup().
Se establece al iniciar un sketch. Se emplea para iniciar
variables, establecer el estado de los pines, inicializar
libreras, etc.
Se ejecutar una nica vez despus de que se conecte la
placa Arduino a la fuente de alimentacin o cuando se pulse
el botn de reinicio.
loop().
Se llama una y otra vez y es el corazn de la mayora de los
sketches.
Ejemplo 1
/*
Este programa enciende un led durante 1s y lo apaga durante 1s de forma cclica.
*/
int led = 13;
void setup()
{
pinMode(led, OUTPUT); // Se indica que el pin se ocupar como salida.
}
void loop()
{
digitalWrite(led, HIGH); // enciende el LED
delay(1000);
// espera 1s
digitalWrite(led, LOW); // apaga el LED 1s.
delay(1000);
// espera 1 s
}
Ejemplo 2
/*
Este programa lee un pin de entrada digital y muestra el valor leido en un LED de
forma cclica.
*/
int ledPin = 13; // LED conecado al pin digital nmero 13
int inPin = 7;
// botn conectado al pin digital nmero 7
int val = 0;
// variable donde se almacena el valor ledo
void setup()
{
pinMode(ledPin, OUTPUT);
// establece el pin digital nmero 13 como salida
pinMode(inPin, INPUT);
// establece el pin digital nmero 7 como entrada
}
void loop()
{
val = digitalRead(inPin);
// leer el pin de entrada
digitalWrite(ledPin, val);
// establece el LED al valor del botn
}
Ejemplo 2
Ejemplo 3
/*
El programa lee un pin de entrada digital y enciende un LED slo si una entrada digital tiene valor de 1.
*/
int ledPin = 13; // LED conecado al pin digital nmero 13
int inPin = 7;
// botn conectado al pin digital nmero 7
int val = 0;
// variable donde se almacena el valor ledo
void setup()
{
pinMode(ledPin, OUTPUT);
// establece el pin digital nmero 13 como salida
pinMode(inPin, INPUT);
// establece el pin digital nmero 7 como entrada
}
void loop()
{
digitalWrite(ledPin, LOW);
// apaga el LED
val = digitalRead(inPin);
// leer el pin de entrada
if (val==HIGH)
{
digitalWrite(ledPin, HIGH);
// enciende el LED
}
}
Entrada Analgica
Arduino tiene 6 canales conectados a un
conversor analgico digital de 10 bits.
Convierte voltajes entre 0v y 5v a un nmero
entero entre 0 y 1023.
Resolucin: 5 v / 1024 = 0.0049 voltios (4.9
mV) por unidad.
El conversor tarda aproximadamente 100s en
leer y convertir a su equivalente digital una
entrada analgica.
Entrada Analgica
analogRead(pin)
pin: nmero del pin de la entrada
analgica que deseamos leer (0 a 5)
Devuelve
variable int (0 a 1023)
Ejemplo 4
Ejemplo 4
int analogPin = 3;
int val = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(analogPin);
Serial.println(val);
}
Ejemplo 5
int analogPin = 3;
int val = 0;
float temp, volts;
void setup()
{
Serial.begin(9600);
}
void loop()
{
val = analogRead(analogPin);
// obtiene el equivalente digital del voltaje del sensor
volts=val*0.0049;
// calcula el valor real del voltaje de salida del sensor
temp=volts/10;
Serial.print( "Temperatura= ");
Serial.println(temp);
// enva val por el puerto serial para mostrarlo en pantalla.
}
Interrupciones.
Son sucesos que pueden ocurrir en cualquier momento por lo que no podemos prever
exactamente cuando detectarlas.
Ejemplo 6
int pin = 13;
int estado = LOW;
void setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, interrupcion, CHANGE);
Serial.begin(9600);
}
void loop()
{
digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
delay(1000);
}
// enciende el LED
// espera 1s
// apaga el LED 1s
// espera 1 s
void interrupcion()
{
Serial.println("Interrupcin ");
}
Interrupciones.
noInterrupts()
Desactiva las interrupciones.
interrupts()
Activa las interrupciones, despus de haberlas desactivado con
nointerrpts().
detachInterrupt(interrupt)
Apaga la interrupcin dada.
Salidas PWM
Modulacin por Ancho de Pulso (PWM = Pulse Width Modulation)
Seal que conmuta constantemente entre encendido y apagado.
Arduino permite variar la proporcin de tiempo entre encendido y
apagado.
Salidas PWM
analogWrite(pin, valor)
pin: pin en el cual se quiere generar la seal PWM.
valor: El ciclo de trabajo deseado comprendido
entre 0 y 255.
Arduino generar una onda cuadrada estable con
el ciclo de trabajo especificado hasta que se
vuelva a llamar a la funcin analogWrite() con
otro valor.
La frecuencia de la seal PWM es de
aproximadamente 490 Hz.
Ejemplo 7
int ledPin = 13;
int analogPin = 3;
int val = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
val = analogRead(analogPin);
analogWrite(ledPin, val / 4);
}
Ejemplo 8
Control de velocidad de motor.
Ejemplo 9
#include <Wire.h>
#include <Wire.h>
void setup()
{
Wire.begin();
void setup()
{
Wire.begin(2);
Wire.onRequest(enviar);
Serial.begin(9600);
void loop()
{
Wire.requestFrom(2, 5);
while(Wire.available())
{
char c = Wire.read();
Serial.print(c);
}
delay(500);
}
}
// solicita 5 bytes del esclavo #2
// verifica si hay flujo de datos
// almacena los datos en c
// muestra en pantalla los datos
void loop()
{
delay(100);
}
void enviar()
{
Wire.write(HOLA ");
}