Está en la página 1de 11

Tecnolgico Nacional de Mxico

Instituto Tecnolgico de Ensenada


Introduccion a la tecnologa arduino

Instructor:
M. E. Oscar Martin Tirado Ochoa

Ensenada, B. C. Junio del 2015

Contenido
Hola mundo ......................................................................................................................................... 3
Lectura de botones ............................................................................................................................. 5
Variador de voltaje .............................................................................................................................. 7
Convertidor analgico digital .............................................................................................................. 9
Control de servomotor ...................................................................................................................... 10
Pantalla de cristal lquido .................................................................................................................. 11

Hola mundo
Esta primera prctica tiene como objetivo la verificacin y puesta en marcha de nuestro sistema
Arduino, siendo en algunos casos la primera interaccin con la misma en cuya situacin el objetivo
ser la familiarizacin con esta tecnologa.
Una vez instalado el software y con el cable usb disponible, se realiza la conexin del diodo emisor
de luz (LED) con su respectiva resistencia (de 330 a 1k), como se muestra en la figura 1:

Figura 1.- Circuito de practica hola mundo.


Se abre el software de arduino para proceder a compilar y cargar el cdigo que se mostrara a
continuacin en el circuido que se mostr anteriormente en la figura.
/*Hola mundo a encendido de un LED*/
// El pin 13 tendra el LED
int led = 13;
//Configuracion del pin 13 como salida
void setup() {
pinMode(led, OUTPUT);
}
// Ciclo de programa
void loop() {
digitalWrite(led, HIGH); //Activa el LED
}

Utilizando el mismo circuito mostrado en la figura, se procede a modificar el cdigo de la prctica


hola mundo en el cual se iluminaba un led al inicializar el programa, en esta ocasin deber
parpadear a frecuencia de 1 segundo por cambio de estado.
/*
Hola mundo b
Parpadeo de un LED
*/
// El pin 13 tendra el LED
int led = 13;
//Configuracion del pin 13 como salida
void setup() {
pinMode(led, OUTPUT);
}
// Ciclo de programa
void loop() {
digitalWrite(led, HIGH); //Activa el LED
delay(1000);
//Espera de 1 segundo
digitalWrite(led, LOW); //Desactiva el LED
delay(1000);
}

Realice los cambios necesarios para modificar la frecuencia del parpadeo a 2, 3 y 5 segundos. Por
ultimo genere un programa que solo realice tres parpadeos y se apague, con la frecuencia que usted
considere mejor.

Lectura de botones
Al desarrollar esta prctica se trabajara con la lectura de puertos digitales, para realizar cambios
en la operacin del microcontrolador a travs de botones de presin, los cuales en la posteridad
pueden sustituidos por algn otro componente digital de dos estados de tecnologa TTL o en su
defecto por ms de un solo botn.
Recuerde primeramente armar el circuito electrnico como se muestra en la figura 2 o en caso de
querer modificarlo, deber identificar bien las entradas y salidas del microcontrolador.

Figura 2.- Circuito para lectura de botn.


Una vez implementado el circuito se procede a realizar la escritura del cdigo que se muestra a
continuacin para poder compilar, cargar y correr el microcontrolador.
/*
Lectura de botones
Activa y desactiva el LED conectado al pin 13.
*/
// Declaracion de constantes
const int buttonPin = 2; //Pin del boton
const int ledPin = 13; //Pin del LED
//Declaracion de variables
int buttonState = 0;
//Variable de lectura
void setup() {
//Configuracion del pin de salida para el LED
pinMode(ledPin, OUTPUT);
//Configuracion de pin como entrada para el boton
pinMode(buttonPin, INPUT);
}
void loop(){
//Lee el estado del boton
buttonState = digitalRead(buttonPin);
//Verifica que el botn este presionado
if (buttonState == HIGH) {
//Activa el LED
digitalWrite(ledPin, HIGH);
}
else {
//Desactiva el LED
digitalWrite(ledPin, LOW);
}
}

Una vez realizada la prctica del encendido y apagado de un LED, se continuara con los cambios de
secuencia en el encendido de LEDs, para lo cual se utilizara la lectura de botones en dicha
secuencia.
/*
Lectura de botones b
Cambia secuencia de LEDs.
*/
// Declaracion de constantes
const int buttonPin = 2; //Pin del boton
const int ledPin1 = 13; //Pin del LED
const int ledPin2 = 12; //Pin del LED
//Declaracion de variables
int buttonState = 0;
//Variable de lectura
void setup() {
//Configuracion del pin de salida para el LED
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
//Configuracion de pin como entrada para el boton
pinMode(buttonPin, INPUT);
}
void loop(){
//Lee el estado del boton
buttonState = digitalRead(buttonPin);
//Verifica que el botn este presionado
if (buttonState == HIGH) {
//Activa el LED
digitalWrite(ledPin1, HIGH);
delay(1000);
}
else {
digitalWrite(ledPin2, HIGH);
delay(1000);
}
digitalWrite(ledPin1, LOW);
delay(1000);
digitalWrite(ledPin2, LOW);
delay(1000);
}

