miércoles, 1 de junio de 2016

Declarar DS1820 mediante clases

El otro día Noter en el foro de arduino, me respondió a una duda que tenía, ya que me gustaría declarar un DS1820 de forma dinámica, lamentablemente el código no funciona pero en cuanto tenga tiempo para revisarlo me pongo a estudiar el código y a empaparme como funcionan las clases para poder solucionarlo.

Este código lo publico a pesar de que no funcione por que le puede ser de utilidad a mas de una como referencia para programar algo similar.

Declarar DS1820 mediante clases:
#include "OneWire.h"
#include "DallasTemperature.h" //Lib. Termometro de Dallas DS1820. 
 
class Termo {
public:
 Termo(int nPin):pin(nPin), ds(OneWire(pin)), st(DallasTemperature(&ds)){st.begin();};
 float lectura() {
  st.requestTemperatures();
  st.getTempCByIndex(0);
 }
private:
 int pin;
 OneWire ds;
 DallasTemperature st;
};

//Definimos donde estan conectados los distintos sensores
Termo termo[] = {
 Termo(10),
 Termo(11),
 Termo(12),
 Termo(14)
};
 
void setup(){ 
  Serial.begin(9600); 
} 
 
void loop(){ 
 for (int i=0; i<4; i++) {
  Serial.print ("Temp "); 
  Serial.print (i);
  Serial.print(": ") ;
  Serial.print(termo[i].lectura());
  Serial.println (" C"); 
 }
}


Si alguien lo hecha a andar el código, le agradecería que me indicase como corregir el código.

No hay comentarios:

Publicar un comentario