Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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.
Declaracin de Funciones.
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;
pin 13.
void setup()
{
pinMode(led, OUTPUT);
salida.
}
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);
}
void loop()
{
val = analogRead(analogPin);
Serial.println(val);
pantalla.
}
Ejemplo 5
int analogPin = 3;
sensor
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= ");
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);
// 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)
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.
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.
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 ");
}