domingo, 3 de diciembre de 2017

EL PROGRAMITA DEL DICHOSO LED

--------------------------------------------------------------------------------------------------------------------------------------------

#define REPETICIONES 800     // Número de repeticiones para operar
#define DIVISOR 24     // Número de fracciones en las que se dividen las repeticiones
#define ESCALONES 28  // Escalones que se producen en la gráfica determinada por REPETICIONES y DIVISOR
#define TIEMPO_LOW 2    // Tiempo que estará en estado bajo en cada repetición. Determinará la frecuencia.

int level;
int rep;      // Para ir variando el número de repeticiones de forma no lineal

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {

  rep = REPETICIONES;    // Igualamos en cada ciclo para evitar la suma de errores por los decimales.
  level = 0;            // Tiempo inicial encendido, que equivale a la mínima iluminación.

  for (int i = 0; i < ESCALONES; i = i + 1)    // Realizamos un número determinado de escalones, cada uno con un tiempo y luminosidad no lineal.
  {
    rep = (REPETICIONES - ( i * i)) / DIVISOR;  // Calculamos el número de repeticiones para cada uno de los escalones.
    for (int j = 0; j < rep; j++)   // Número de repeticiones en cada una de los escalones.
    {
      digitalWrite(13, HIGH);
      delayMicroseconds(level);
      digitalWrite(13, LOW);
      delay(TIEMPO_LOW);
    }
    level = (i * i);    // El nivel de luminosidad, o tiempo de encendido aumenta de forma no lineal.
  }

  for (int i = ESCALONES; i > 0; i = i - 1)   // Realizamos un número determinado de escalones, cada uno con un tiempo y luminosidad no lineal.
  {
    rep = (REPETICIONES - ( i * i)) / DIVISOR;    // Calculamos el número de repeticiones para cada una de los escalones.
    for (int j = rep; j >= 0; j--)    // Númoero de repeticiones en cada una de los escalones.
    {
      digitalWrite(13, HIGH);
      delayMicroseconds(level);
      digitalWrite(13, LOW);
      delay(TIEMPO_LOW);
    }
    level = (i * i);    // El nivel de luminosidad, o tiempo de encendido disminuye de forma no lineal.
  }
}

-----------------------------------------------------------------------------------------------------------------------------------------

Si quereis comentar algo, os comento lo que querais.

5 comentarios:

  1. Este programa no hay que hacerle nada no?, ya esta resuelto

    ResponderEliminar
  2. Si, está resuelto, simplemente para que lo analiceis si quereis. Dije de hacerlo, pero me ha parecido muy dificil, así que nada. Seguimos con el RGB, y enseguida pongo alguna cosilla más.

    ResponderEliminar
  3. Gracias por desarrollarlo y compartirlo, el calculo de los tiempo es complejo.

    ResponderEliminar
  4. Pero, ¿qué problema resuelve este programa? No fui al último encuentro y parece algo que se trató allí...

    ResponderEliminar