Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LCD_i2c_GSOE ESP8266WebserverGSOE DS1820
main.cpp
00001 //basiert auf dem DS1820-Example von Paul Staron 00002 00003 #include "mbed.h" 00004 #include "DS1820.h" 00005 #include "LCD.h" 00006 #include "ESP8266Webserver.h" 00007 00008 00009 DigitalOut led(LED1); 00010 lcd myLCD; 00011 00012 #define DATA_PIN PB_0 00013 #define MAX_PROBES 16 00014 DS1820* probe[MAX_PROBES]; 00015 00016 ESP8266Webserver myWebserver; 00017 00018 Timer t; 00019 00020 int DS; 00021 float Temp[16]; 00022 00023 string getRootPage() 00024 { 00025 string webpage; 00026 webpage="<!DOCTYPE html>"; 00027 //HTML 00028 webpage+="<html>"; 00029 webpage+="<head>"; 00030 webpage+="<title>STM32 HTTP</title>"; 00031 webpage+="</head>"; 00032 webpage+="<body>"; 00033 webpage+="<h1>WIFI mit STM32 ESP01</h1>\n"; 00034 webpage+="<p>Temperatur= "+to_string(Temp[0])+"C</p>\n"; 00035 webpage+="</body>"; 00036 webpage+="</html>"; 00037 return webpage; 00038 } 00039 00040 void testfunc() 00041 { 00042 myWebserver.send(200,"text/html",getRootPage()); 00043 } 00044 00045 int main(){ 00046 myWebserver.on("/",&testfunc); 00047 myWebserver.begin(); 00048 myLCD.clear(); 00049 myLCD.cursorpos(0); 00050 myLCD.printf("%s",myWebserver.gibIP()); 00051 00052 printf("\033[0m\033[2J\033[HInitialise...!\n\n"); 00053 00054 while (DS1820::unassignedProbe(DATA_PIN)) { 00055 probe[DS] = new DS1820(DATA_PIN); 00056 DS++; 00057 if (DS == MAX_PROBES) { 00058 break; 00059 } 00060 } 00061 00062 if (!DS) { 00063 printf("No Sensors found!\n\n"); 00064 ThisThread::sleep_for(chrono::milliseconds(1000)); 00065 NVIC_SystemReset(); 00066 } 00067 00068 // set each probe resolution, default is 12bit (750ms) 00069 probe[0]->setResolution(9); 00070 // probe[0]->setResolution(10); 00071 // probe[0]->setResolution(11); 00072 // probe[0]->setResolution(12); 00073 // probe[1]->setResolution(9); 00074 // probe[2]->setResolution(10); 00075 00076 t.start(); 00077 00078 while(1) { 00079 myWebserver.handleClient(); 00080 printf("\033[0m\033[2J\033[HDS Sensor data..\n\n"); 00081 00082 int DS_error = 0; 00083 for (int i = 0; i < DS; i++) { 00084 Temp[i] = probe[i]->temperature(); 00085 if(Temp[i]==-1000) { 00086 Temp[i] = probe[i]->temperature(); // get read temp again if error 00087 DS_error++; 00088 } 00089 printf("Probe %d: %3.2f %cc\r\n",i,Temp[i],0xb0); 00090 00091 myLCD.cursorpos(0x40); 00092 myLCD.printf("%3.1f ",Temp[0]); 00093 } 00094 printf("\nDS errors: %d\n\n", DS_error); 00095 00096 printf("Start conversion\n"); 00097 t.reset(); 00098 // don't wait for conversion, but do something that takes at least 750ms before reading the sensors 00099 //if(DS>0){probe[0]->convertTemperature(0, DS1820::all_devices);} 00100 00101 // wait for conversion, can take up to 750ms(12 bit mode) 00102 if(DS>0){probe[0]->convertTemperature(1, DS1820::all_devices);} 00103 00104 printf("\nConvert process time: %0.6f Seconds\n", chrono::duration<float>(t.elapsed_time()).count()); 00105 00106 ThisThread::sleep_for(chrono::milliseconds(1000)); 00107 } 00108 }
Generated on Tue Aug 16 2022 02:08:01 by
1.7.2