Hallo allerseits,
ich als Anfänger, habe nochmal eine Verständnis Frage.
Also, ich versuche einen DS18B20 Temperaturfühler auszulesen (was mit Serial-Monitor auch klappt) und auf eine Webseite die Temperatur anzuzeigen.
Aber irgendwie verstehe ich da was nicht. Vieleicht kann sich jemand den Code anschauen und mir sagen wo der Fehler liegt.
Die Fehlermeldung beim Kompilieren ist folgende:
DS18B20_SUPER.cpp: In function 'void loop()':
DS18B20_SUPER:73: error: 'getTemperatur' was not declared in this scope
DS18B20_SUPER:73: error: expected `;' before ')' token
DS18B20_SUPER:79: error: a function-definition is not allowed here before '{' token
Also ich habe vorher beide Sketche einzeln getestet, den zum Auslesen des DS18B20 und den Ethernet.
Und beim zusammen fügen, verseteh ich wohl was nicht.
Ich würde mich freuen,wenn jemand mir sagen könnte, wo der Fehler liegt und wie man den behebt bzw. warum da eine Fehlermeldung kommt.
Hier der Sketch:
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
byte mac[] = { 0xDE, 0xAD, 0xED, 0xEF, 0xFE, 0xBE };
byte ip[] = { 192, 168, 178, 216 }; // IP vom Arduino im Netzwerk
byte gateway[] = { 192, 168, 178, 1 };
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server(80);
float Temperatur;
// Data wire is plugged into pin 6 on the Arduino
#define ONE_WIRE_BUS 6
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
nics.com/Tutorials/arduino-1-wire-address-finder.html
DeviceAddress insideThermometer = { 0x28, 0x03, 0xF6, 0xC2, 0x03, 0x00, 0x00, 0xA7 };
void setup(void){
// initialize the ethernet device
Ethernet.begin(mac, ip);//, gateway, subnet);
// start listening for clients
server.begin();
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// set the resolution to 10 bit (good enough?)
sensors.setResolution(insideThermometer, 10);
}
void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
//Serial.print(" F: ");
//Serial.print(DallasTemperature::toFahrenheit(tempC));
}
}
void loop(void)
{
EthernetClient client = server.available();
if (client) {
server.print("HTTP/1.0 200 OK\r\nServer: arduino\r\nContent-Type: text/html\r\n\r\n");
server.print("<HTML><HEAD><TITLE>");
server.print("Arduino Temperature");
server.print("</TITLE>");
server.print("<meta http-equiv='refresh' content='60'>");
server.print("</HEAD><BODY>");
server.print(getTemperatur));
server.print("°C");
server.print("</BODY></HTML>");
delay(10);
client.stop();//close the connection with the client
}
float getTemperatur() {
delay(5000);
Serial.print("Getting temperatures...\n\r");
sensors.requestTemperatures();
Serial.print("Inside temperature is: ");
printTemperature(insideThermometer);
Serial.print("\n\r");
}
}
Vielen Dank für eure Hilfe
PS: Ich nutze die Arduino 1.0