Académique Documents
Professionnel Documents
Culture Documents
PROGRAMACIN EN
ARDUINO N1 PLUS
Programacin en Arduino N1
Plus
201
6
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 (basado
en wiring) y el entorno de desarrollo arduino (basado en processing). Los
proyectos hechos con arduino pueden ejecutarse sin necesidad de conectar a
un ordenador, si bien tienen la posibilidad de hacerlo y comunicar con
diferentes tipos de software.
rango
de
dispositivos embebidos.
de
Qu es el Arduino?
Arduino es una plataforma de hardware de cdigo abierto, basada en una
sencilla placa con entradas y salidas, analgicas y digitales, en un entorno
Programacin en Arduino N1
Plus
201
6
Programacin en Arduino N1
Plus
201
6
Setup()
Cdigo
void setup()
{
pinMode(pin, OUTPUT); // programa un 'pin' como salida.
}
Loop()
void loop()
{
digitalWrite(pin, HIGH);
delay(1000);
digitalWrite(pin, LOW);
delay(1000);
Programacin en Arduino N1
Plus
201
6
Una llave de apertura {debe siempre ser seguido de una llave de cierre }, de
lo contrario puede haber errores de compilacin. El ambiente arduino
incluye una caracterstica conveniente para revisar el balance de las llaves.
Solo selecciona una llave y se destaca a su compaera de cierre.
int x = 13;
Programacin en Arduino N1
Plus
201
6
Cdigo
// lnea de comentarios
Los comentarios de lnea simple comienzan con // y terminan con la siguiente
lnea de cdigo. Estos comentarios son ignorados por el programa y no
ocupan espacio de memoria, al igual que el block de comentarios.
Cdigo
// Este es un comentario de una sola lnea.
Constantes.
El lenguaje Arduino tiene algunos valores predefinidos, qu son llamados
constantes. Son usados para hacer programas fciles de leer. Las constantes
son clasificadas en grupos.
True/False
Estas son constantes Boolean que definen niveles lgicos. FALSE es fcilmente
definido como 0 (cero) mientras que TRUE es frecuentemente definido como 1,
pero puede tambin ser cualquiera excepto cero. Entonces en el sentido
Boolean, -1, 2 y -200 tambin son definidos como TRUE.
Cdigo
If (b == TRUE);
{
doSomething;
}
Programacin en Arduino N1
Plus
201
6
High/low
Estas constantes definen niveles de pin como HIGH (alto) o LOW (bajo) y
son usadas cuando se leen o se escriben pines digitales. HIGH es definido
como nivel 1 lgico, ON o 5 volts mientras que LOW es el nivel lgico 0, OFF o
0 volts.
Cdigo
digitalWrite(13, HIGH);
Input/output
Constantes usadas con la funcin pinMode() para definir el modo de un pin
digital ya sea como INPUT (entrada) u OUTPUT (salida).
Cdigo
pinMode(13, OUTPUT);
If
La sentencia if prueba si una cierta condicin ha sido alcanzada, tal como un
valor analgico estando encima de un cierto nmero, y ejecuta cualquier
sentencia dentro de las llaves si la sentencia es verdadera. Si es falsa el
programa pasa por alto las sentencias. El formato para una prueba
Cdigo
If (algunaVariable ?? valor)
{
haceAlgo;
}
Programacin en Arduino N1
Plus
201
6
If- else
If... else permite para si no decisiones para ser tomadas. Por ejemplo, si
quiere probar una entrada digital y hacer algo si la entrada fue HIGH o en lugar
de eso hacer otra cosa si la entrada fue LOW, se deber escribir de este modo:
Cdigo
If (inputPin == HIGH)
{
doThingA;
}
else
{
doThingB;
}
While
Los ciclos while se estarn ciclando continua e infinitamente, hasta que la
expresin dentro del parntesis se vuelva falsa. Algo debe cambiar la variable
de prueba, o el ciclo nunca terminara. Esto podra ser en el cdigo, tal como
una variable de incremento, o una condicin externa, tal como un sensor de
prueba.
Cdigo
Programacin en Arduino N1
Plus
201
6
PinMode(pin, mode)
Usado en void setup() para configurar un pin especfico para que se comporte ya
sea como INPUT o como OUTPUT.
Cdigo
pinMode(pin, OUTPUT);//Establece pin como salida
Los pins digitales del arduino por default estn como INPUTS (entradas), as
que no es necesario declararlos explcitamente como entradas con pinMode().
Los pins configurados como INPUT se dice que estn en un estado de alta
impedancia.
digitalRead(pin)
Lee el valor de un pin digital especfico con el resultado ya sea HIGH o LOW. El
pin puede ser especificado ya sea como variable o como constante (0-13).
Cdigo
Value = digitalRead(Pin);
digitalWrite(pin, value)
Fija las salidas a un nivel lgico HIGH o LOW (enciende o apaga) en un pin
digital especfico. El pin puede ser especificado como variable o como constante
(0-13).
Cdigo
digitalWrite(pin, HIGH);
Programacin en Arduino N1
Plus
201
6
analogRead(pin)
Lee el valor de un pin analgico especfico con una resolucin de 10-bit. Esta
funcin solo trabaja en los pines analgicos de entrada (0-5). El rango de
valores enteros resultante va de 0 a 1023.
Cdigo
value = analogRead(pin);
analogWrite(pin, value)
Escribe un valor pseudo anlogo usando habilitacin de hardware pulse width
modulation (PWM) a un pin de salida marcado como PWM.
En los arduinos ms nuevos con el chip ATmega168, esta funcin trabaja en
los pines 3, 5, 6, 9, 10 and 11. Los arduinos ms viejos con el chip ATmega8
solo soporta los pines 9, 10 y 11. El valor puede ser especificado como una
variable o constante con el valor de 0 a 255.
Cdigo
analogWrite(pin,
//escribe value
analgico.
value);
a pin
Delay(ms)
Pausa un programa por la cantidad de tiempo que sea especificado en
milisegundos, donde 1000 equivale a 1 segundo.
Cdigo
delay(1000);
Programacin en Arduino N1
Plus
201
6
Serial.begin(rate)
Abre el puerto serial y establece la velocidad para la transmisin de datos
en serie. La velocidad tpica de transmisin para la comunicacin con la
computadora es de 9600bps aunque tambin soporta otras velocidades.
Cdigo
Void setup()
{
Serial.begin(9600);
}
EJEMPLO DE PROGRAMAS
ENTRADAS DIGITALES.
SALIDA DIGITAL.
Cdigo
int ledpin = 13;
// LED en el pin 13 void
setup()
// corre una vez
Programacin en Arduino N1
Plus
201
6
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
digitalWrite(ledPin, HIGH);
// prende el LED delay(1000);
// pausa por un segundo
digitalWrite(ledPin, LOW);
// apaga el LED delay(1000);
// pausa por un segundo
}
ENTRADA DIGITAL.
Programacin en Arduino N1
Plus
201
6
{
pinMode(ledPin, OUTPUT);
// Se
declara el LED como salida pinMode(inPin,
INPUT);
// Se declara el
Switch como entrada
}
void loop()
{
If (digitalRead(inPin) == HIGH)
{
digitalWrite(ledPin, HIGH);
// prende el LED delay(1000);
// pausa por un segundo
digitalWrite(ledPin, LOW);
// apaga el LED delay(1000);
// pausa por un segundo
}
}
SALIDA PWM.
Programacin en Arduino N1
Plus
Cdigo
int ledPin = 9;
void setup(){ ]
// no se requiere
Void loop()
{
for (int i=0; i<=255; i++)
// incremento de i
{
analogWrite(ledPin, i);
// establece el nivel de brillo a i
delay(100);
// pausa por 100ms
}
for (int i=255; i>=0; i--)
{
analogWrite(ledPin, i);
// establece el nivel de brillo a i
delay(100);
//pausa por 100ms
}
}
ENTRADA DE POTENCIOMETRO
// decremento de i
201
6
Programacin en Arduino N1
Plus
201
6
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
digitalWrite(ledPin, HIGH);
// prende el LED
delay(analogRead(potPin));
// pausa el programa
digitalWrite(ledPin, LOW);
// apaga el LED
delay(analogRead(potPin));
// pausa el programa
Programacin en Arduino N1
Plus
201
6
Prctica # 1
Salidas y entradas digitales
Objetivo:
El alumno programar e identificara las entradas y salidas digitales con el
encendido y apagado de LEDs con o sin intermitencia mediante la tarjeta Arduino
Uno-R3.
Materiales a utilizar:
1. 5 LEDS, de distinto colores.
2. Una tarjeta Arduino Uno-R3.
3. Cable jumper dupont Macho - Hembra
4. Tarjeta Protoboard.
5. Resistencias 220 ohms.
6. Botn normalmente abierto.
Montaje de la Prctica:
Programacin en Arduino N1
Plus
201
6
Programacin en Arduino N1
Plus
201
6
{
pinMode(LED,OUTPUT); // Se declara el tipo de seal.
}
void loop()
{
digitalWrite(LED,HIGH); // Enva una seal digital en alto (1).
delay(1000);
Programacin en Arduino N1
Plus
201
6
Programacin en Arduino N1
Plus
201
6
}
void loop(){
val=digitalRead(BOTON);
if (val==HIGH){
// Si el botn es presionado.
digitalWrite(LED,HIGH);
// Enciende el Led.
}
else {
//De lo contrario.
digitalWrite(LED,LOW);
}
}
Actividad en clase:
Programacin en Arduino N1
Plus
201
6
Prctica # 2
Enlace de potencia para activacin de lmparas de
corriente alterna.
Objetivo:
El alumno programar e identificara las entradas y salidas digitales con el
encendido y apagado de luminarias conectadas a corriente alterna con el uso del
mdulo de relevadores (enlace de potencia) mediante la tarjeta Arduino Uno-R3.
Materiales a utilizar:
1. Una tarjeta Arduino Uno-R3.
2. Mdulo de relevadores (enlace de potencia).
3. Cable jumper dupont Macho - Hembra
4. Resistencia 220 ohms.
5. Botn normalmente abierto.
6. Clavija con cable.
7. Socket con cable.
Programacin en Arduino N1
Plus
201
6
Montaje de la Prctica:
Programacin en Arduino N1
Plus
201
6
val=digitalRead(BOTON);
if (val==HIGH){
// Si el botn es presionado.
digitalWrite(RELEVADOR,HIGH);
// Enciende la lmpara.
}
else {
//De lo contrario.
digitalWrite(RELEVADOR,LOW);
}
}
Prctica # 3
Programacin en Arduino N1
Plus
201
6
Materiales a utilizar:
1. Una tarjeta Arduino Uno-R3.
2. Mdulo de relevadores (enlace de potencia).
3. Fotoresistencia (LDR).
4. Cable jumper dupont Macho - Hembra
5. Resistencia 220 ohms.
6. Botn normalmente abierto.
7. Clavija con cable.
8. Socket con cable.
Montaje de la Prctica:
Al presionar el botn pulsador inicie el programa, con el uso de la fotoresistencia
(LDR) detecte ausencia de luz, y mande la seal de salida al mdulo de
Programacin en Arduino N1
Plus
201
6
relevadores para que pase de estar en estado abierto (NO) ha estado cerrado
(NC) y encienda la lmpara, como se muestra en la figura 4:
Programacin en Arduino N1
Plus
201
6
Programacin en Arduino N1
Plus
201
6
int valor_sensor = 0;
int valor_limite = 490; //Este valor har que la lmpara cambie de estado a una
determinada luminosidad (con distintos valores para ajustar la sensibilidad)
void setup() {
//Configuracin de los pin como entrada o salida
Serial.begin(9600);
pinMode(Lmpara,OUTPUT);
pinMode(LDR,INPUT);
}
void loop () //Configuracin de los valores del LDR
{
valor_sensor = analogRead(LDR);
luz = (5.0 * valor_sensor * 100.0)/1024.0; //Para entender esta frmula visitar:
http://programarfacil.com/podcast/48-sensor-de-temperatura-en-arduino/
Serial.print(luz);
Serial.println(" Luz");
delay(300);
if (luz <= valor_limite) //Si el valor de luz es menor o igual que el valor limite
{
digitalWrite (Lmpra, LOW); //La lmpara se apaga
}
if (luz > valor_limite) //Si es mayor que el valor limite
{
digitalWrite (LED, HIGH); //El led se enciende
}
}
Prctica # 4
Sensor de presencia (SONAR) para deteccin
de personas enfocada a seguridad.
Objetivo:
El alumno programar e identificara las entradas y salidas digitales con el uso del
sensor de presencia (PIR) enfocada a la seguridad en deteccin de personas .
Programacin en Arduino N1
Plus
201
6
Materiales a utilizar:
1. Una tarjeta Arduino Uno-R3.
2. Mdulo de relevadores (enlace de potencia).
3. Sensor de presencia (PIR).
4. Cable jumper dupont Macho - Hembra
5. Resistencia 220 ohms.
6. Botn normalmente abierto.
7. Clavija con cable.
8. Socket con cable.
Montaje de la Prctica:
Al presionar el botn pulsador inicie el programa, el sensor PIR al detectar
presencia mandar la seal al mdulo de relevadores para que este pase de estar
en estado abierto (NO) ha estado cerrado (NC) y encienda una alarma, como se
muestra en la figura 5:
Programacin en Arduino N1
Plus
long distancia;
long tiempo;
201
6
Programacin en Arduino N1
Plus
201
6
void setup(){
Serial.begin(9600);
pinMode(9, OUTPUT); /*activacin del pin 9 como salida: para el pulso
ultrasnico*/
pinMode(8, INPUT); /*activacin del pin 8 como entrada: tiempo del rebote del
ultrasonido*/
}
void loop(){
digitalWrite(9,LOW); /* Por cuestin de estabilizacin del sensor*/
delayMicroseconds(5);
digitalWrite(9, HIGH); /* envo del pulso ultrasnico*/
delayMicroseconds(10);
tiempo=pulseIn(8, HIGH); /* Funcin para medir la longitud del pulso entrante.
Mide el tiempo que transcurrido entre el envo
del pulso ultrasnico y cuando el sensor recibe el rebote, es decir: desde que el pi
n 12 empieza a recibir el rebote, HIGH, hasta que
deja de hacerlo, LOW, la longitud del pulso entrante*/
distancia= int(0.017*tiempo); /*frmula para calcular la distancia obteniendo un
valor entero*/
/*Monitorizacin en centmetros por el monitor serial*/
Serial.println("Distancia ");
Serial.println(distancia);
Serial.println(" cm");
delay(1000);
}
Prctica # 5
Control de lmparas mediante Smartphone
Android
Programacin en Arduino N1
Plus
201
6
Objetivo:
El alumno programar e integrar el control de I/O digitales para automatizar
lmparas de corriente alterna, con el uso del sensor e interfaz bluetooth enlazado
a una
comandos de voz.
Materiales a utilizar:
1. Una tarjeta Arduino Uno-R3.
2. Mdulo de relevadores (enlace de potencia).
3. Mdulo bluetooth HC-05.
4. Smartphone Android.
5. Cable jumper dupont Macho - Hembra
6. 6 Resistencias 220 ohms.
7. Botn normalmente abierto.
8. 5 leds diferentes colores.
9. Alarma.
10. Clavija con cable.
11. Socket con cable.
Montaje de la Prctica:
Programacin en Arduino N1
Plus
201
6
Programacin en Arduino N1
Plus
201
6
Programacin en Arduino N1
Plus
int estado=1;
void setup(){
Serial.begin(9600);
pinMode(13,OUTPUT);
pinMode(12,OUTPUT);
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
}
void loop(){
if(Serial.available()>0){
estado = Serial.read();
}
if (estado =='a'){
digitalWrite(13,1);
}
if (estado =='b'){
digitalWrite(13,0);
}
if (estado =='c'){
digitalWrite(12,1);
}
if (estado =='d'){
digitalWrite(12,0);
}
if (estado =='e'){
201
6
Programacin en Arduino N1
Plus
digitalWrite(11,1);
}
if (estado =='f'){
digitalWrite(11,0);
}
if (estado =='g'){
digitalWrite(10,1);
}
if (estado =='h'){
digitalWrite(10,0);
}
if (estado =='i'){
digitalWrite(9,1);
}
if (estado =='j'){
digitalWrite(9,0);
}
if (estado =='k'){
digitalWrite(8,1);
}
if (estado =='l'){
digitalWrite(8,0);
}
if (estado =='m'){
digitalWrite(7,1);
}
if (estado =='n'){
digitalWrite(7,0);
}
if (estado =='o'){
digitalWrite(6,1);
}
if (estado =='p'){
digitalWrite(6,0);
}
if (estado =='q'){ //all off
digitalWrite(13,0);
digitalWrite(12,0);
digitalWrite(11,0);
digitalWrite(10,0);
digitalWrite(9,0);
digitalWrite(8,0);
digitalWrite(7,0);
digitalWrite(6,0);
201
6
Programacin en Arduino N1
Plus
}
if (estado =='r'){ // all on
digitalWrite(13,1);
digitalWrite(12,1);
digitalWrite(11,1);
digitalWrite(10,1);
digitalWrite(9,1);
digitalWrite(8,1);
digitalWrite(7,1);
digitalWrite(6,1);
}
if (estado =='s'){ // blink
digitalWrite(13,1);
digitalWrite(12,1);
digitalWrite(11,1);
digitalWrite(10,1);
digitalWrite(9,1);
digitalWrite(8,1);
digitalWrite(7,1);
digitalWrite(6,1);
delay(500);
digitalWrite(13,0);
digitalWrite(12,0);
digitalWrite(11,0);
digitalWrite(10,0);
digitalWrite(9,0);
digitalWrite(8,0);
digitalWrite(7,0);
digitalWrite(6,0);
delay(500);
}
if (estado =='t'){ //Sequence 1
digitalWrite(13,1);
delay(200);
digitalWrite(12,1);
delay(200);
digitalWrite(11,1);
delay(200);
digitalWrite(10,1);
delay(200);
digitalWrite(9,1);
delay(200);
digitalWrite(8,1);
delay(200);
201
6
Programacin en Arduino N1
Plus
digitalWrite(7,1);
delay(200);
digitalWrite(6,1);
delay(200);
digitalWrite(13,0);
digitalWrite(12,0);
digitalWrite(11,0);
digitalWrite(10,0);
digitalWrite(9,0);
digitalWrite(8,0);
digitalWrite(7,0);
digitalWrite(6,0);
delay(200);
}
if (estado =='u'){ //Sequence 2
}
if (estado =='v'){ //Sequence 3
digitalWrite(13,1);
delay(200);
digitalWrite(13,0);
digitalWrite(12,1);
delay(200);
digitalWrite(12,0);
digitalWrite(11,1);
delay(200);
digitalWrite(11,0);
digitalWrite(10,1);
delay(200);
digitalWrite(10,0);
digitalWrite(9,1);
delay(200);
digitalWrite(9,0);
digitalWrite(8,1);
delay(200);
digitalWrite(8,0);
digitalWrite(7,1);
delay(200);
digitalWrite(7,0);
digitalWrite(6,1);
delay(200);
digitalWrite(6,0);
digitalWrite(7,1);
delay(200);
digitalWrite(7,0);
201
6
Programacin en Arduino N1
Plus
digitalWrite(8,1);
delay(200);
digitalWrite(8,0);
digitalWrite(9,1);
delay(200);
digitalWrite(9,0);
digitalWrite(10,1);
delay(200);
digitalWrite(10,0);
digitalWrite(11,1);
delay(200);
digitalWrite(11,0);
digitalWrite(12,1);
delay(200);
digitalWrite(12,0);
}
}
201
6
Programacin en Arduino N1
Plus
201
6
Glosario.
Led. Es un dispositivo diodo emisor de luz. Los LED se usan como indicadores en
muchos dispositivos y en iluminacin. Los primeros LEDS emitan luz roja de baja
intensidad, pero los dispositivos actuales emiten luz de alto brillo en el espectro
infrarrojo, visible y ultravioleta. Un LED comienza a funcionar aproximadamente
con 2 voltios.
Programacin en Arduino N1
Plus
201
6
Sensor de presencia PIR. Es un sensor electrnico que mide la luz infrarroja (IR)
radiada de los objetos situados en su campo de visin. Se utilizan principalmente
en los detectores de movimiento basados en PIR.
populares
para
aplicaciones
con
microcontroladores
PIC
Programacin en Arduino N1
Plus
201
6