martes, 8 de septiembre de 2015

Laboratorio #1

Descripción:

En el siguiente laboratorio llevaremos a cabo un circuito en el cual se controlaran 8 LEDS desde el arduino. el encendido del LED se moverá de izquierda a derecha y viceversa.

Materiales:

  • Computador (con el debido software del arduino).
  • Protoboard.
  • Arduino ( con su respectivo cable USB).
  • LED.
  • Resistencia 220 ohm.
  • Cables.

Diagramas:

Montaje
Esquemático

PCB


Código

Esta primera versión es sencilla de entender, tenemos 8 LEDS cada uno conectado a un pin digital del Arduino. Comenzamos configurando cada uno de los pines como salida (OUTPUT), y luego se utiliza digitalWrite()para prender y apagar cada LED en la forma que se necesita.

  1. /** Laboratorio #1 **
  2. * Universidad Santiago de Cali
  3. * Programación de sistemas embebidos
  4. * Laboratorio 01: 8 LEDs en linea
  5. * Autor: Johnson Camilo Barona Sanchez
  6. * Descripcion:
  7. *     Mover un LED encendido de Izquierda a Derecha y viceversa
  8. * Conexiones:
  9. *     8 LEDs + resistencias a los pines D2 .. D9
  10. * Version: 1
  11. */
  12. /********** Librerias **********/
  13. // ninguna
  14. /********** Constantes **********/
  15. // ninguna
  16. /********** Objetos **********/
  17. // ninguno
  18. /********** Variables **********/
  19. // ninguna
  20. /********** Configuracion **********/
  21. void setup() {
  22.    pinMode(2, OUTPUT);
  23.    pinMode(3, OUTPUT);
  24.    pinMode(4, OUTPUT);
  25.    pinMode(5, OUTPUT);
  26.    pinMode(6, OUTPUT);
  27.    pinMode(7, OUTPUT);
  28.    pinMode(8, OUTPUT);
  29.    pinMode(9, OUTPUT);
  30. } // end setup()
  31. /********** Ciclo Principal **********/
  32. void loop() {
  33. // Acciones
  34.    digitalWrite(2, HIGH);
  35.    delay(1000);
  36.    digitalWrite(2, LOW);
  37.    delay(1000);
  38.    digitalWrite(3, HIGH);
  39.    delay(1000);
  40.    digitalWrite(3, LOW);
  41.    delay(1000);
  42.    digitalWrite(4, HIGH);
  43.    delay(1000);
  44.    digitalWrite(4, LOW);
  45.    delay(1000);
  46.    digitalWrite(5, HIGH);
  47.    delay(1000);
  48.    digitalWrite(5, LOW);
  49.    delay(1000);
  50.    digitalWrite(6, HIGH);
  51.    delay(1000);
  52.    digitalWrite(6, LOW);
  53.    delay(1000);
  54.    digitalWrite(7, HIGH);
  55.    delay(1000);
  56.    digitalWrite(7, LOW);
  57.    delay(1000);
  58.    digitalWrite(8, HIGH);
  59.    delay(1000);
  60.    digitalWrite(8, LOW);
  61.    delay(1000);
  62.    digitalWrite(9, HIGH);
  63.    delay(1000);
  64.    digitalWrite(9, LOW);
  65.    delay(1000);
  66. } // end loop()
  67. /********** Funciones **********/
  68. // ninguna
  69. /********** Fin ***********/



como podemos observar, el código anteriormente escrito es demasiado largo. Este se puede reducir por medio de un ciclo llamado en programación como (for). A continuación se muestra como se puede reducir dicha escritura.



  1. /**Laboratorio #1***
  2. * Universidad Santiago de Cali
  3. * Programación de sistemas embebidos
  4. * Laboratorio 01: 8 LEDs en linea
  5. * Autor: Johnson Camilo Barona Sanchez
  6. * Descripcion:
  7. *     Mover un LED encendido de Izquierda a Derecha y viceversa
  8. * Conexiones:
  9. *     8 LEDs + resistencias a los pines D2 .. D9
  10. * Version: 2
  11. */
  12. /********** Librerias **********/
  13. // ninguna
  14. /********** Constantes **********/
  15. // ninguna
  16. /********** Objetos **********/
  17. // ninguno
  18. /********** Variables **********/
  19. // ninguna
  20. /********** Configuracion **********/
  21. void setup() {
  22.    for (int pin=2; pin<=9; pin++) {
  23.       pinMode(pin, OUTPUT);
  24.    }
  25. } // end setup()
  26. /********** Ciclo Principal **********/
  27. void loop() {
  28. // Acciones
  29.    for (int pin=2; pin<=9; pin++) {
  30.       digitalWrite(pin, HIGH);
  31.       delay(1000);
  32.       digitalWrite(pin, LOW);
  33.       delay(1000);
  34.    }
  35. } // end loop()
  36. /********** Funciones **********/
  37. // ninguna
  38. /********** Fin ***********/

El código se redujo de manera considerable pero esto no es todo. Sí accidentalmente conectamos los diodos LEDS a pines diferentes al de nuestra programación, podríamos hacer que estos funcionen normalmente y además de eso, podríamos darle la velocidad de encendido y apagado.

  1. /**Laboratorio #1**
  2. * Universidad Santiago de Cali
  3. * Programación de sistemas embebidos
  4. * Laboratorio 01: 8 LEDs en linea
  5. * Autor: Johnson Camilo Barona Sanchez
  6. * Descripcion:
  7. *     Mover un LED encendido de Izquierda a Derecha y viceversa
  8. * Conexiones:
  9. *     8 LEDs + resistencias a los pines D2 .. D9
  10. * Version: 3
  11. */
  12. /********** Librerias **********/
  13. // ninguna
  14. /********** Constantes **********/
  15. // ninguna
  16. /********** Objetos **********/
  17. // ninguno
  18. void setup() {
  19.   for (int P = 2; P <= 9; P++)
  20.     pinMode (P, OUTPUT);
  21. }
  22. // Funciones
  23. void prender (int p, int t)
  24. {
  25.   digitalWrite(p, HIGH);
  26.   delay (t);
  27. }
  28. void apagar (int p, int t)
  29. {
  30.   digitalWrite(p, LOW);
  31.   delay (t);
  32. }
  33. void loop()
  34. {
  35.   for ( int p = 2; p <= 9; p++)
  36.   {
  37.     prender (p, 200);
  38.     apagar (p, 200);
  39.   }
  40.   for ( int p = 8; p >= 3; p--)
  41.   {
  42.     prender (p, 200);
  43.     apagar (p, 200);
  44.   }
  45. }

Proceso de Montaje






Vídeos




Incrementamos la velocidad de encendido y apagado de los LEDS.





Como se puede observar en los diferentes vídeos, la velocidad de los LEDS se la damos en el proceso de programación.





    No hay comentarios:

    Publicar un comentario