Temporitzador amb leds

En este proyecto construiremos un reloj de arena con un sensor de inclinación y  leds que se irán encendiendo uno a uno cada 10 segundos.

Hasta ahora, cuando se ha querido que suceda algo al pasar un intervalo de tiempo específico con Arduino se ha usado la instrucción delay(), la cual es útil pero un tanto limitada. Cuando se ejecuta delay() Arduino se paraliza hasta que se termine el tiempo especificado dentro de esta instrucción. Esto significa que no es posible trabajar con las señales de entrada y salida mientras está paralizado.

Delay tampoco es muy útil para llevar un control del tiempo transcurrido. Resulta un tanto engorroso hacer algo cada 10 segundos utilizando para ello delay junto con este tiempo de retraso.

La función millis() ayuda a resolver estos problemas. Realiza un seguimiento del tiempo que Arduino ha estado funcionando en mili segundos.

Los datos de tipo largo o long pueden guardar números de 32 bits (entre -2147483648 y 2147483647). Ya que no es posible contar el tiempo hacia atrás usando números negativos, la variable para guardar el tiempo que hay que usar en la función mills() se llama unsigned long. Cuando un tipo de datos es llamado unsigned (sin signo), solo trabaja con números positivos.

El sensor de inclinación trabaja igual que un interruptor pulsador. En su interior disponen de una pequeña cavidad con una bola de metal. Cuando el interruptor se gira la bola de metal se mueve en su interior rodando hasta uno de los extremos de la cavidad, haciendo que dos terminales se conecten entre sí de forma que se cierra el circuito que está conectado a la placa de pruebas. En ese momento el reloj de arena digital comenzará a contar un tiempo de 60 segundos encendiendo un LED, de los 6 de que dispone, cada 10 segundos.

MATERIALS

1x Sensor d’inclinació

1x Resistència de 10kΩ

6x Leds

6x Resistència de 220Ω

MUNTATGE

PROGRAMACIÓ PAS A PAS

  1. Creem una constant pel pin del sensor.

for(){

}

Utilitzarem la funció for() quan volguem repetir una instrucció en forma de seqüència, com és el cas del pinMode dels leds, que s’hauria de fer 6 vegades, una per cada led.

La estructura del for() és la següent:

for(variable inicial, final de la seqüència, increment o càlcul del nou valor de x){

intruccions a fer amb la variabl x;

}

EXEMPLE:

Fem una calculadora que em sumi 3 + tots els números parells entre 1-10 i mel’s mostri per pantalla.

for(int x=0; x<11; x=x+2){

int suma = 3+x;

Serial.println(suma);

}

HO APLIQUEM ALS LEDS:

for(int x=2; x<8;x++){

pinMode(x,OUTPUT);

}

PROGRAMACIÓ PAS A PAS (2)

  1. Fem tots els pinMode.
  2. Creem una variable unsigned long, que guardarà el temps actual, i la igualem a millis().
  3. Amb for() i if(), fem que els leds s’encenguin un a un cada 10s (10.000ms).

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.