Go Down

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

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

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.

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