Hallo zusammen,
Ich würde gerne den DS18B20 Temperatursensor auslesen und die werte vergleichen um eine Lüftung bez. Heizung anzuschliessen.
Nun wie ich den Mit "C" auslesen kann habe ich etwas gefunden.
C
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main (void) {
DIR *dir;
struct dirent *dirent;
char dev = "28215" // Dev ID
char devPath[128]; // Path to device
char buf[256]; // Data from device
char tmpData[6]; // Temp C * 1000 reported by device
char path[] = "/sys/bus/w1/devices";
ssize_t numRead;
sprintf(devPath, "%s/%s/w1_slave", path, dev);
while(1) {
int fd = open(devPath, O_RDONLY);
if(fd == -1)
{
perror ("Gerät wurde nicht gefunden");
return 1;
}
while((numRead = read(fd, buf, 256)) > 0)
{
strncpy(tmpData, strstr(buf, "t=") + 2, 5);
float tempC = strtof(tmpData, NULL);
printf("Device: %s - ", dev);
printf("Temp: %.3f C ", tempC / 1000);
printf("%.3f F\n\n", (tempC / 1000) * 9 / 5 + 32);
}
close(fd);
}
}
Display More
Nun dies habe ich als Test verwendet ob der Sensor auch funktioniert. Dies ist auch der Fall
Nun möchte ich nur den einen Bestimmten Sensor auslesen und nicht alle Sensoren die Angeschlossen sind. Dabei möchte ich den Wert ausgeben und als Integer weiter verwenden, kann mir dabei jemand helfen?
Vielen dank