Realice las adecuaciones necesarias para tener un botn de encendido para iniciar con las
secuencias, y otro botn para el apagado, dando con ello el fin de las secuencias.

Variador de voltaje
Esta prctica nos mostrara y confirmara el uso de variadores de voltaje programados, los cuales
pueden ser utilizados como modificadores de iluminacin, sonido e incluso en velocidades de
motores de cd.
Para iniciar con la prctica utilizaremos un LED como se muestra en la figura 3, aunque
posteriormente se podr cambiar el otro elemento para su cotejo y practica efectiva de
visualizacin.

Figura 3.- Diagrama electrnico variador de voltaje

Nuevamente se entrega un cdigo a fin de acelerar el proceso de programacin, pero recuerde


que en este punto ya es capaz de analizar las mejoras tanto de hardware como de software,
comparta sus experiencias con el grupo.
/* Variador de voltaje intermitente */
int ledPin = 9; // LED connected to digital pin 9
void setup() {
}
void loop() {
//Activacion de minimo a maximo
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
analogWrite(ledPin, fadeValue);
delay(30);
}
//Desactivacion de maximo a minimo
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5) {
analogWrite(ledPin, fadeValue);
delay(30);
}
}

Modifique el hardware para conectar un motor de corriente directa, as como el software para
tener un botn de incremento de velocidad en el motor y otro para el decremento del mismo,
adems de incluir un botn para encendido y apagado del propio motor.

Convertidor analogico digital


El convertidor analgico digital se utiliza en un sin nmero de aplicaciones, y es la parte
fundamental en los sistemas de adquisicin de datos, por lo que se consider importante mostrar
su operacin en este curso.
Se sugiere utilizar un potencimetro para generar la diferencia de voltaje en la seal analgica a
introducir en el convertidor analgico digital del microcontrolador, aunque puede ser remplazado
por un sensor, preferentemente linealizado o instrumentado a 0v 5v.

Figura 4.- Circuito para convertidor analgico digital

Es de vital importancia tener bien ubicada la seal analgica en uno de los canales analgicos de la
placa arduino, debido a la interconexin de la misma con el Convertidor Analgico Digital (CAD).
Una vez con el programa corriendo se deber proceder a verificar los datos que nos enviar el
convertidor analgico digital, as como el cambio en la configuracin del CAD.
/*Lectura de voltaje */
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Serial.println(voltage);
}

Modifique su proyecto para visualizar el valor del convertidor analgico digital a travs de LEDs, de
manera binaria.

Control de servomotor
Las aplicaciones con servomotores son altamente utilizadas en el rea de la robtica y el control,
debido a su gran precisin en los grados a rotar en las articulaciones. Un servo cuenta con una
gran facilidad en el cambio de direccin pero su limitante son los giros de 360, por lo que se
trabajara con la inversin del giro, en busca de la identificacin prctica.

Figura 5.- Circuito para el control de un servomotor.


Se recomienda que una vez operando el servomotor con el cdigo entregado, se realicen
modificaciones del mismo para identificar la relacin que guarda entre hardware y software para
lograr un aprendizaje real.
// Sweep
#include <Servo.h>
Servo myservo; //Crea un objeto para controarl el servo
int pos = 0;
void setup()
{
myservo.attach(9); //Vincula el servo al pin 9
}
void loop()
{
for(pos = 0; pos < 180; pos += 1) // Va de 0 a 180 grados en paso de 1 grado
{
myservo.write(pos);
delay(15);
}
for(pos = 180; pos>=1; pos-=1) // Va de 180 a 0 grados
{
myservo.write(pos);
delay(15);
}
}

Modifique su proyecto colocando un botn con el cual pueda hacer girar el servomotor a la
derecha y otro a la izquierda.

Pantalla de cristal lquido


Este tipo de dispositivos es cada vez ms utilizado por los desarrolladores de tecnologa, logrando
una incorporacin en prcticamente cualquier tipo de mercado, tal es el caso que casi cualquier
electrodomstico en la actualidad cuenta con uno de ellos, los automviles, aviones, dispositivos
personales, entre varios.

Figura 6.- Conexin electrnica para una pantalla de cristal lquido.

Una vez programado el microcontrolador juegue con el cdigo para observar el comportamiento
de la pantalla, logrando relacionarse con esta tecnologa de suma importancia.
Se recomienda utilizar la pantalla de cristal lquido con alguna de las prcticas desarrolladas con
anterioridad para lograr observar los datos a travs de ella y no depender del equipo de cmputo
para dicha visualizacin.
/* Pantalla de cristal liquid de 16x2, controlador Hitachi HD44780 The circuit:
* LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5
* LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3
* LCD D7 pin to digital pin 2
* LCD R/W pin to ground
* 10K resistor:
* wiper to LCD VO pin (pin 3) */
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("hello, world!");
}
void loop() {
// Colocar el cursor en la column 0, linea 1
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
}

Modifique la prctica para agregar un sensor de temperatura y mostrar su valor en grados


centgrados utilizando la pantalla LCD, adems de su valor decimal al lado del mismo.