Manual de Practicas Arduino v2
-
Upload
jesus-trujillo-paz -
Category
Documents
-
view
457 -
download
32
Transcript of Manual de Practicas Arduino v2
-
8/10/2019 Manual de Practicas Arduino v2
1/39
Universidad Tecnolgica de Tijuana
INGENIERA EN TECNOLOGAS DE LA INFORMACIN Y COMUNICACIN
MANUAL DE PRCTICAS
OPTATIVA I
M.C. Florencio Lpez Cruz
-
8/10/2019 Manual de Practicas Arduino v2
2/39
RESUMEN DE MATERIALES
10 LEDS $30.00 URGENTE
5 RESISTENCIAS DE 270 OHM $5.05 URGENTE
5 RESISTENCIAS DE 10 KOHM $5.05 URGENTE
5 RESISTENCIAS DE 330 OHM $5.05
5 RESISTENCIAS DE 220 OHM $5.05 URGENTE
10 RESISTENCIAS DE 100 OHM $5.05
2 MICRO SWITCH PUSH DE 4 TERMINALES $9.01 URGENTE
2 MICRO SWITCH PUSH DE 2 TERMINALES $12.01URGENTE
2 DISPLAY DE CATODO COMUN DC05 $18.00 URGENTE
2 DISPLAY DE ANODO COMUN DA05 $18.00 URGENTE
1 POTENCIOMETRO DE 5KOHM $8.00 URGENTE
1 MOTOR CD DE 5 A 6 VOLTS (ELECTRON O MADRIGAL)
1 MOTOR PASO A PASO O STEPPER (ELECTRON O MADRIGAL)
1 SERVOMOTOR (ELECTRON O MADRIGAL)
2 TRANSISTOR BIPOLAR NPN 45VCEO, BC547, 2N2222, 2N3904 $8.00
1 FOTORESISTENCIA (LDR) $11.99 URGENTE
1 SENSOR DE TEMPERATURA MCP9700 (ELECTRON O MADRIGAL L)
1 BUZZER DE 2.9 KHZ BGD25C TONO CONSTANTE $26.01
1 PUENTE H SN754410 (ELECTRON O MADRIGAL L)
1 DISPLAY LCD 16 X 2 (ELECTRON O MADRIGAL)
1 RELEVADOR DE 5 A 110 VOLTS $17.01
1 SENSOR ULTRASONICO HC-SR04 (ELECTRON O MADRIGAL) $60.00 APROX
NOTA:Los materiales que dicen URGENTE, son materiales para las prcticas del martes
14, y los precios son de acuerdo a la STEREN. Los materiales que dicen ELECTRON O
MADRIGAL, son materiales que no encontrara en la STEREN, dado que no maneja
sensores, motores dc, servomotores, y motores paso a paso, estos materiales los
usaremos en las prcticas posteriores.
-
8/10/2019 Manual de Practicas Arduino v2
3/39
Practica :Programar los pines para entrada y salidaEn esta prctica desarrollaremos un pequeo programa para un
circuito que cuenta con 2 botones (switches) y un LED. Un
switch estar programado para encender el LED y el otroswitch estar programado para apagarlo.
LISTA DE MATERIALES:
Protoboard 1 LED 1 Resistencia 270 ohms (rojo, morado, cafe) 2 Botones de push, interruptores Arduino Uno Cable USB para el Arduino Cable
Figura 1: Montaje Virtual del Circuito
INSTRUCCIONES
Como ves hemos conectado 2 botones y 1 LED en el protoboard.
La terminal positiva del LED se conecta a la resistencia y la
-
8/10/2019 Manual de Practicas Arduino v2
4/39
resistencia se conecta al pin nmero 10 del Arduino. El otro
extremo del LED se conecta a tierra (-). Los botones tienen 2
extremos o terminales, una de las terminales la conectamos a
tierra (s, la misma que el LED) y ahora conectamos el otro
extremo del botn (switch) en el pin 7 y el otro botn en el
pin 2 del Arduino. La imagen muestra una forma en que puedenestar conectados los elementos, no importa el orden, solo que
lo hagas de la forma correcta.
CDIGO
//Declaracion de los Pinesint pinLed = 10; // Pin del LEDint boton1 = 2; //Encenderint boton2 = 7;//Apagar
//Aqu hacemos el Setup de los pines, es decir, los configuramos como
entradas y salidas
void setup(){pinMode(pinLed, OUTPUT);pinMode(boton1, INPUT_PULLUP);pinMode(boton2, INPUT_PULLUP);
}
//Aqu empezamos a hacer nuestro ciclo infinito, programa principal
void loop(){if (digitalRead(boton1) == LOW){digitalWrite(pinLed, HIGH);}if (digitalRead(boton2) == LOW){digitalWrite(pinLed, LOW);}}
-
8/10/2019 Manual de Practicas Arduino v2
5/39
Practica I :Contador con Display de 7 segmentosEn esta prctica de Arduino haremos un pequeo contador que
ir de 0 a 9 y para eso vamos a usar un display de 7
segmentos. Tal vez no tengas mucha experiencia con el displayde 7 segmentos pero te aseguro que ya los conoces, son esas
cosillas que estn en los despertadores, microondas, etc.
MATERIALES
Arduino Display de 7 segmentos catodo comn modelo DC05 1 Resistencia de 220 Ohms Cables
INSTRUCCIONES
Un Display de este tipo no es ms que un conjunto de LEDs
como los que hemos estado utilizando, solo que estos estn
conectados en un circuito. Nosotros usaremos el display
modelo DC05, el cual es de catodo comn, es decir,
internamente todos los LEDs comparten la misma tierra (GND).
Figura 2: Display de 7 segmentos catodo comn modelo DC05
El circuito es fcil de armar, las configuraciones pueden
variar, solo recuerda declarar bien los pines dentro del
cdigo de Arduino.
-
8/10/2019 Manual de Practicas Arduino v2
6/39
Como puedes apreciar las conexiones quedaron de la siguientemanera:
Pin A del Display al pin 2 del Arduino Pin B del Display al pin 3 del Arduino
Pin G del Display al pin 0 del Arduino
Pin F del Display al pin 1 del Arduino
Pin E del Display al pin 4 del Arduino
Pin D del Display al pin 5 del Arduino
Pin C del Display al pin 6 del Arduino La tierra del display va conectada a un extremo de la
resistencia y el otro extremo de la resistencia va conectadoa tierra del Arduino (GND)
Cdigo
Versin 1: en esta versin utilizamos un delay(1000), lo que significaque se detiene el programa por 1000 milisegundos = 1 segundo, esto con elfin de dejar prendido el estado del display por 1 segundo. Despuspodemos ver cmo es que vamos prendiendo cada uno de los nmeros en elDisplay.
-
8/10/2019 Manual de Practicas Arduino v2
7/39
//Declaramos los pines de salida,//en el el proyecto asi lo tenemos cableadoint a = 2;int b = 3;int c = 6;int d = 5;int e = 4;
int f = 1;int g = 0;//Hacemos que todas nuestras variables sean salidasvoid setup(){pinMode(a, OUTPUT);pinMode(b, OUTPUT);pinMode(c, OUTPUT);pinMode(d, OUTPUT);pinMode(e, OUTPUT);pinMode(f, OUTPUT);pinMode(g, OUTPUT);}
void loop(){//Cero
digitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,LOW);
delay(1000);//UnodigitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,LOW);
digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);
delay(1000);
//UnodigitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);
digitalWrite(g,LOW);
delay(1000);
//DosdigitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e,HIGH);
-
8/10/2019 Manual de Practicas Arduino v2
8/39
digitalWrite(f,LOW);digitalWrite(g,HIGH);
delay(1000);
//TresdigitalWrite(a,HIGH);
digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,HIGH);
delay(1000);
//CuatrodigitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,HIGH);
digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
delay(1000);
//CincodigitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,LOW);digitalWrite(f,HIGH);
digitalWrite(g,HIGH);
delay(1000);
//SeisdigitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
delay(1000);
//SietedigitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);
-
8/10/2019 Manual de Practicas Arduino v2
9/39
delay(1000);
//OchodigitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);
digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
delay(1000);
//NuevedigitalWrite(a,HIGH);digitalWrite(b,HIGH);digitalWrite(c,HIGH);digitalWrite(d,HIGH);digitalWrite(e,LOW);
digitalWrite(f,HIGH);digitalWrite(g,HIGH);
delay(1000);
}
Versin 2: La verdad es que esta versin del programa es igual alanterior solo que aqu hacemos uso de una funcin(escribirEnElDisplay()). La funcin recibe como parmetros los valores decada uno de los segmentos del display, un 1 equivale a encendido y 0equivale a apagado.
//Declaramos los pines de salida,
//en el el proyecto asi lo tenemos cableadoint a = 2;int b = 3;int c = 6;int d = 5;int e = 4;int f = 1;int g = 0;
void setup(){pinMode(a, OUTPUT);pinMode(b, OUTPUT);pinMode(c, OUTPUT);
pinMode(d, OUTPUT);pinMode(e, OUTPUT);pinMode(f, OUTPUT);pinMode(g, OUTPUT);}
void escribirEnElDisplay(int va, int vb, int vc, int vd, int ve, int vf,int vg){
digitalWrite(a,va);digitalWrite(b,vb);
-
8/10/2019 Manual de Practicas Arduino v2
10/39
digitalWrite(c,vc);digitalWrite(d,vd);digitalWrite(e,ve);digitalWrite(f,vf);digitalWrite(g,vg);
}
void loop(){
//CeroescribirEnElDisplay(1,1,1,1,1,1,0);delay(1000);//UnoescribirEnElDisplay(0,1,1,0,0,0,0);delay(1000);//DosescribirEnElDisplay(1,1,0,1,1,0,1);delay(1000);//Tres
escribirEnElDisplay(1,1,1,1,0,0,1);delay(1000);//CuatroescribirEnElDisplay(0,1,1,0,0,1,1);delay(1000);//CincoescribirEnElDisplay(1,0,1,1,0,1,1);delay(1000);//SeisescribirEnElDisplay(1,0,1,1,1,1,1);delay(1000);//SieteescribirEnElDisplay(1,1,1,0,0,0,0);delay(1000);
//OchoescribirEnElDisplay(1,1,1,1,1,1,1);delay(1000);//NueveescribirEnElDisplay(1,1,1,1,0,1,1);delay(1000);
}
-
8/10/2019 Manual de Practicas Arduino v2
11/39
Practica I I:Entradas y salidas anlogasEn esta ocasin vamos a trabajar con un LED y unpotencimetro, tal vez no sepas que es un potencimetro pero
aqu te lo explicare de manera simple. Se trata de unaresistencia variable, s, una resistencia que puede cambiarsu valor, bueno un potencimetro es lo mismo solo que podemosvariar su valor ya que cuenta con una perilla. Podemosaumentar o disminuir su resistencia, es decir, si aumentamossu resistencia la cantidad de corriente que pase por elcircuito ser menos, pero si la disminuimos, la cantidad decorriente elctrica que pase por el circuito ser mayor.
Bueno, ahora pasemos a explicar la leccin de entradas ysalidas analogas. El Arduino cuenta con entradas y salidas
analogas, con las entradas analogas podemos podemos hacer unalectura de una variacin de voltaje, y con las salidasanlogas tambin podemos hacer una variacin de voltaje soloque usando PWM.
MATERIALES
Arduino Potenciometro (en el ejemplo usamos uno de 5KOhms pero
puedes usar uno de 1KOhm u otro) LED
Resistencia de 220 Ohms Cables Protoboard
INSTRUCCIONES
En el circuito, la resistencia se conecta a tierra y al pin11 del Arduino. Mientras que el potencimetro tiene 3
-
8/10/2019 Manual de Practicas Arduino v2
12/39
patitas, las dos de los extremos van ir conectada a voltaje,es decir, una pata va a los 5 volts del Arduino y la otrapata va a tierra (GND) del Arduino. La pata de en medio delpotencimetro lo vamos a conectar a la entrada anloga 0 esdecir a A0.
Lecturas anlogas
En en esta practicas vamos a trabajar con lecturas analogases decir, vamos a leer la cantidad de voltaje que entra poruno de los pines del Arduino. El voltaje que se lea tiene queestar entre 0 y 5 volts, por eso vamos a usar el voltaje quenos proporciona el Arduino en uno de sus pines. Despus deque se lee el voltaje, este se convierte en un valor numericoque cabe en 10 bits, es decir entre 0 y 1023. Qu significaesto?, bueno, significa que 0 volts equivaldrn a un 0 parael Arduino y 5 volts equivaldr a 1023 y podemos hacer reglasde 3 para encontrar los dems valores, por ejemplo 2.5 voltsequivalen a 511.
Para hacer lecturas anlogas vamos a usar la funcinanalogRead(A0) y guardarlo en una variable entera. Porejemplo:
-
8/10/2019 Manual de Practicas Arduino v2
13/39
int valorPotenciometro = analogRead(A0);
La variable valorPotenciometro guardara el valor del voltajeque se lea en el pin A0.
Salidas Anlogas
En algunas ocasiones las salidas digitales no sonsuficientes, hemos estado usando salidas digitales paraprender y apagar LEDs, recuerdas el HIGH y LOW, este tipo de
seal es excelente para prender y apagar un LED, pero Qupasa si lo que queremos es controlar su intensidad?, bueno,para eso vamos a usar salidas anlogas. Para usar las salidasanlogas el Arduino hace uso de la funcinanalogWrite(pin), la salida anloga usa PWM (Modulacin por
ancho de pulsos), ms delante hablaremos detenidamente de elPWM. El Arduino tiene diferentes salidas anlogas, laspodemos identificar ya que tienen impreso un ~ en el pin.
Para escribir un valor anlogo utilizaremos valores entre 0 y255, igual que en la entrada anloga estos valores tienen unaequivalencia en voltaje, 0 es igual a 0 volts y 255 equivalea 5 volts.
Cdigo
int ledPin = 11;void setup(){pinMode(ledPin, OUTPUT);}
void loop(){
int valorPotenciometro = analogRead(A0);int intensidadLED =
(int)((((double)valorPotenciometro)/1023)*255.0);
analogWrite(ledPin, intensidadLED);
delay (20);}
Como podemos ver en el cdigo hacemos la lectura de la sealanloga A0 y lo guardamos en una variable llamadavalorPotenciometro, despus esta variable la dividimos entre1023 y luego la multiplicamos por 255 para tener suequivalente en la salida anloga y guardamos el valor en lavariable intensidadLED. Despus intensidadLED lo escribimosen ledPin para poder sacar el voltaje en la luminosidad delLED.
-
8/10/2019 Manual de Practicas Arduino v2
14/39
Practica IV:Comunicacin Serial Arduino-PCMATERIALES
1 Computadora 1 Arduino
INSTRUCCIN
Vamos a hacer un primer ejercicio para poder utilizar lacomunicacin serial. Para este primer ejercicio solo vamos anecesitar nuestra placa de Arduino y nuestro cable USB. Asque procederemos a conectarlo a nuestra computadora yejecutar el siguiente cdigo:
CODIGO
//Hacemos nuestro setup, solo se hace una vez al inicar el programavoid setup(){
//Establecemos la velocidad de comunicacion serialSerial.begin(9600);//Imprimimos nuestro "Hello World!" en monitor
serialSerial.println("Hello world!");}//El loop se corre siempre
void loop(){
//No hacemos nada al entrar al loop o ciclo infinito}
MARCO TEORICO
En esta nueva practica vamos a ver comunicacin serial entreel Arduino y nuestra computadora. El objetivo es poderimprimir valores, resultados, etc., de lo que sucede connuestra placa Arduino en una ventana de nuestra computadora.Por ejemplo, si estamos trabajando con un LED podemosimprimir en pantalla el valor de la intensidad de ese LED, osi estamos haciendo lecturas anlogas nos ayudar a saber elvalor de la lectura e imprimirlo en una ventana de nuestra
computadora. Primero que nada vamos a hablar un poco acercade que trata la comunicacin serial.
-
8/10/2019 Manual de Practicas Arduino v2
15/39
COMUNICACIN SERIAL
La comunicacin serial es un protocolo de envio deinformacin a traves de computadoras. El protocolo consisteen enviar y recibir una secuencia de bits, es decir, enviar orecibir un bit a la vez a un ritmo o frecuencia acordadaentre las dos computadoras. Actualmente la comunicacinserial ya no es muy usada entre computadoras personales/deescritorio ya que ha sido reemplazado por protocolos msavanzados como el puerto USB.
Nuestra tarjeta Arduino posee comunicacin serial para poderhacer intercambio de informacin con el PC u otrosdispositivos. La comunicacin serial puede hacerse a travsde los pines digitales 0 (RX) y 1 (TX) as como con el PCmediante USB (es el que utilizaremos en esta leccin).
SEGUNDO EJERCICIO (MONITOREANDO UNA SEAL ANALOGA)
MATERIALES
1 Computadora
1 Arduino
Potenciometro de 5K
-
8/10/2019 Manual de Practicas Arduino v2
16/39
CODIGO
//Hacemos nuestro setup, solo se hace una vez al inicar el programavoid setup(){
//Establecemos la velocidad de comunicacion serial
Serial.begin(9600);//Imprimimos nuestro "Hello World!" en monitorserialSerial.println("Hello world!");
}//El loop se corre siemprevoid loop(){
int valorPotenciometro = analogRead(A0);Serial.println("El valor del potenciometro es:");Serial.println(valorPotenciometro);delay(1000);
}
INSTRUCCIONES
Primero que nada armamos el circuito con el potencimetro dela siguiente manera, es muy similar a la leccin de entradasy salidas anlogas y teclee el siguiente cdigo:
Como podemos ver en el cdigo hacemos lo mismo que en elanterior, solo que en el loop() hacemos una lectura a la
entrada analoga A0 y guardamos el valor envalorPotenciometro despus imprimimos este valor en el
monitor serial, y hacemos un delay de 1000 ms. Con estecdigo podemos monitorear el cambio en una entrada anloga y
desplegar el valor obtenido.
SEGUNDO EJERCICIO (MONITOREANDO UNA SEAL DIGITAL)
MONITOREO DE SEAL DIGITAL
A veces tambin ser til monitorear una seal digital, comoun interruptor. En esta prctica trabajamos con uno de losbotones/switches para desplegar en nuestro monitor serial unaentrada digital. Para eso vamos a conectar a nuestro Arduinoun switch a una de las entradas digitales. Vamos a trabajar
con un cdigo similar al de la leccin de entradas y salidasdigitales.
MATERIALES
1 Computadora
1 Arduino
1 Micro Switch
-
8/10/2019 Manual de Practicas Arduino v2
17/39
Ejecutamos y corremos nuestro monitor serial y podremosobservar que cada vez que presionemos el swicht se mostraren el monitor serial un mensaje de que el botn fuepresionado.
CODIGO
int boton = 7;//Hacemos nuestro setup, solo se hace una vez al inicar el programavoid setup(){
//Establecemos la velocidad de comunicacion serialSerial.begin(9600);//Imprimimos nuestro "Hello World!" en monitor
serialSerial.println("Hello world!");pinMode(boton, INPUT_PULLUP);
}//El loop se corre siemprevoid loop()
{if (digitalRead(boton) == LOW){Serial.println("Bonton presionado");
}delay(1000);
}
-
8/10/2019 Manual de Practicas Arduino v2
18/39
Practica V: LEDS Y POTENCIOMETRO (SEALESANLOGAS Y DIGITALES)En esta prctica vamos a trabajar con algunos componentes ya
bien conocidos para nosotros: unos cuantos LEDs y
Potencimetro. El objetivo es prender los LEDs con el
potencimetro dependiendo el valor de este, es decir, si el
valor aumenta los LEDs se van encendiendo.
Para esto necesitaremos combinar seales anlogas y
digitales. La lectura del potencimetro ser anloga mientras
que el encendido de los LEDs ser digital. Si bien
recordamos nuestro potencimetro nos puede dar seales
anlogas con valores entre 0 y 1023. En esta leccin vamos a
utilizar 6 LEDs por lo tanto vamos a dividir el rango del
potencimetro entre 6 para que los LEDs vayan encendiendo de
manera secuencial. Es decir si el potencimetro tiene un
valor de 0 ninguno de los LEDs estar prendido pero conforme
vaya aumentando el valor del potencimetro se irn
encendiendo los LEDs uno por uno.
El rango de valores del potencimetro va de 0 a 1023.
Dividiendo 1024/6 nos da aproximado 170, por lo tanto
nuestros rangos sern de 170.
-
8/10/2019 Manual de Practicas Arduino v2
19/39
MATERIALES
Arduino Protoboard 6 Resistencias de 100 Ohms
Potenciometro 1KOhm o 5 KOhms 6 LEDs Cables
CIRCUITO
CODIGO
En el cdigo lo que hacemos es leer el valor del potencimetro comoentrada anloga en A0. Dependiendo de este valor vamos a ir encendiendolos LEDs.
//Declaramos los leds y los pines en los cuales hay que conectarint led1 = 12;int led2 = 11;int led3 = 10;int led4 = 9;
-
8/10/2019 Manual de Practicas Arduino v2
20/39
int led5 = 8;int led6 = 7;
void setup(){//configuramos todos los pines como salidaspinMode(led1, OUTPUT);pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);pinMode(led4, OUTPUT);pinMode(led5, OUTPUT);pinMode(led6, OUTPUT);}void loop(){//Hacemos la lectura analoga del potenciometroint valorPotenciometro = analogRead(A0);//Apagamos todos los LED's
digitalWrite(led1, LOW);digitalWrite(led2, LOW);digitalWrite(led3, LOW);digitalWrite(led4, LOW);digitalWrite(led5, LOW);digitalWrite(led6, LOW);
//En este codigo vamos revisando el valor del pot para//ir prendiendo poco a poco los LED's
if(valorPotenciometro > 0){digitalWrite(led1, HIGH);}if(valorPotenciometro > 170){digitalWrite(led2, HIGH);}if(valorPotenciometro > 340){digitalWrite(led3, HIGH);}if(valorPotenciometro > 510){
digitalWrite(led4, HIGH);}if(valorPotenciometro > 680){digitalWrite(led5, HIGH);}if(valorPotenciometro > 850){digitalWrite(led6, HIGH);}}
PRACTICA INTEGRADORA
Practica VI:Lectura y Entrada Anloga (Potencimetro)En esta prctica el objetivo es controlar la velocidad con laque va transcurriendo la secuencia, es decir, que acelere odisminuya la velocidad con la que cambian los leds.
-
8/10/2019 Manual de Practicas Arduino v2
21/39
MATERIALES
Potencimetro de 10Khoms. 8 Leds 9 Resistencias 220homs
Boton
CODIGO
intbotonPin = 13; //Pin del botonintCont = 0; //Contador para llevar el control de tareasintbotonEstado = 0; //Variable para guardar cuando se presione el botonintPotVal = 0; //Tiempo para observar los cambiosintPotPin = 2;
voidsetup() { //Se configuran los puertos, todos los leds como salida yel pin del boton como entradapinMode(5, OUTPUT);pinMode(6, OUTPUT);pinMode(7, OUTPUT);pinMode(8, OUTPUT);pinMode(9, OUTPUT);pinMode(10, OUTPUT);pinMode(11, OUTPUT);pinMode(12, OUTPUT);
-
8/10/2019 Manual de Practicas Arduino v2
22/39
-
8/10/2019 Manual de Practicas Arduino v2
23/39
if(Cont == 0){ //Opcion por default, todos los leds prendidosPrenderLeds(5,6,7,8,9,10,11,12,0);delay(150);
}if(Cont==1){ //Primera opcion, prende los leds empezando del 1 hasta
el 9 uno por unoPrenderLeds(5,6,7,8,9,10,11,12,PotVal);
delay(PotVal);ApagarLeds(5,6,7,8,9,10,11,12,0);delay(PotVal);
}if(Cont==2){ //Segunda opcion, prende los leds empezando del 9 hasta
el 1 uno por unoApagarLeds(12,11,10,9,8,7,6,5,0);delay(PotVal);PrenderLeds(12,11,10,9,8,7,6,5,PotVal);delay(PotVal);
}if(Cont==3){ //Tercera opcion, apaga los leds del 1 al 9 uno por unoPrenderLeds(5,6,7,8,9,10,11,12,0);
delay(PotVal);ApagarLeds(5,6,7,8,9,10,11,12,PotVal);delay(PotVal);
}if(Cont==4){ //Cuarta opcion, apaga los leds del 9 al 1 uno por unoPrenderLeds(5,6,7,8,9,10,11,12,0);delay(PotVal);ApagarLeds(12,11,10,9,8,7,6,5,PotVal);delay(PotVal);
}}
Practica VII:Lectura y Entrada Anloga (Potencimetro) 2En esta prctica el objetivo es utilizar el potencimetropara prender o apagar los leds, el potencimetro tiene unrango de valor de 0 a 1023, utilizando 8 leds prender elprimero si el rango del potencimetro esta entre el 1 y el100, el segundo de 100 a 200, y asi hasta llegar el lednmero 8 donde ser de 700 a 800, si el valor es mayor a 800que todos los leds parpadeen, si el valor del potencimetroes 0 apagar todos los leds. Mostrar en el "Monitor serial" el
valor del potencimetro.
MATERIALES
Potenciometro de 10Khoms. 8 Leds 9 Resistencias 220homs
-
8/10/2019 Manual de Practicas Arduino v2
24/39
CIRCUITO
CODIGO
intpinPot = 2; //Puerto analogo donde esta conectado el potenciometrointvalPot = 0; //Variable que guardara el valor del potenciometro
voidsetup(){pinMode(pinPot, INPUT); //Se pone como input el pin analogo del
potenciometrofor(inti = 5; i
-
8/10/2019 Manual de Practicas Arduino v2
25/39
-
8/10/2019 Manual de Practicas Arduino v2
26/39
Una fotorresistencia es una resistencia que tiene lacapacidad de aumentar o disminuir el valor de su resistenciade acuerdo a la intensidad de luz que pueda captar. El valorde resistencia de una fotorresistencias es bajo cuando hayluz incidiendo en l (puede descender hasta 50 ohms) y muyalto cuando est a oscuras (varios megaohms). Estoscomponentes pueden ser utilizados como sensores de luz.
MATERIALES
Arduino Protoboard Fotorresistencia LED 1 resistencia de 220 ohms 1 resistencia de 10 kohms cables
CODIGO
int led = 11;void setup(){Serial.begin(9600); //Crea la velocidad de comunicacin seriapinMode( led, OUTPUT ); //configura como salida el led
}void loop(){
int valorFotorresistencia; //Declaramos la variable de lafotorresistenciavalorFotorresistencia = analogRead(A0); //leemos el valor de la
fotorresistenciaSerial.println(valorFotorresistencia); //Imprimimos en la consola
serial el valor de la fotorresistenciaanalogWrite(led, valorFotorresistencia/4); //prendemos el valor del LED
dependiendo del valor de la fotorresistenciadelay(500); //Esperamos 500ms
}
CIRCUITO
-
8/10/2019 Manual de Practicas Arduino v2
27/39
En el cdigo podemos ver que declaramos una variable para
leer el valor de la fotorresistencia y lo imprimimos en laconsola serial. Adems de eso hacemos prender el LEDdependiendo el valor de la fotorresistencia. Recuerda que enla leccin de comunicacin serial hacemos uso de la terminalserial si es que no lo recuerdas. Para poder ver elfuncionamiento de la fotorresistencia es necesario taparlopor completo para ver verdaderos resultados, o si prefieresnecesitaras estar a obscuras para ver como es que funciona.
Practica X:Contador con Display de 7 Segmentos de ANODO COMUN
-
8/10/2019 Manual de Practicas Arduino v2
28/39
En esta prctica de Arduino haremos un pequeo contador que
ir de 0 a 9 y para eso vamos a usar un display de 7
segmentos de anodo comn DA05.
Verificar que las conexiones que se van a hacer desde el
puerto 0 hasta el 6 sean las correctas, ya que para que logre
funcionar el display cada puerto enviara un 1 o un 0 segn
corresponda el caso, y dependiendo del resultado se prender
o se apagara la parte del segmento del display.
MATERIALES
Arduino Display Anodo Comun DA05. Resistencias de 220 homs.
CODIGO
//Se declaran los pines de acuerdo a las letras del diagrama del displayint a = 2;int b = 3;int c = 6;int d = 5;int e = 4;int f = 1;int g = 0;
-
8/10/2019 Manual de Practicas Arduino v2
29/39
int tiempo = 500;
void setup(){ //Se configuran todos los pin como salidaspinMode(a, OUTPUT);pinMode(b, OUTPUT);pinMode(c, OUTPUT);pinMode(d, OUTPUT);
pinMode(e, OUTPUT);pinMode(f, OUTPUT);pinMode(g, OUTPUT);}
void loop(){ //Empezara a contar desde el 0//Cero//Aqui es donde cada segmento se gestiona y de acuerdo a como se indiqueen esta parte es lo que//se vera reflejado en el display, solo bastara con dibujar cada numero uno por unodigitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);
digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,HIGH);delay(tiempo);
//UnodigitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);
delay(tiempo);
//DosdigitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,HIGH);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,HIGH);digitalWrite(g,LOW);delay(tiempo);
//Tres
digitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,LOW);delay(tiempo);
//Cuatro
-
8/10/2019 Manual de Practicas Arduino v2
30/39
digitalWrite(a,HIGH);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,LOW);digitalWrite(g,LOW);
delay(tiempo);
//CincodigitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,HIGH);digitalWrite(f,LOW);digitalWrite(g,LOW);delay(tiempo);
//Seis
digitalWrite(a,LOW);digitalWrite(b,HIGH);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);delay(tiempo);
//SietedigitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,HIGH);
digitalWrite(e,HIGH);digitalWrite(f,HIGH);digitalWrite(g,HIGH);delay(tiempo);
//OchodigitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,LOW);digitalWrite(e,LOW);digitalWrite(f,LOW);digitalWrite(g,LOW);
delay(tiempo);
//NuevedigitalWrite(a,LOW);digitalWrite(b,LOW);digitalWrite(c,LOW);digitalWrite(d,HIGH);digitalWrite(e,HIGH);digitalWrite(f,LOW);digitalWrite(g,LOW);
-
8/10/2019 Manual de Practicas Arduino v2
31/39
delay(tiempo);}
Practica X:Nmeros binarios y Monitoreo SerialEn esta prctica con los 4 leds representar los nmeros del 1al 15 en binario, es decir, empezando del 0001 hasta el 1111,cada led representara una posicin de un espacio del numerobinario empezando de izquierda a derecha, por medio delMonitor serial se ingresara un numero en decimal entre el 1 yel 15, el cual el programa leer y prender los leds enrepresentacin de su forma binaria.
MATERIALES
4 Leds 4 Resistencias
CODIGO
int Numero = 0; //variable donde se guardara el nmero que se escriba
void setup() {Serial.begin(9600);pinMode(5, OUTPUT);pinMode(6, OUTPUT);pinMode(7, OUTPUT);pinMode(8, OUTPUT);
}
//Metodo para prender los leds segun su numerovoid PrenderLeds(boolean a, boolean b, boolean c, boolean d){
-
8/10/2019 Manual de Practicas Arduino v2
32/39
digitalWrite(5,a); //5, 6, 7 y 8 son los pines que se utilizaran puedenvariardigitalWrite(6,b); //a, b, c y d sirven para indicar si el valor sera
HIGH o LOWdigitalWrite(7,c);digitalWrite(8,d);
}
void loop() {if (Serial.available() > 0) { //Si se detecta algun pulso entrara a la
condicionNumero = Serial.parseInt(); //Convierte en numero lo que se ingrese
desde el monitor serialif (Numero == 1){ //Si es 1 realizara los siguientes pasos donde
aplicaran para todos los numerosSerial.println("Numero uno 1000"); //Se despliega el mensajePrenderLeds(1,0,0,0); //Se manda un 1 en la posicion del led a
prender y un 0 para apagarlo}if (Numero == 2){Serial.println("Numero dos 0100");
PrenderLeds(0,1,0,0);}if (Numero == 3){Serial.println("Numero tres 1100");PrenderLeds(1,1,0,0);
}if (Numero == 4){Serial.println("Numero cuatro 0010");PrenderLeds(0,0,1,0);
}if (Numero == 5){Serial.println("Numero cinco 1010");PrenderLeds(1,0,1,0);
}
if (Numero == 6){Serial.println("Numero seis 0110");PrenderLeds(0,1,1,0);
}if (Numero == 7){Serial.println("Numero siete 1110");PrenderLeds(1,1,1,0);
}if (Numero == 8){Serial.println("Numero ocho 0001");PrenderLeds(0,0,0,1);
}if (Numero == 9){
Serial.println("Numero nueve 1001");PrenderLeds(1,0,0,1);}if (Numero == 10){Serial.println("Numero diez 0101");PrenderLeds(0,1,0,1);
}if (Numero == 11){Serial.println("Numero once 1101");PrenderLeds(1,1,0,1);
-
8/10/2019 Manual de Practicas Arduino v2
33/39
-
8/10/2019 Manual de Practicas Arduino v2
34/39
-
8/10/2019 Manual de Practicas Arduino v2
35/39
delay(tiempo);digitalWrite(ld3, HIGH);delay(tiempo);digitalWrite(ld4, HIGH);delay(tiempo);digitalWrite(ld5, HIGH);delay(tiempo);
digitalWrite(ld6, HIGH);delay(tiempo);digitalWrite(ld7, HIGH);delay(tiempo);digitalWrite(ld8, HIGH);delay(tiempo);
}
//Metodo para apagar 8 leds incluyendo el tiempo de esperavoidApagarLeds(intld1, intld2, intld3, intld4, intld5, intld6, intld7, intld8, inttiempo){digitalWrite(ld1, LOW);delay(tiempo);
digitalWrite(ld2, LOW);delay(tiempo);digitalWrite(ld3, LOW);delay(tiempo);digitalWrite(ld4, LOW);delay(tiempo);digitalWrite(ld5, LOW);delay(tiempo);digitalWrite(ld6, LOW);delay(tiempo);digitalWrite(ld7, LOW);delay(tiempo);digitalWrite(ld8, LOW);delay(tiempo);
}
voidloop(){botonEstado = digitalRead(botonPin); //Lee si el boton se presiona o noif(botonEstado == HIGH) { //Si el boton se presiono entrada a la
condicionCont += 1; //Aumenta contador cada vez que se presionaif(Cont > 4) //Resetea el contador cuando es mayor a 4 y vuelve a la
primera opcion{Cont = 0;
}}
if(Cont == 0){ //Opcion por default, todos los leds prendidosPrenderLeds(5,6,7,8,9,10,11,12,0);delay(150);
}if(Cont==1){ //Primera opcion, prende los leds empezando del 1 hasta
el 9 uno por unoPrenderLeds(5,6,7,8,9,10,11,12,150);delay(Pausa);ApagarLeds(5,6,7,8,9,10,11,12,0);delay(Pausa);
-
8/10/2019 Manual de Practicas Arduino v2
36/39
}if(Cont==2){ //Segunda opcion, prende los leds empezando del 9 hasta
el 1 uno por unoApagarLeds(12,11,10,9,8,7,6,5,0);delay(Pausa);PrenderLeds(12,11,10,9,8,7,6,5,150);delay(Pausa);
}if(Cont==3){ //Tercera opcion, apaga los leds del 1 al 9 uno por unoPrenderLeds(5,6,7,8,9,10,11,12,0);delay(Pausa);ApagarLeds(5,6,7,8,9,10,11,12,150);delay(Pausa);
}if(Cont==4){ //Cuarta opcion, apaga los leds del 9 al 1 uno por unoPrenderLeds(5,6,7,8,9,10,11,12,0);delay(Pausa);ApagarLeds(12,11,10,9,8,7,6,5,150);delay(Pausa);
}
}
Practica XII:Motores CD Parte 1Un motor de corriente directa (CD) es un componenteelectromecnico que permite agregar movimiento a nuestrosproyectos, un ejemplo muy comn, son los juguetes como loscoches a control remoto, quienes requieren de un pequeomotor CD para poder avanzar o retroceder y uno mas para girara la izquierda o a la derecha.
-
8/10/2019 Manual de Practicas Arduino v2
37/39
A diferencia de los LEDs, por poner un ejemplo, un motor nopuede ser controlado directamente desde los pines de unArduino, ya que requiere mucha ms corriente que la que estospueden proveer.
En esta ocasiones veremos como construir una de lassoluciones mas simples para poder controlar estos tilesdispositivos sin correr el riesgo de quemar nuestro Arduino omicrocontrolador.
MATERIALES
1 Transistor Bipolar NPN de uso general, BC547, 2N2222, 2N3904
1 Diodo de propsito general, 1N4001, 1N4007
1 Resistencia 330 ohm (naranja, naranja, caf)
INSTRUCCIONES
Como vemos en el diagrama, la conexin de los componentes esmuy sencilla, y el trabajo pesado recae solo en el
Transistor, quien hace la funcin de Switch, dejando pasar lacorriente necesaria para poner en marcha nuestro motor.Dependiendo de las caractersticas por fabricante unTransistor puede llegar a manejar corrientes bastante altas,a partir de una mucho mas baja como la de unmicrocontrolador, Arduino en nuestro caso.
-
8/10/2019 Manual de Practicas Arduino v2
38/39
Ademas, podemos ver en el diagrama la Resistencia entre elpin 3 de Arduino y la base del Transistor en este caso solopara proporcionar la corriente necesaria y activarlo, y elDiodo conectado a los dos cables extremos del motor, la partenegativa(franja gris) al positivo, esto a manera deproteccin, puesto que algunos dispositivos electromecnicosal cambiar de un estado a otro producen un pico de corrienteen reversa que puede daar nuestros componentes, elTransistor en nuestro caso.
Cdigo
// Declaramos la variable d3 para referenciar el pin digital 3int d3 = 3;void setup(){// Iniciamos el pin digital como salida.pinMode(d3, OUTPUT);}void loop(){
digitalWrite(d3, HIGH); // escribimos en el pin un valor de salidaAlto (Digital 1)
delay(1500); // esperamos 1.5 segundos
-
8/10/2019 Manual de Practicas Arduino v2
39/39
digitalWrite(d3, LOW); // escribimos en el pin un valor de salidaBajo (Digital 0)
delay(1000); // esperamos 1.5 segundos}
COMPRAR MATERIAL PARA LAS PRCTICAS POSTERIORES.