|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica   ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando

-- Tutorial de iniciación a Arduino --

Volver al índice del tutorial

____________________________

8.- Temporizador.

Al pulsar el pulsador se espera 8 segundos.
Al cabo de ese tiempo el LED parpadea 5 veces.

El tiempo empieza a contar desde el momento que se pulsa el pulsador.

Código
/*
  Juan A. Villalpando
  kio4.com
  agosto 2015.
 */

/* Pulsamos, después de 8 segundos empieza a parpadear el LED. Hace 5 parpadeos y se apaga.
   Al pulsar el pulsador se marca activado=1, se establece tiempo inicial y final.
   Cuando ha sido activado y el tiempo actual supera al final...
   entra en funcionamiento la subrutina parpadeo.
   Cada vez que hace un parpadeo cuenta 1 más.
   Cuando hace 5 parpadeo inicializa todo. Pone activado a 0 y contador a 0.

*/

#define pin2 2   // Al terminal  2 lo llamamos pin2. Aquí irá el pulsador.
#define LED13 13 // Al terminal 13 lo llamamos LED13. Aquí irá el LED.
int valor2; // Esto es una variable entera
int contador=0; // Variable contador igual a cero en el inicio.
int activado=0; // Al principio no ha sido activado.
long inicio, final, actual; // Tiempos.
void parpadeo(); // Vamos a utilizar la subrutina parpadeo. La declaramos.

// En el setup establecemos los parámetros iniciales.
void setup() {
  pinMode(pin2, INPUT);     // El pin2 será entrada. Pulsador.
  pinMode(LED13, OUTPUT);   // El LED13 será salida. LED.
}


void loop() {
  valor2 = digitalRead(pin2); // Lee el valor del pin2 y se lo asigna a valor2. (Puede ser 0 o 1)

if (valor2 == HIGH && activado == 0) {      // Si ha pulsado HIGH y no ha sido activado=0 antes...
        activado = 1;                       // marca activado=1 y guarda el tiempo de inicio.
        inicio = millis();
        final = inicio + 8000;              // Tiempo final es inicio más 8 segundos.
                         } 
                    
        actual = millis();                  // Consulta el tiempo actual.

if (activado == 1 && (actual > final) ) {   // Si fue activado=1 y el tiempo actual es mayor que el final....
     parpadeo();                            // haz un parpadeo.
} 
}


// Subrutina parpadeo.
void parpadeo()
{
  contador = contador + 1; // Cada vez que hace un parpadeo cuenta uno más.
  if (contador == 5){      // Si la cuenta llega a 5, inicializa todo.
  contador = 0;
  activado = 0;
  }
  digitalWrite(LED13, HIGH); 
  delay(300);
  digitalWrite(LED13, LOW); 
  delay(300);
}

 

- Recuerda que debes guardar cada archivo de proyecto en una carpeta única para él.
- Una subrutina es un trozo de código al que podemos llamar desde el código principal.

- La subrutina la declaramos al principio: void parpadeo(); .

- if (valor2 == HIGH && activado == 0). Si valor2 es ALTO Y activado es cero. El doble ampersand "&&" significa Y

- inicio = millis();. millis() toma los milisegundos actuales desde que se inició la ejecución de la aplicación.

Supongamos que millis = 64010

inicio = 64010
final =  64010 + 8000 = 72010

Supongamos que actual = 65900

if (activado == 1 && (actual > final) ) --------- Actual no supera a final .

Supongamos que actual = 72011

if (activado == 1 && (actual > final) ) --------- Actual sí supera a final y hace el contenido del if.

________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información