45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
|
|
#include <stdio.h>
|
|
#include <time.h>
|
|
#include <onewire.h>
|
|
#include <ds18b20.h> // Die Header-Datei mit DS18B20-Funktionen
|
|
|
|
#define GPIO_PIN 4 // GPIO Pin, an den der DS18B20 angeschlossen ist
|
|
#define INTERVAL 100 // Intervall in Sekunden
|
|
|
|
void delay(int seconds) {
|
|
time_t start_time = time(NULL);
|
|
while (time(NULL) - start_time < seconds);
|
|
}
|
|
|
|
int main() {
|
|
ds18b20_addr_t sensor_address;
|
|
|
|
// Sensoren auf dem Bus scannen (angenommen, dass nur ein Sensor angeschlossen ist)
|
|
int sensor_count = ds18b20_scan_devices(GPIO_PIN, &sensor_address, 1);
|
|
if (sensor_count <= 0) {
|
|
printf("Kein DS18B20-Sensor gefunden!\n");
|
|
return -1;
|
|
}
|
|
|
|
while (1) {
|
|
// Temperaturmessung starten
|
|
bool success = ds18b20_measure(GPIO_PIN, sensor_address, true);
|
|
if (!success) {
|
|
printf("Fehler bei der Temperaturmessung\n");
|
|
} else {
|
|
// Temperaturwert lesen
|
|
float temperature = ds18b20_read_temperature(GPIO_PIN, sensor_address);
|
|
if (temperature != temperature) { // NaN-Check
|
|
printf("Fehler beim Lesen der Temperatur\n");
|
|
} else {
|
|
printf("Aktuelle Temperatur: %.2f°C\n", temperature);
|
|
}
|
|
}
|
|
|
|
// Wartezeit von 100 Sekunden
|
|
delay(INTERVAL);
|
|
}
|
|
|
|
return 0;
|
|
}
|