Manual de Practicas Arduino v2

download Manual de Practicas Arduino v2

of 39

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.