Hallo Allerseits!
Bräuchte wiedermal euren Rat.
folgendes: ich möchte Temperatur aufzeichnen und auf SD-Karte (Datalogging Shield)
Ich habe ein Codeschnipsel für das Aufzeichen von 3 Analogwerten. Dazu wird ein String gemacht, und in jeder Zeile steht eine Messung. Das funktioniert gut.
{
// make a string for assembling the data to log:
String dataString = "";
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}
dataFile.print(dataString);
Ich erhalte meine Temeperatur allerdings über einen DS18S20 (I2C). Die Ausgabe über den Serialport funktioniert einwandfrei. Dazu verwende ich folgenden Code:
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 3 on the Arduino
#define ONE_WIRE_BUS 3
// 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);
// Address of DS18S20
DeviceAddress Tempsensor = { 0x10, 0x89, 0x14, 0x90, 0x02, 0x08, 0x00, 0x3C };
void setup(void)
{
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
// set the resolution to 10 bit
sensors.setResolution(Tempsensor, 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)
{
delay(2000);
sensors.requestTemperatures();
Serial.print("Temperatur betraegt: ");
printTemperature(Tempsensor);
Serial.print("\n\r\n\r");
}
Wie schaffe ich es nun, den Temperaturwert des DS18S20 anstatt der Analogwerte auf die SD-Card zu schreiben? Hat vlt. jmd. bereits einen fertigen code, den er mir zur Verfügung stellen würde?
In weiterer Folge möchte ich bei jeder Messung die Uhrzeit dazu schreiben und soll dann so aussehen:
z.B.:
20:50:31h, 23,67°C,
Bin für eure Hilfe sehr dankbar, wenn an codes, Bilder oder ähnliches gebraucht wird, einfach schreiben.
Glück auf!
Bernhard