lunes, 6 de julio de 2015

Escala luminosa con arduino

Os traigo un proyecto un tanto curioso, se trata de una escala luminosa compuesta por 10 leds la cual encenderá más o menos leds en función de la medición de un sensor de temperatura, luz, etc.
Para ello medimos la temperatura o luz con un divisor de tensión en arduino (en este caso temperatura), y conectamos 10 leds (colocados en en una regleta de plástico) a los pines 3 hasta el 12 inclusives.

El código es el siguiente:

int variable;
int led;
int n;

void setup() {
for (n=3;n<13;n++) { //ponemos los pines del 3 al 12 como salidas
  pinMode (n,OUTPUT);
  }
 Serial.begin (9600); //inicializamos la comunicación con el pc por puerto serie
}

void loop() {
variable=analogRead (0); //leemos el valor de 0 a 1023 de la variable a visualizar
Serial.println (variable); // vemos el valor de la variable en el pc por el puerto serie
led=map(variable,0,1203,3,12); // convertimos el valor medido de 0 a 1023 en valores entre 3 a 12

for (n=3;n<(led+1);n++) { // encendemos el nº de leds que marca el sensor


  digitalWrite (n,HIGH);
  }
delay (200);
for (n=3;n<(led+1);n++) { //apaga el nº de leds marcado por el sensor

  digitalWrite (n,LOW);
  }
}


Editado 8/07/2015:
Mejora. Para que el proyecto tenga un rango de actuación mejorado debemos medir (por la pantalla del PC con el Serial.println) los valores máximos y mínimos del analogRead, y colocarlos en la línea led=map(variable,valormin,valormax,3,12), dónde valormin y valormax son los valores mínimos y máximos medidos anteriormente.

El proyecto ha sido realizado durante el curso 2014-2015 por el alumnado de proyecto integrado de robots electrónicos de 4º de ESO del IES Pedro Soto de Rojas.

Los archivos del proyecto se pueden descargar aquí.

No hay comentarios:

Publicar un comentario