Você está na página 1de 28

Contenido

Introduccin.
Entradas y salidas digitales.
Entradas analgicas.
Salidas PWM.
Interrupciones.
Comunicacin Serial.

Introduccin
Arduino es un proyecto desarrollado como una
plataforma desoftwarey hardwarelibres, 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 ellenguaje de
programacin Arduino.
Los proyectos hechos con Arduino
pueden ejecutarse sin necesidad de
estar conectado a una PC.

Construccin
Microcontrolador AtmelATmega328

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;
pin 13.
void setup()
{
pinMode(led, OUTPUT);
salida.
}

// Se d nombre al led conectado en el

// Se indica que el pin se ocupar como

void loop()
{
digitalWrite(led, HIGH); // enciende el LED
delay(1000);
// espera 1s
digitalWrite(led, LOW); // apaga el LED 1s.

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;
potencimetro
int val = 0;
conversor.
void setup()
{
Serial.begin(9600);
}

// pin analgico 3 conectado a la terminal central del


// variable en la que se almacenar el valor ledo por el

// Inicializa el modulo Serial.

void loop()
{
val = analogRead(analogPin);
Serial.println(val);
pantalla.
}

// lee el valor de tensin del pin


// enva val por el puerto serial para mostrarlo en

Ejemplo 5
int analogPin = 3;
sensor
int val = 0;
float temp, volts;
void setup()
{
Serial.begin(9600);
}

// pin analgico 3 conectado a la salida del


// variables a utilizar

// 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= ");

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).
mododefine cuando la interrupcin debe ser disparada.
LOWpara disparar la interrupcin en cualquier momento que el pin se encuentre a valor
bajo.
CHANGEpara disparar la interrupcin en el momento que el pin cambie de valor.
RISINGpara disparar la interrupcin cuando el pin pase de valor bajo a alto.
FALLINGpara 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 funcinanalogWrite() 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), semibidireccional. 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
// esclavo con direccin 2

Wire.onRequest(enviar);
// funcin a llamar c
// maestro solicite informacin
Serial.begin(9600);
}
void loop()
{
delay(100);
}
void enviar()
{
Wire.write(HOLA ");
}

// responde con los 5

Você também pode gostar