Salidas digitales I

Salidas digitales I

A la fecha, todas las placas Arduino poseen salidas digitales. Arduino UNO posee 14 salidas digitales marcadas como 0 (cero) a 13. Además, tiene 6 salidas digitales más marcadas como A0 (A cero) a A5, éstas últimas entradas analógicas pero pueden usarse como salidas digitales también.

Las salidas digitales son las más simples de comprender y explicar porque no tiene demasiados conceptos asociados, así que vamos a divertirnos aprovechando la simpleza.

¿Qué necesitaremos?

Para este instructivo usaremos varios componentes electrónicos e introduciremos un elemento que nos acompañará durante todo el curso: el protoboard (también conocido como breadboard) o su traducción al español placa para prototipos (en el futuro nos referiremos como protoboard). Si compran uno nuevo para este curso, compren uno grande. Cuanto más grande, mayor los proyectos que podrán armar en él, pero uno de 165mm x 55mm alcanzará para todo lo que haremos en el curso.

Entonces, los elementos que necesitaremos son:

Elementos para el proyecto salidas digitales

 

– 1 Protoboard (uno pequeño alcanzará)

– 5 leds 5mm (o 3mm) cualquier color

– 5 resistencias de 1kΩ

– 6 cables de conexión macho-macho

– Arduino UNO y cable USB

 

 

No conecte su Arduino UNO a su computadora hasta finalizar las conexiones electrónicas. Conectaremos todos los componentes menos los leds de la siguiente manera:

Proyecto salidas digitales - conectando componentes menos los leds

Y luego agregamos los leds como indica la imagen, cuidando de que la pata más larga quede del lado derecho:

Proyecto salidas digitales - conectando los leds

Las conexiones electrónicas paso a paso

