DS1820 DS18B20 ESP01 Webserver STM32NucleoL152RE basiert auf dem DS1820-Example von Paul Staron

Dependencies:   LCD_i2c_GSOE ESP8266WebserverGSOE DS1820

Committer:
jack1930
Date:
Sat Aug 07 18:17:28 2021 +0000
Revision:
2:2c947079aae0
Parent:
0:a3c589406dc4
Child:
3:33bd03e2244f
ohne Webserver

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jack1930 2:2c947079aae0 1 //basiert auf dem DS1820-Example von Paul Staron
jack1930 2:2c947079aae0 2
star297 0:a3c589406dc4 3 #include "mbed.h"
star297 0:a3c589406dc4 4 #include "DS1820.h"
jack1930 2:2c947079aae0 5 #include "LCD.h"
star297 0:a3c589406dc4 6
star297 0:a3c589406dc4 7 DigitalOut led(LED1);
jack1930 2:2c947079aae0 8 lcd mylcd;
star297 0:a3c589406dc4 9
jack1930 2:2c947079aae0 10 #define DATA_PIN PB_0
star297 0:a3c589406dc4 11 #define MAX_PROBES 16
star297 0:a3c589406dc4 12 DS1820* probe[MAX_PROBES];
star297 0:a3c589406dc4 13
star297 0:a3c589406dc4 14 Timer t;
star297 0:a3c589406dc4 15
star297 0:a3c589406dc4 16 int DS;
star297 0:a3c589406dc4 17 float Temp[16];
star297 0:a3c589406dc4 18
star297 0:a3c589406dc4 19 int main(){
jack1930 2:2c947079aae0 20 mylcd.clear();
star297 0:a3c589406dc4 21 printf("\033[0m\033[2J\033[HInitialise...!\n\n");
star297 0:a3c589406dc4 22
star297 0:a3c589406dc4 23 while (DS1820::unassignedProbe(DATA_PIN)) {
star297 0:a3c589406dc4 24 probe[DS] = new DS1820(DATA_PIN);
star297 0:a3c589406dc4 25 DS++;
star297 0:a3c589406dc4 26 if (DS == MAX_PROBES) {
star297 0:a3c589406dc4 27 break;
star297 0:a3c589406dc4 28 }
star297 0:a3c589406dc4 29 }
star297 0:a3c589406dc4 30
star297 0:a3c589406dc4 31 if (!DS) {
star297 0:a3c589406dc4 32 printf("No Sensors found!\n\n");
star297 0:a3c589406dc4 33 ThisThread::sleep_for(chrono::milliseconds(1000));
star297 0:a3c589406dc4 34 NVIC_SystemReset();
star297 0:a3c589406dc4 35 }
star297 0:a3c589406dc4 36
star297 0:a3c589406dc4 37 // set each probe resolution, default is 12bit (750ms)
star297 0:a3c589406dc4 38 probe[0]->setResolution(9);
star297 0:a3c589406dc4 39 // probe[0]->setResolution(10);
star297 0:a3c589406dc4 40 // probe[0]->setResolution(11);
star297 0:a3c589406dc4 41 // probe[0]->setResolution(12);
star297 0:a3c589406dc4 42 // probe[1]->setResolution(9);
star297 0:a3c589406dc4 43 // probe[2]->setResolution(10);
star297 0:a3c589406dc4 44
star297 0:a3c589406dc4 45 t.start();
star297 0:a3c589406dc4 46
star297 0:a3c589406dc4 47 while(1) {
star297 0:a3c589406dc4 48
star297 0:a3c589406dc4 49 printf("\033[0m\033[2J\033[HDS Sensor data..\n\n");
star297 0:a3c589406dc4 50
star297 0:a3c589406dc4 51 int DS_error = 0;
star297 0:a3c589406dc4 52 for (int i = 0; i < DS; i++) {
star297 0:a3c589406dc4 53 Temp[i] = probe[i]->temperature();
star297 0:a3c589406dc4 54 if(Temp[i]==-1000) {
star297 0:a3c589406dc4 55 Temp[i] = probe[i]->temperature(); // get read temp again if error
star297 0:a3c589406dc4 56 DS_error++;
star297 0:a3c589406dc4 57 }
star297 0:a3c589406dc4 58 printf("Probe %d: %3.2f %cc\r\n",i,Temp[i],0xb0);
jack1930 2:2c947079aae0 59 mylcd.clear();
jack1930 2:2c947079aae0 60 mylcd.cursorpos(0);
jack1930 2:2c947079aae0 61 mylcd.printf("%3.1f",Temp[i]);
star297 0:a3c589406dc4 62 }
star297 0:a3c589406dc4 63 printf("\nDS errors: %d\n\n", DS_error);
star297 0:a3c589406dc4 64
star297 0:a3c589406dc4 65 printf("Start conversion\n");
star297 0:a3c589406dc4 66 t.reset();
star297 0:a3c589406dc4 67 // don't wait for conversion, but do something that takes at least 750ms before reading the sensors
star297 0:a3c589406dc4 68 //if(DS>0){probe[0]->convertTemperature(0, DS1820::all_devices);}
star297 0:a3c589406dc4 69
star297 0:a3c589406dc4 70 // wait for conversion, can take up to 750ms(12 bit mode)
star297 0:a3c589406dc4 71 if(DS>0){probe[0]->convertTemperature(1, DS1820::all_devices);}
star297 0:a3c589406dc4 72
star297 0:a3c589406dc4 73 printf("\nConvert process time: %0.6f Seconds\n", chrono::duration<float>(t.elapsed_time()).count());
star297 0:a3c589406dc4 74
star297 0:a3c589406dc4 75 ThisThread::sleep_for(chrono::milliseconds(1000));
star297 0:a3c589406dc4 76 }
star297 0:a3c589406dc4 77 }