Display four graphs of each value (NTC, variable resistor, DHT11-Temperature, DHT11-Humidity).

Dependencies:   SSD1308_128x64_I2C Grove_temperature DHT

Committer:
dcj001
Date:
Wed Dec 11 17:11:00 2019 +0000
Revision:
1:3c0e89bb197c
Parent:
0:e729b270d1d4
Display four graphs of each value (NTC, variable resistor, DHT11-Temperature, DHT11-Humidity).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dcj001 0:e729b270d1d4 1 #include "mbed.h"
dcj001 0:e729b270d1d4 2 #include "SSD1308.h"
dcj001 0:e729b270d1d4 3 #include "logo.h"
dcj001 0:e729b270d1d4 4 #include "Grove_temperature.h"
dcj001 0:e729b270d1d4 5 #include "DHT.h"
dcj001 0:e729b270d1d4 6 #include<stdio.h>
dcj001 0:e729b270d1d4 7
dcj001 0:e729b270d1d4 8 ////OLED
dcj001 0:e729b270d1d4 9 I2C i2c(PB_9,PB_8);
dcj001 0:e729b270d1d4 10 SSD1308 oled = SSD1308(&i2c, SSD1308_SA0);
dcj001 0:e729b270d1d4 11 /////////////
dcj001 0:e729b270d1d4 12 Grove_temperature temp(PA_1); //thermistance
dcj001 0:e729b270d1d4 13
dcj001 0:e729b270d1d4 14 DigitalOut myled(LED1); //DHT11 // we will use the led embedded on the map
dcj001 0:e729b270d1d4 15 DHT dht11(PB_10,DHT11);
dcj001 0:e729b270d1d4 16
dcj001 0:e729b270d1d4 17 AnalogIn potar(A3); //potaranalogic
dcj001 0:e729b270d1d4 18
dcj001 0:e729b270d1d4 19 /////////////
dcj001 0:e729b270d1d4 20 InterruptIn mybutton(USER_BUTTON);
dcj001 0:e729b270d1d4 21 int j=1;
dcj001 0:e729b270d1d4 22 int count=1;
dcj001 0:e729b270d1d4 23 int tem1[30];
dcj001 0:e729b270d1d4 24
dcj001 0:e729b270d1d4 25 void pressed()
dcj001 0:e729b270d1d4 26 {
dcj001 0:e729b270d1d4 27 oled.clearDisplay_zone(); //clear the zone of displaying graph
dcj001 0:e729b270d1d4 28 j++;
dcj001 0:e729b270d1d4 29 if(j>4)j=1;
dcj001 0:e729b270d1d4 30 count=1;
dcj001 0:e729b270d1d4 31 for(int t=0;t<30;t++)
dcj001 0:e729b270d1d4 32 tem1[t]=32; ///The data is line 32 of the grah2_point[][4] array, which is {0x00,0x00,0x00,0x00}
dcj001 0:e729b270d1d4 33
dcj001 0:e729b270d1d4 34 }
dcj001 0:e729b270d1d4 35
dcj001 0:e729b270d1d4 36
dcj001 0:e729b270d1d4 37 //////main
dcj001 0:e729b270d1d4 38 int main() {
dcj001 0:e729b270d1d4 39 int i;
dcj001 0:e729b270d1d4 40 float x;
dcj001 0:e729b270d1d4 41
dcj001 0:e729b270d1d4 42
dcj001 0:e729b270d1d4 43
dcj001 0:e729b270d1d4 44 int err;
dcj001 0:e729b270d1d4 45 float temperature;
dcj001 0:e729b270d1d4 46 float humidite;
dcj001 0:e729b270d1d4 47
dcj001 0:e729b270d1d4 48 char buffer_1[10];
dcj001 0:e729b270d1d4 49 char buffer_2[10];
dcj001 0:e729b270d1d4 50 char buffer_3[10];
dcj001 0:e729b270d1d4 51 char buffer_4[10];
dcj001 0:e729b270d1d4 52
dcj001 0:e729b270d1d4 53 oled.display_Axis_y();
dcj001 0:e729b270d1d4 54 oled.display_Axis_x();
dcj001 0:e729b270d1d4 55
dcj001 0:e729b270d1d4 56 while (true)
dcj001 0:e729b270d1d4 57 {
dcj001 0:e729b270d1d4 58 mybutton.fall(&pressed);
dcj001 0:e729b270d1d4 59 switch(j)
dcj001 0:e729b270d1d4 60 {case 1:
dcj001 0:e729b270d1d4 61 for(i=0;i<30;i++)
dcj001 0:e729b270d1d4 62 {
dcj001 0:e729b270d1d4 63 x=temp.getTemperature();
dcj001 0:e729b270d1d4 64 if(count==1)tem1[i]=(int)(x-15);//offset
dcj001 0:e729b270d1d4 65 else
dcj001 0:e729b270d1d4 66 {
dcj001 0:e729b270d1d4 67 for(int m=0;m<29;m++)
dcj001 0:e729b270d1d4 68 { tem1[m]=tem1[m+1]; }
dcj001 0:e729b270d1d4 69 tem1[29]=(int)(x-15);
dcj001 0:e729b270d1d4 70 }
dcj001 0:e729b270d1d4 71
dcj001 0:e729b270d1d4 72 printf("temperature = %2d\n", tem1[i]);
dcj001 0:e729b270d1d4 73 sprintf(buffer_1, "tem_NTC: %5.2f C",x);
dcj001 0:e729b270d1d4 74 oled.setHorizontalAddressingMode();
dcj001 0:e729b270d1d4 75 oled.writeString(0,0,buffer_1);
dcj001 0:e729b270d1d4 76
dcj001 0:e729b270d1d4 77 if(j!=1)
dcj001 0:e729b270d1d4 78 {
dcj001 0:e729b270d1d4 79 oled.clearDisplay_zone(); //clear the zone of displaying graph
dcj001 0:e729b270d1d4 80 i=30; //End the loop
dcj001 0:e729b270d1d4 81 count=1;
dcj001 0:e729b270d1d4 82 for(int t=0;t<30;t++) //Empty array
dcj001 0:e729b270d1d4 83 tem1[t]=32; ///The data is line 32 of the grah2_point[][4] array, which is {0x00,0x00,0x00,0x00}
dcj001 0:e729b270d1d4 84 }
dcj001 0:e729b270d1d4 85 else if(count==1) oled.graph(tem1,i,count);
dcj001 0:e729b270d1d4 86 else if(count!=1) oled.graph(tem1,30,count);
dcj001 0:e729b270d1d4 87 }
dcj001 0:e729b270d1d4 88 count++;
dcj001 0:e729b270d1d4 89 break;
dcj001 0:e729b270d1d4 90
dcj001 0:e729b270d1d4 91 case 2: //////display temperature of DHT11
dcj001 0:e729b270d1d4 92 for(i=0;i<30;i++)
dcj001 0:e729b270d1d4 93 {
dcj001 0:e729b270d1d4 94 err = dht11.readData(); // data recovery
dcj001 0:e729b270d1d4 95 if (err == 0) {
dcj001 0:e729b270d1d4 96 temperature = dht11.ReadTemperature(CELCIUS);
dcj001 0:e729b270d1d4 97 if(count==1) tem1[i]=(int)(temperature-15);
dcj001 0:e729b270d1d4 98 else
dcj001 0:e729b270d1d4 99 {
dcj001 0:e729b270d1d4 100 for(int m=0;m<29;m++)
dcj001 0:e729b270d1d4 101 { tem1[m]=tem1[m+1]; }
dcj001 0:e729b270d1d4 102 tem1[29]=(int)(temperature-15);
dcj001 0:e729b270d1d4 103 }
dcj001 0:e729b270d1d4 104 printf("Temperature : %4.2f C \n",temperature); // sends data serial port (default 9600bauds)
dcj001 0:e729b270d1d4 105
dcj001 0:e729b270d1d4 106
dcj001 0:e729b270d1d4 107 }
dcj001 0:e729b270d1d4 108 else {
dcj001 0:e729b270d1d4 109 printf("\r\nErreur %i \n",err);
dcj001 0:e729b270d1d4 110 tem1[i]=32;
dcj001 0:e729b270d1d4 111 }
dcj001 0:e729b270d1d4 112
dcj001 0:e729b270d1d4 113 sprintf(buffer_2, "Tem_DHT: %5.2f C", temperature);
dcj001 0:e729b270d1d4 114 oled.setHorizontalAddressingMode();
dcj001 0:e729b270d1d4 115 oled.writeString(0,0,buffer_2);
dcj001 0:e729b270d1d4 116
dcj001 0:e729b270d1d4 117 if(j!=2)
dcj001 0:e729b270d1d4 118 {
dcj001 0:e729b270d1d4 119 oled.clearDisplay_zone();
dcj001 0:e729b270d1d4 120 i=30;
dcj001 0:e729b270d1d4 121 count=1;
dcj001 0:e729b270d1d4 122 for(int t=0;t<30;t++)
dcj001 0:e729b270d1d4 123 tem1[t]=32;
dcj001 0:e729b270d1d4 124 }
dcj001 0:e729b270d1d4 125 else if(count==1) {oled.graph(tem1,i,count); wait(2.1);}
dcj001 0:e729b270d1d4 126 else if(count!=1) {oled.graph(tem1,30,count); wait(2.1);}
dcj001 0:e729b270d1d4 127 }
dcj001 0:e729b270d1d4 128 count++;
dcj001 0:e729b270d1d4 129 break;
dcj001 0:e729b270d1d4 130
dcj001 0:e729b270d1d4 131 case 3: //////////display humidite of DHT11
dcj001 0:e729b270d1d4 132 for(i=0;i<30;i++)
dcj001 0:e729b270d1d4 133 {
dcj001 0:e729b270d1d4 134 err = dht11.readData(); // data recovery
dcj001 0:e729b270d1d4 135 if (err == 0) {
dcj001 0:e729b270d1d4 136 humidite = dht11.ReadHumidity();
dcj001 0:e729b270d1d4 137 if(count==1) tem1[i]=(int)(humidite/5);
dcj001 0:e729b270d1d4 138 else
dcj001 0:e729b270d1d4 139 {
dcj001 0:e729b270d1d4 140 for(int m=0;m<29;m++)
dcj001 0:e729b270d1d4 141 { tem1[m]=tem1[m+1]; }
dcj001 0:e729b270d1d4 142 tem1[29]=(int)(humidite/5);
dcj001 0:e729b270d1d4 143 }
dcj001 0:e729b270d1d4 144 printf("Humidite : %4.2f %% \n",humidite);
dcj001 0:e729b270d1d4 145
dcj001 0:e729b270d1d4 146 }
dcj001 0:e729b270d1d4 147 else
dcj001 0:e729b270d1d4 148 printf("\r\nErreur %i \n",err);
dcj001 0:e729b270d1d4 149
dcj001 0:e729b270d1d4 150
dcj001 0:e729b270d1d4 151 sprintf(buffer_3, "Hum_DHT: %5.2f%% ", humidite);
dcj001 0:e729b270d1d4 152 oled.setHorizontalAddressingMode();
dcj001 0:e729b270d1d4 153 oled.writeString(0,0,buffer_3);
dcj001 0:e729b270d1d4 154
dcj001 0:e729b270d1d4 155 if(j!=3)
dcj001 0:e729b270d1d4 156 {
dcj001 0:e729b270d1d4 157 oled.clearDisplay_zone();
dcj001 0:e729b270d1d4 158 i=30;
dcj001 0:e729b270d1d4 159 count=1;
dcj001 0:e729b270d1d4 160 for(int t=0;t<30;t++)
dcj001 0:e729b270d1d4 161 tem1[t]=32;
dcj001 0:e729b270d1d4 162 }
dcj001 0:e729b270d1d4 163 else if(count==1) {oled.graph(tem1,i,count); wait(2.1);}
dcj001 0:e729b270d1d4 164 else if(count!=1) {oled.graph(tem1,30,count); wait(2.1);}
dcj001 0:e729b270d1d4 165 }
dcj001 0:e729b270d1d4 166 count++;
dcj001 0:e729b270d1d4 167 break;
dcj001 0:e729b270d1d4 168
dcj001 0:e729b270d1d4 169 case 4: ////////////////////potaranalogic
dcj001 0:e729b270d1d4 170 for(i=0;i<30;i++)
dcj001 0:e729b270d1d4 171 {
dcj001 0:e729b270d1d4 172 x=potar.read_u16()/65535.0;
dcj001 0:e729b270d1d4 173 if(count==1) tem1[i]=(int)(x*25);
dcj001 0:e729b270d1d4 174 else
dcj001 0:e729b270d1d4 175 {
dcj001 0:e729b270d1d4 176 for(int m=0;m<29;m++)
dcj001 0:e729b270d1d4 177 { tem1[m]=tem1[m+1]; }
dcj001 0:e729b270d1d4 178 tem1[29]=(int)(x*25);
dcj001 0:e729b270d1d4 179 }
dcj001 0:e729b270d1d4 180 printf("normalized value(0-1):%3.3f\n",x);
dcj001 0:e729b270d1d4 181
dcj001 0:e729b270d1d4 182 sprintf(buffer_4, "potarlogic:%5.2f", potar.read_u16()/65535.0);
dcj001 0:e729b270d1d4 183 oled.setHorizontalAddressingMode();
dcj001 0:e729b270d1d4 184 oled.writeString(0,0,buffer_4);
dcj001 0:e729b270d1d4 185
dcj001 0:e729b270d1d4 186 if(j!=4)
dcj001 0:e729b270d1d4 187 {
dcj001 0:e729b270d1d4 188 oled.clearDisplay_zone();
dcj001 0:e729b270d1d4 189 i=30;
dcj001 0:e729b270d1d4 190 count=1;
dcj001 0:e729b270d1d4 191 for(int t=0;t<30;t++)
dcj001 0:e729b270d1d4 192 tem1[t]=32;
dcj001 0:e729b270d1d4 193 }
dcj001 0:e729b270d1d4 194 else if(count==1) {oled.graph(tem1,i,count); wait(1);}
dcj001 0:e729b270d1d4 195 else if(count!=1) {oled.graph(tem1,30,count); wait(1);}
dcj001 0:e729b270d1d4 196 }
dcj001 0:e729b270d1d4 197 count++;
dcj001 0:e729b270d1d4 198 break;
dcj001 0:e729b270d1d4 199
dcj001 0:e729b270d1d4 200 }
dcj001 0:e729b270d1d4 201
dcj001 0:e729b270d1d4 202 }
dcj001 0:e729b270d1d4 203
dcj001 0:e729b270d1d4 204 }
dcj001 0:e729b270d1d4 205