Ich versuche nun mit dem Mega2560 R2 die Temperatur zu erfahren.
Leider bekomme ich aber egal was ich versuche immer werte zwischen 0 und 499 (schwankend)
Was mach ich falsch?
float tempC;
int reading;
int tempPin = A0;
float temp;
void setup() {
Serial.begin(9600);
}
void loop() {
reading = analogRead(tempPin);
temp = (5.0 * analogRead(reading) * 100.0) / 1024;
delay(500); // halbe Sekunde Pause zwischen den Messungen
Serial.print(temp); //Ausgabe der Temperatur mit einer Nachkommastelle
Serial.println(" Grad Celsius");
}
Hallo schau einmal ob Dir das weiterhilft, ich habe den gleichen Teperatur Sensor und bei meinem Riffaquarium läuft das super.
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// 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);
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
}
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.print(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
}
Die Sensoren sind keine die ein analoges Signal proportional zur Temp. ausgeben. Die haben einen Ein Draht Bus und liefern den Temperaturwert direkt zum auslesen nach der internen Wandlung.
Guck mal ins Datenblatt wie die angeschlossen werden. Damit erschließt sich einiges.
der Dallas DS18B20 ist ein digitaler Temperatorsensor, den man nicht mit einem AnalogRead ausliest. Außerdem ist es ein Onewire Sensor, d.h. du kannst mehrere DS18B20 an eine Leitung hängen und du Brauchst die Onewire Library in deinem Library Ordner. Wenn du den installiert hast, findes du unter Beispiele Programme zum auslesen des DS18B20. Außerdem solltest du noch eine 4,7k zwischen Vcc und Datenleitung schalten.