Go Down

Topic: Regular la intensidad de la luz de un LED con DS18B20 (Read 1 time) previous topic - next topic

johnnykuroneko

Apr 18, 2013, 01:31 pm Last Edit: Apr 18, 2013, 01:35 pm by AWOL Reason: 1
Hola, mi nombre es Jonathan, llevo poco tiempo programando arduino, y estoy en un proyecto el cual requiere que se regule la intensidad lumínica de una serie de leds mediante el sensor de temperatura DS18B20.
La programación actual es esta:
Code: [Select]
#include <OneWire.h>  
#include <DallasTemperature.h>  

int sonda1 = A5;
int sonda2 = A6;
int sonda3 = A7;
int resis1 = A0;
int resis2 = A1;
int resis3 = A2;
int value = 0;
int value2 = 0;
int value3 = 0;
int fadeval = 0;
int fadeval2 = 0;
int fadeval3 = 0;
OneWire ds(sonda1);  
DallasTemperature sensors(&ds);  
OneWire ds2(sonda2);
DallasTemperature sensors2(&ds2);
OneWire ds3(sonda3);
DallasTemperature sensors3(&ds3);
DeviceAddress Temperatura1;
float TemperaturaA;  
float TemperaturaB;
float TemperaturaC;
float voltsa=0.0,tempa=0.0;
float voltsb=0.0,tempb=0.0;
float voltsc=0.0,tempc=0.0;



void setup ()
{
pinMode(A7,INPUT);
pinMode(A6,INPUT);
pinMode(A7,INPUT);
pinMode(7,OUTPUT);
pinMode(6,OUTPUT);
pinMode(5,OUTPUT);
Serial.begin(9600);  
sensors.begin();
}

void loop (){
 value = analogRead(TemperaturaA);
 value2 = analogRead(TemperaturaB);
 value3 = analogRead(TemperaturaC);
 voltsa = value*5.0/1023;
 tempa = voltsa*100;
 voltsb = value2*5.0/1023;
 tempb = voltsb*100;
 voltsc = value3*5.0/1023;
 tempc = voltsc*100;
 
 if(value>=32.50){
   digitalWrite(7,HIGH);
 }
   else{
     for(fadeval = 0;fadeval<=255;fadeval+=5){
     analogWrite(7,fadeval);}
     for(fadeval = 255;fadeval>=255;fadeval-=5){
     analogWrite(7,fadeval);}  
   }
 

 if(value2>=32.50){
   digitalWrite(6,HIGH);
 }
   else{
     for(fadeval2 = 0; fadeval2<=255;fadeval+=5){
     analogWrite(6,fadeval2);}
     for(fadeval2 = 255;fadeval2>=0;fadeval2-=5){
     analogWrite(6,fadeval2);}  
   }
 
 if(value3>=32.50){
   digitalWrite(5,HIGH);
 }
   else{
     for(fadeval3 = 0;fadeval3<=255;fadeval3+=5){
     analogWrite(5,fadeval3);}
     for(fadeval3 = 255;fadeval3>=0;fadeval3-=5){
     analogWrite(5,fadeval3);}  
   }
 


 sensors.requestTemperatures();  
 TemperaturaA = sensors.getTempCByIndex(0);  
 Serial.print (TemperaturaA);  
 Serial.println (" C 1");
 TemperaturaB = sensors2.getTempCByIndex(0);
 Serial.print (TemperaturaB);
 Serial.println (" C 2");
 TemperaturaC = sensors3.getTempCByIndex(0);
 Serial.print (TemperaturaC);
 Serial.println (" C 3");
 delay (500);
}

No estoy muy seguro de como esta hecha puesto que la eh hecho desde cero y le eh ido añadiendo diferentes partes de otros programas.
Me gustaría que alguien me dijera como se consigue regular la intensidad del LED según la temperatura que mida la sonda.
Muchas gracias.

Sergegsx

Tira ese código a la basura.
No copies y pegues sin aprender q es cada cosa.
Aprende primero lo básico porque sino en esencia nos estas pidiendo que te enseñemos todo desde cero
* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

American2020

Explica un poco mejor, que tienes conectado, serán 3 sensores y 3 leds?

De ahí en adelante, es mejor desarrollar el código uno. No estoy seguro como funciona el sensor de temperatura DS18B20.

Pero luego de que sepas eso, lo que debes hacer, es saber que valores devuelve (Como máximo y cómo mínimo)

Y luego ese valor se "Mapearía" para reflejar un valor de 0 a 255 y eso lo mandas a los leds a modo de Analton Write en pines capaces de hacer PWM (Los pines con un puntito blanco)
My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

Sergegsx

El problema es que todo el codigo esta mal. Ha mezclado codigos que no sirven.
* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

American2020


El problema es que todo el codigo esta mal. Ha mezclado codigos que no sirven.


Sep, yo el código ni lo miré, es como dices tu, mejor partir de cero y uno mismo hacer su código para entender que es lo que se está haciendo en el mismo, de esa forma no sólo se aprende más, sino que se sabe dónde buscar posibles errores.
My 3x3x3 Led Cube

[url=http://arduino.cc/forum/index.php/topic,1642

Go Up