Pages: [1]   Go Down
Author Topic: Regular la intensidad de la luz de un LED con DS18B20  (Read 1131 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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.
« Last Edit: April 18, 2013, 06:35:12 am by AWOL » Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1407
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

* 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/

Offline Offline
Sr. Member
****
Karma: 8
Posts: 252
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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)
Logged

My 3x3x3 Led Cube

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

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1407
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

* 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/

Offline Offline
Sr. Member
****
Karma: 8
Posts: 252
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

My 3x3x3 Led Cube

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

Pages: [1]   Go Up
Jump to: