_______________________________________________________________________
   /*
      ATDT MAGAZINE ::::::::::::::::::::::::::::::::::::::::::::::::::::::
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[0x03-08]:
      NUMERO 0x03:::::::::::::::::::::::::::::::::::::::::::::::::::::::::

                           "introducción a Arduino - parte 3" por lmtreser
   */


  En el artículo anterior les hable un poco sobre entradas analógicas y
  digitales. Hoy es el turno de trabajar con salidas analógicas.

  =====> SALIDAS ANALÓGICAS

  La placa Arduino UNO no tiene un periférico de hardware capaz de
  convertir una señal digital a analógica (DAC, Digital to Analogue
  Converter) por lo que se vale de señales PWM (Modulación por Ancho de
  Pulso) para "simular" valores analógicos. Las patitas que tienen la
  capacidad de generar señales PWM son las que se encuentran en la bornera
  Digital y tienen el símbolo ~ al lado del número identificatorio: 3, 5,
  6, 9, 10 y 11.
  Vagamente podriamos pensar a una señal PWM como una onda cuadrada de una
  frecuencia fija, con una amplitud entre 0 y 5V a la que podemos cambiarle
  el ancho (o tiempo) del estado encendido (1) y del estado apagado (0) a
  voluntad.


    5V      ____            ________        __
           |    | OFF      |        |OFF   |  |  OFF
       ____| ON |_____//___|  ON    |__//__|ON|________
    0V               //               //


  Para generar y manipular este tipo de señales, Arduino cuenta con una
  función llamada analogWrite, la cual se escribe de la siguiente manera:

  analogWrite(pin, valor)

  Los paramétros que acepta son: número de pin a utilizar como salida y el
  valor a escribir que va desde 0 (apagado) hasta 255 (encendido), es decir
  que tiene una resolución de 8 bits. Como podrán imaginar con este tipo de
  salida podemos controlar el brillo de un LED o la velocidad de giro de un
  pequeño motor.

  =====> CONTROLAR UN LED

  Vamos a controlar el brillo de un LED mediante el uso de un contador por
  software para obtener un efecto luminíco ascendente. La variable llamada
  "contador" se incrementará en uno cada 500 milisegundos, acto seguido se
  escribirá su contenido en el pin donde tenemos conectado el LED.

  Las conexiones que tenemos que hacer son las siguientes:


                     {D3}
                      |
                      |
                     [ ]
           220 ohms  [ ]
                     [ ]
                      |
                      |
                    *****
                     ***   LED
                      *
                    *****
                      |
                      |
                    {GND}


  El firmware que tendremos que escribir en el IDE de Arduino y luego subir
  a la placa es el siguiente:

  *************************************************************************
  *                                                                       *
  * /* CONTROL DE UN LED MEDIANTE PWM                                     *
  *    APRENDIENDO ARDUINO EN TEXTO PLANO                                 *
  * */                                                                    *
  *                                                                       *
  * const int LED = 3; // pin donde conectaremos el LED                   *
  * int contador = 0;  // declaración de una variable                     *
  *                                                                       *
  * void setup() {                                                        *
  *    pinMode(LED, OUTPUT);                                              *
  * }                                                                     *
  *                                                                       *
  * void loop() {                                                         *
  *    contador = contador + 1;    // incrementamos el contador           *
  *    analogWrite(LED, contador); // escribimos un valor en el LED       *
  *    delay(500);                                                        *
  * }                                                                     *
  *                                                                       *
  *************************************************************************

  El programa tiene algunas fallas operativas que las solucionaremos en el
  próximo artículo.
  ¡Hasta la próxima!


   _________________________________________________________________________________
   !EOF -> atdt-zine-0x03-08.txt