De la foto con los componentes que usaremos podrá ver que seleccioné específicamente 5 cables cortos color naranja y un cable más largo color negro. Siguiendo el diagrama de conexión, conecte el cable negro a GND en su Arduino UNO, y a la pista superior color azul o violeta en la mayoría de los breadboards (algunos incluso la tienen marcada con un signo menos – ). Cerca del centro del breadboard y en la mitad superior de mismo, conecte las 5 resistencias desde la línea horizontal superior (usualmente marcada a un costado con la letra ‘a’ o ‘j’ hacia la pista ‘-‘ donde tenemos conectado nuestro cable negro (ver la imagen anterior) dejando una línea entre cada resistencia como indica el diagrama.

Luego conecte los cables naranja uno a uno desde los pines 6 al 2 hacia las líneas entre las resistencias, conectando el último cable a la derecha de la última resistencia del mismo lado, como indica el diagrama. Intente conectar los cables en la línea inferior del área, usualmente marcadas con las letras ‘e’ o ‘f’ para dejar lugar para los leds al medio.

Finalizado lo anterior, y guiándonos con el segundo diagrama, conectaremos los leds. Los leds poseen una pata más larga que la otra. La misma indica cuál es el ánodo y usualmente va al positivo de un circuito. Por ello, la misma será la que conectaremos a los cables naranja. Proceda a conectar los 5 leds de manera de que la pata más larga (ánodo) quede a la derecha. Conecte los leds de manera de que queden en el medio, es decir en la línea usualmente marcada con las letras ‘c’ o ‘h’. La pata izquierda deberá quedar en la misma columna que la resistencia correspondiente, mientras que la pata derecha se alineará con el cable anaranjado correspondiente.

Verifique que su circuito haya quedado como en la imagen compartida.

El Sketch

Lo que intentaremos hacer es usar nuestro conocimiento sobre salidas digitales para encender y apagar los 5 leds según ciertos criterios (que usted podrá cambiar al finalizar para poner a prueba lo aprendido). La idea en todo Sketch es utilizar adecuadamente las funciones Arduino setup() y loop(). Pondremos en setup() todo lo relacionado a chequeos iniciales, verificaciones, etc. (¿estamos listos para arrancar?). Pondremos en loop() nuestro código principal el que repetiremos continuamente.

Verificando que las conexiones están bien

Iniciaremos con lo que va en setup() verificando que las conexiones que hicimos están bien. Para ello encenderemos al principio todos los leds juntos durante un tiempo (3 segundos en nuestro caso) . Además de lo anterior, antes de poder encender nada deberemos configurar los pines 2 al 6 como salidas digitales como aprendimos en tutoriales anteriores. La primera parte de nuestro Sketch quedaría así:

/*
 * ArduinoHobby.com
 * Codigo de ejemplo mostrando salidas digitales con 5 leds
 */

#define PIN_LED_1 6
#define PIN_LED_2 5
#define PIN_LED_3 4
#define PIN_LED_4 3
#define PIN_LED_5 2
 
void setup() {
  // En el inicio probamos que todos los leds estan bien conectados y funcionan
  pinMode(PIN_LED_1, OUTPUT);
  pinMode(PIN_LED_2, OUTPUT);
  pinMode(PIN_LED_3, OUTPUT);
  pinMode(PIN_LED_4, OUTPUT);
  pinMode(PIN_LED_5, OUTPUT);

  // Encendemos todos los leds
  digitalWrite(PIN_LED_1, HIGH);
  digitalWrite(PIN_LED_2, HIGH);
  digitalWrite(PIN_LED_3, HIGH);
  digitalWrite(PIN_LED_4, HIGH);
  digitalWrite(PIN_LED_5, HIGH);

  // Pausa de 3 segundos
  delay(3000);

  // Finalizamos apagando todos los leds
  digitalWrite(PIN_LED_1, LOW);
  digitalWrite(PIN_LED_2, LOW);
  digitalWrite(PIN_LED_3, LOW);
  digitalWrite(PIN_LED_4, LOW);
  digitalWrite(PIN_LED_5, LOW);
}

void loop() {
}

Suba el Sketch a su Arduino como aprendió. Cuando finalice deberá observar que al iniciar su Arduino UNO deberá encender todos los leds durante 3 segundos y luego apagarlos. Nada más deberá suceder si todo salió bien.

Si las cosas no salieron como se menciona lea lo siguiente

Observación: cada vez que quiera iniciar su programa de cero (por ejemplo para probar los leds nuevamente) solo deberá apretar el boton de reset de su Arduino

Si ningún led se enciende, revise el cable negro. Si uno o más leds no encienden revise la conexión del led que no enciende asegurándose se controlar que:

  • La resistencia está adecuadamente conectada
  • El cable naranja está apropiadamente conectado
  • El led está bien conectado y la pata larga conectada al cable naranja

Si luego de revisar lo anterior no se solucionó el problema pruebe:

  • Cambiar la resistencia del led que no anda por una que anda (de un led que anda)
  • Cambiar el led que no anda por uno que anda (de los que ya verificamos)

Cargando el Sketch completo

Luego de verificar todo proceda a cargar el siguiente Sketch:

/*
 * ArduinoHobby.com
 * Codigo de ejemplo mostrando salidas digitales con 5 leds
 */

#define PIN_LED_1 6
#define PIN_LED_2 5
#define PIN_LED_3 4
#define PIN_LED_4 3
#define PIN_LED_5 2

#define TIEMPO_LED_ENCENDIDO 500
#define TIEMPO_LED_APAGADO 50

#define REPETICIONES_RUTINAS 5
 
void setup() {
  // En el inicio probamos que todos los leds estan bien conectados y funcionan
  pinMode(PIN_LED_1, OUTPUT);
  pinMode(PIN_LED_2, OUTPUT);
  pinMode(PIN_LED_3, OUTPUT);
  pinMode(PIN_LED_4, OUTPUT);
  pinMode(PIN_LED_5, OUTPUT);

  // Encendemos todos los leds
  digitalWrite(PIN_LED_1, HIGH);
  digitalWrite(PIN_LED_2, HIGH);
  digitalWrite(PIN_LED_3, HIGH);
  digitalWrite(PIN_LED_4, HIGH);
  digitalWrite(PIN_LED_5, HIGH);

  // Pausa de 3 segundos
  delay(3000);

  // Finalizamos apagando todos los leds
  digitalWrite(PIN_LED_1, LOW);
  digitalWrite(PIN_LED_2, LOW);
  digitalWrite(PIN_LED_3, LOW);
  digitalWrite(PIN_LED_4, LOW);
  digitalWrite(PIN_LED_5, LOW);

  // Pausa de 1 segundo antes de comenzar la rutina de repeticion
  delay(1000);
}

void loop() {
  // Repetimos la rutina 5 veces
  for (int x=0; x<REPETICIONES_RUTINAS; x++) {
    // La siguiente rutina enciende los leds 1 a 1 de izquierda a derecha
    digitalWrite(PIN_LED_1, HIGH);
    delay(TIEMPO_LED_ENCENDIDO);
    digitalWrite(PIN_LED_1, LOW);
    delay(TIEMPO_LED_APAGADO);

    digitalWrite(PIN_LED_2, HIGH);
    delay(TIEMPO_LED_ENCENDIDO);
    digitalWrite(PIN_LED_2, LOW);
    delay(TIEMPO_LED_APAGADO);

    digitalWrite(PIN_LED_3, HIGH);
    delay(TIEMPO_LED_ENCENDIDO);
    digitalWrite(PIN_LED_3, LOW);
    delay(TIEMPO_LED_APAGADO);

    digitalWrite(PIN_LED_4, HIGH);
    delay(TIEMPO_LED_ENCENDIDO);
    digitalWrite(PIN_LED_4, LOW);
    delay(TIEMPO_LED_APAGADO);

    digitalWrite(PIN_LED_5, HIGH);
    delay(TIEMPO_LED_ENCENDIDO);
    digitalWrite(PIN_LED_5, LOW);
    delay(TIEMPO_LED_APAGADO);

    // Y sigue encendiendolos de derecha a izquierda (volviendo)
    digitalWrite(PIN_LED_4, HIGH);
    delay(TIEMPO_LED_ENCENDIDO);
    digitalWrite(PIN_LED_4, LOW);
    delay(TIEMPO_LED_APAGADO);

    digitalWrite(PIN_LED_3, HIGH);
    delay(TIEMPO_LED_ENCENDIDO);
    digitalWrite(PIN_LED_3, LOW);
    delay(TIEMPO_LED_APAGADO);

    digitalWrite(PIN_LED_2, HIGH);
    delay(TIEMPO_LED_ENCENDIDO);
    digitalWrite(PIN_LED_2, LOW);
    delay(TIEMPO_LED_APAGADO);
  }

  // Pausa de 3 segundos
  delay(3000);
}

Cuando finalice de cargar e inicie deberá ver los 5 leds encendidos por 3 segundos, luego apagados por 1 segundo, y luego una rutina donde los leds encenderán uno a uno de izquierda a derecha y luego volverán a la izquierda, repitiendo la rutina 5 veces luego de lo cual hará una pausa de 3 segundo y comenzará de nuevo.

¿Qué sigue?

Luego de haber visto los conceptos iniciales de las salidas digitales, revisemos el Sketch para aprender más sobre el código y como programar Arduinos: http://www.arduinohobby.com/salidas-digitales-parte-2/

Deja un comentario