Vous êtes sur la page 1sur 28

Contenido

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.
Circuito oscilador 16MHz.
Conector USB.
Conector para fuente de alimentacin (7-12v).
Conectores (Headers).
Botn de reset.
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;

Permite explicar lo que hace el programa, como
funciona, o por que esta escrito de tal manera. Esto
ayuda a entender en el futuro el cdigo.
Sketch
Estilo para comentarios cortos de una sola lnea.
Comienzan con // y continan hasta el final de la lnea.

int ledPin = 13; // LED connected to digital pin 13

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.
Se deben incluir incluir ambas funciones en el sketch,
aun cuando no se utilicen.
Entradas y Salidas Digitales.
Los pines de Arduino por defecto son de entrada, por
lo que no es necesario configurarlos explcitamente
como entradas.

Se recomienda una resistencia pull-up (a +5 V), o una
resistencia pull-down (resistencia a tierra) en la
entrada. ( 10K ).

En modo salida pueden proporcionar 40mA mximo.
Ejemplo 1
/*
Este programa enciende un led durante 1s y lo apaga durante 1s de forma cclica.
*/

int led = 13; // Se d nombre al led conectado en el pin 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; // pin analgico 3 conectado a la terminal central del potencimetro
int val = 0; // variable en la que se almacenar el valor ledo por el conversor.

void setup()
{
Serial.begin(9600); // Inicializa el modulo Serial.
}

void loop()
{
val = analogRead(analogPin); // lee el valor de tensin del pin
Serial.println(val); // enva val por el puerto serial para mostrarlo en pantalla.
}
Ejemplo 5
int analogPin = 3; // pin analgico 3 conectado a la salida del sensor
int val = 0; // variables a utilizar
float temp, volts;
void setup()
{
Serial.begin(9600); // Inicializacin del modulo Serial.
}

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.

attachInterrupt(interrupcion, funcion, modo)

Especifica la funcin a que se va a invocar cuando se produce una interrupcin externa.
La mayora de las placas Arduino tienen dos interrupciones externas: Las nmero 0 (en
el pin digital 2) y la 1 (en el pin digital 3).

interrupcion: el nmero de la interrupcin (0 1).
funcion: nombre de la funcin que se va a llamar cuando la interrupcin sucede. (esta
funcin no debe tener parmetros ni devolver nada. Esta funcin se llama rutina de servicio
de interrupcin).
modo define cuando la interrupcin debe ser disparada.
LOW para disparar la interrupcin en cualquier momento que el pin se encuentre a valor
bajo.
CHANGE para disparar la interrupcin en el momento que el pin cambie de valor.
RISING para disparar la interrupcin cuando el pin pase de valor bajo a alto.
FALLING para cuando el pin cambie de valor alto a bajo.

Dentro de la funcin enlazada, la funcin delay() no funciona y el valor devuelto por la
funcin millis() no se incrementar. Los datos serie recibidos en el transcurso de esta
interrupcin pueden perderse. No deberas declarar como voltil cualquier variable que
modifiques dentro de la funcin.
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); // enciende el LED
delay(1000); // espera 1s
digitalWrite(pin, LOW); // apaga el LED 1s
delay(1000); // 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; // LED conectado al pin digital 13
int analogPin = 3; // potencimetro conectado al pin 3
int val = 0; // variable en el que se almacena el dato ledo

void setup()
{
pinMode(ledPin, OUTPUT); // sets the pin as output
}

void loop()
{
val = analogRead(analogPin); // lee la tensin en el pin
analogWrite(ledPin, val / 4); // se ajusta el ciclo de trabajo
}
Ejemplo 8
Control de velocidad de motor.
Comunicacin Serial I2C
Significa Inter Integrated Circuit.
Bus cuyo mbito de aplicacin es la comunicacin entre circuitos
integrados.
El bus I2C fue desarrollado por Philips al inicio de la dcada de 1980.
Actualmente los principales fabricantes de dispositivos semiconductores
ofrecen circuitos que implementan un bus I2C para su control.
El comit I2C es el encargado, entre otras cuestiones, de asignar las
direcciones I2C a cada tipo de circuito. De esta manera cada funcin
implementada, independientemente de fabricante, posee la misma
direccin; es decir, circuitos que realicen funciones equivalentes debern
poseer la misma direccin oficial I2C independientemente del fabricante.

Comunicacin Serial I2C
El bus I2C slo define dos seales, adems del comn:

SDA. Es la lnea de datos serie (Serial Data, en ingls), semi-
bidireccional. Elctricamente se trata de una seal a colector o
abierto. Es gobernada por el emisor, sea ste un maestro o un esclavo.

SCL. Es la seal de sincrona (Serial Clock en ingls). Elctricamente se
trata de una seal a colector abierto. En un esclavo se trata de una
entrada, mientras que en un maestro es una salida. Un maestro,
adems de generar la seal de sincrona suele tener la capacidad de
evaluar su estado; el motivo es poder implementar un mecanismo de
adaptacin de velocidades. Esta seal es gobernada nica y
exclusivamente por el maestro.

Ejemplo 9
#include <Wire.h>

void setup()
{
Wire.begin(); // se integra al bus I2C
// el maestro no requiere direccin
Serial.begin(9600); // configura la velocidad del puerto serial
}

void loop()
{
Wire.requestFrom(2, 5); // solicita 5 bytes del esclavo #2
while(Wire.available()) // verifica si hay flujo de datos
{
char c = Wire.read(); // almacena los datos en c
Serial.print(c); // muestra en pantalla los datos
}
delay(500);
}
#include <Wire.h>

void setup()
{
Wire.begin(2); // se integra al bus I2C
// esclavo con direccin 2
Wire.onRequest(enviar); // funcin a llamar cuando el
// maestro solicite informacin
Serial.begin(9600);
}

void loop()
{
delay(100);
}

void enviar()
{
Wire.write(HOLA "); // responde con los 5 bytes
}

Vous aimerez peut-être aussi