Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
DS18B20 + LCD (Solucionado).
19-03-2013, 02:07 AM, (This post was last modified: 23-03-2013, 01:52 AM by Miguel75.)
#1
DS18B20 + LCD (Solucionado).
Buenas noches.

Estoy haciendo un control del temperatura de 3 sensores para una CNC y ya que tenía un pinguino 2550 montado me he inclinado por el.
Mi idea de programación es bastante limitada, hace poco que he empezado a aprender.
La cosa que me he estado peleando para hacer menús en un lcd 16x2 y eso lo tengo medianamente controlado, ahora he pasado a los sensores DS18B20. En los ejemplos que veo, documentación, y unas cuantas horas buscando en google, solo veo información para ver los datos en el pc, pero no para un lcd.
Ayer encontré un ejemplo para arduino y he estado intentando portarlo a pinguino, pero no lo consigo, he pasado de un montón de errores a uno solo, aunque seguramente habrá barbaridades...
Pienso que no es tan difícil, pero no me aclaro.
Espero que podáis echarme una mano, estaría muy agradecido.
Este es el código original:
Quote:#include "onewire.h"
#include "dallastemperature.h"
#include "liquidcrystal.h" //Libreria para el LCD
// Data wire is plugged into pin 8 on the Arduino
#define ONE_WIRE_BUS 8
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
//Iniciamos la libreria del LCD con los respectivos pines
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup(void)
{
//Setup de las lineas y columnas.
lcd.begin(16, 2);
Serial.begin(9600);
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for Device 1 is: ");
Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
float val1 = sensors.getTempCByIndex(0) ; // Almacenar la temperatura
Serial.print("Temperature for Device 2 is: ");
Serial.println(sensors.getTempCByIndex(1)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
float val2 = sensors.getTempCByIndex(1) ; // Almacenar la temperatura
Serial.print("Temperature for Device 3 is: ");
Serial.println(sensors.getTempCByIndex(2)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
float val3 = sensors.getTempCByIndex(2) ; // Almacenar la temperatura

lcd.setCursor(1, 0);
lcd.print("T1");
lcd.setCursor(0, 1);
lcd.print(val1);
lcd.setCursor(4, 1);
lcd.print(" ");

lcd.setCursor(7, 0);
lcd.print("T2");
lcd.setCursor(6, 1);
lcd.print(val2);do
lcd.setCursor(10, 1);
lcd.print(" ");

lcd.setCursor(13, 0);
lcd.print("T3");
lcd.setCursor(12, 1);
lcd.print(val3);

}

Como el código no es mío, pongo la web, si meto la pata, advertirmelo y la quito.
http://yopero-tech.blogspot.com.es/2011/...-mode.html

Un saludo y gracias.

******************************************************
Actualización.

En vista de que soy incapaz de encontrar información al respecto de la duda que había planteado con el ds18b20, y que nadie parece tener una respuesta después de estos días, y si alguien la tiene, ha pasado tres pueblos... He decidido seguir con mi proyecto cambiado los sensores por el LM35, con la información que se puede encontrar fácilmente en google, ya tengo mi código casi terminado.

Nos vemos... aunque probablemente no será así.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)