Display the value of the three sensors on the OLED.

Dependencies:   SSD1308_128x64_I2C Grove_temperature

Committer:
dcj001
Date:
Wed Dec 11 16:50:10 2019 +0000
Revision:
0:4dacc9be0df2
Display the value from the three sensors on the OLED.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dcj001 0:4dacc9be0df2 1 #include "mbed.h"
dcj001 0:4dacc9be0df2 2 #include "Grove_temperature.h"
dcj001 0:4dacc9be0df2 3 #include "DHT.h"
dcj001 0:4dacc9be0df2 4 #include "SSD1308.h"
dcj001 0:4dacc9be0df2 5
dcj001 0:4dacc9be0df2 6 DigitalOut myled(LED2); //Create a DigitalOut object named "myled", it's connected to Pin LED2.
dcj001 0:4dacc9be0df2 7 Grove_temperature temp_obj(A1); //Create a Crove_temperature object named "temp_obj", it's connected to Pin A1.
dcj001 0:4dacc9be0df2 8 DHT dht11(D6,DHT11); //Create a DHT object named "dht11", it's connected to Port D6.
dcj001 0:4dacc9be0df2 9 AnalogIn potar(A3); //Create a varialbe resisitor object named "potar", it's connected to Pin A3.
dcj001 0:4dacc9be0df2 10 I2C i2c(PB_9,PB_8); //OLED is connected to the L073RZ's I2C port.
dcj001 0:4dacc9be0df2 11 SSD1308 oled(&i2c, SSD1308_SA0); //Create a SSD1308 object named "oled".
dcj001 0:4dacc9be0df2 12
dcj001 0:4dacc9be0df2 13 int main(void)
dcj001 0:4dacc9be0df2 14 {
dcj001 0:4dacc9be0df2 15
dcj001 0:4dacc9be0df2 16 while (true) {
dcj001 0:4dacc9be0df2 17 /****************************************** For Class 1 and Class 2 **************************************************/
dcj001 0:4dacc9be0df2 18
dcj001 0:4dacc9be0df2 19 // /* Part1: LED test */
dcj001 0:4dacc9be0df2 20 // printf("*** Part1: LED test ***\n");
dcj001 0:4dacc9be0df2 21 // myled = !myled;
dcj001 0:4dacc9be0df2 22 // if(myled == 1)
dcj001 0:4dacc9be0df2 23 // printf("Led2 is on!\n\n");
dcj001 0:4dacc9be0df2 24 // else
dcj001 0:4dacc9be0df2 25 // printf("Led2 is off!\n\n");
dcj001 0:4dacc9be0df2 26 // wait(1);
dcj001 0:4dacc9be0df2 27 //
dcj001 0:4dacc9be0df2 28 // /* Part2: NTC temperature sensor */
dcj001 0:4dacc9be0df2 29 // printf("*** Part2: NTC temperature sensor ***\n");
dcj001 0:4dacc9be0df2 30 // printf("temperature = %2.2f\n\n", temp_obj.getTemperature());
dcj001 0:4dacc9be0df2 31 // wait(1);
dcj001 0:4dacc9be0df2 32 //
dcj001 0:4dacc9be0df2 33 // /* Part3: Variable resistor */
dcj001 0:4dacc9be0df2 34 // printf("*** Part3: Variable resistor ***\n");
dcj001 0:4dacc9be0df2 35 // printf("Percentage value: %3.3f%%\n", potar.read()*100.0f);
dcj001 0:4dacc9be0df2 36 // printf("Normal value(0-1): %3.3f\n\n", potar.read_u16()/65535.0);
dcj001 0:4dacc9be0df2 37 // wait(1);
dcj001 0:4dacc9be0df2 38 //
dcj001 0:4dacc9be0df2 39 // /* Part4: DHT11 temperature and humidity sensor */
dcj001 0:4dacc9be0df2 40 // printf("*** Part4: DHT11 temperature and humidity sensor ***\n");
dcj001 0:4dacc9be0df2 41 // int err;
dcj001 0:4dacc9be0df2 42 // float temperature;
dcj001 0:4dacc9be0df2 43 // float humidite;
dcj001 0:4dacc9be0df2 44 // float point_rose;
dcj001 0:4dacc9be0df2 45 //
dcj001 0:4dacc9be0df2 46 // err = dht11.readData(); // Get the data from the sensor and the return value of the function is to judge if any error happened.
dcj001 0:4dacc9be0df2 47 // if (err == 0) { // No errors happened
dcj001 0:4dacc9be0df2 48 // temperature = dht11.ReadTemperature(CELCIUS);
dcj001 0:4dacc9be0df2 49 // humidite = dht11.ReadHumidity();
dcj001 0:4dacc9be0df2 50 // point_rose = dht11.CalcdewPoint(dht11.ReadTemperature(CELCIUS), dht11.ReadHumidity());
dcj001 0:4dacc9be0df2 51 // printf("Temperature : %4.2f C \n",temperature); // send the data to the serial port connected to PC(9600bauds).
dcj001 0:4dacc9be0df2 52 // printf("Humidite : %4.2f %% \n",humidite);
dcj001 0:4dacc9be0df2 53 // printf("Point rose : %4.2f C \n\n",point_rose);
dcj001 0:4dacc9be0df2 54 // } else
dcj001 0:4dacc9be0df2 55 // printf("\r\nErreur %i \n\n",err);
dcj001 0:4dacc9be0df2 56 //
dcj001 0:4dacc9be0df2 57 // wait(1);
dcj001 0:4dacc9be0df2 58 //
dcj001 0:4dacc9be0df2 59 // /* Part5: OLED SSD1308 */
dcj001 0:4dacc9be0df2 60 // printf("*** Part5: OLED SSD1308 ***\n\n");
dcj001 0:4dacc9be0df2 61 // oled.writeString(0, 0, "Hello mbed !");
dcj001 0:4dacc9be0df2 62 // wait(1);
dcj001 0:4dacc9be0df2 63 // oled.clearDisplay();
dcj001 0:4dacc9be0df2 64 //
dcj001 0:4dacc9be0df2 65 // wait(1);
dcj001 0:4dacc9be0df2 66
dcj001 0:4dacc9be0df2 67 /****************************************** For Class 3 ****************************************************************/
dcj001 0:4dacc9be0df2 68
dcj001 0:4dacc9be0df2 69
dcj001 0:4dacc9be0df2 70 /* Part6: The valus of the three sensors will be displayed on the OLED */
dcj001 0:4dacc9be0df2 71 printf("*** Part6: The valus of the three sensors will be displayed on the OLED ***\n");
dcj001 0:4dacc9be0df2 72
dcj001 0:4dacc9be0df2 73 //
dcj001 0:4dacc9be0df2 74 // title
dcj001 0:4dacc9be0df2 75 oled.writeString(0,2,"SmartCampus");
dcj001 0:4dacc9be0df2 76
dcj001 0:4dacc9be0df2 77 //
dcj001 0:4dacc9be0df2 78 // public variables
dcj001 0:4dacc9be0df2 79 char str[10]; //store the conversion( float-to-char ) result.
dcj001 0:4dacc9be0df2 80
dcj001 0:4dacc9be0df2 81 //
dcj001 0:4dacc9be0df2 82 // NTC value
dcj001 0:4dacc9be0df2 83 oled.writeString(2,0,"NTC:");
dcj001 0:4dacc9be0df2 84 oled.writeString(2,15,"C");
dcj001 0:4dacc9be0df2 85
dcj001 0:4dacc9be0df2 86 float ntc_temp = temp_obj.getTemperature();
dcj001 0:4dacc9be0df2 87 sprintf(str,"%4.3f",ntc_temp); //data type conversion.
dcj001 0:4dacc9be0df2 88 oled.writeString(2,4,str);
dcj001 0:4dacc9be0df2 89
dcj001 0:4dacc9be0df2 90 //
dcj001 0:4dacc9be0df2 91 // variable resister
dcj001 0:4dacc9be0df2 92 oled.writeString(3,0,"VarRes:");
dcj001 0:4dacc9be0df2 93
dcj001 0:4dacc9be0df2 94 float var_res = potar.read();
dcj001 0:4dacc9be0df2 95 sprintf(str,"%4.3f",var_res); //data type conversion.
dcj001 0:4dacc9be0df2 96 oled.writeString(3,7,str);
dcj001 0:4dacc9be0df2 97
dcj001 0:4dacc9be0df2 98 //
dcj001 0:4dacc9be0df2 99 // DHT11
dcj001 0:4dacc9be0df2 100 oled.writeString(4,0,"DHT11");
dcj001 0:4dacc9be0df2 101 oled.writeString(5,0,"Temp:");
dcj001 0:4dacc9be0df2 102 oled.writeString(5,15,"C");
dcj001 0:4dacc9be0df2 103 oled.writeString(6,0,"Humi:");
dcj001 0:4dacc9be0df2 104 oled.writeString(6,15,"%");
dcj001 0:4dacc9be0df2 105
dcj001 0:4dacc9be0df2 106 int err = 0;
dcj001 0:4dacc9be0df2 107 float temperature;
dcj001 0:4dacc9be0df2 108 float humidity;
dcj001 0:4dacc9be0df2 109
dcj001 0:4dacc9be0df2 110 err = dht11.readData(); // Get the data from the sensor and the return value of the function is to judge if any error happened.
dcj001 0:4dacc9be0df2 111 if (err == 0) // No errors happened
dcj001 0:4dacc9be0df2 112 {
dcj001 0:4dacc9be0df2 113 temperature = dht11.ReadTemperature(CELCIUS);
dcj001 0:4dacc9be0df2 114 humidity = dht11.ReadHumidity();
dcj001 0:4dacc9be0df2 115
dcj001 0:4dacc9be0df2 116 sprintf(str,"%4.3f",temperature); //data type conversion.
dcj001 0:4dacc9be0df2 117 oled.writeString(5,5,str);
dcj001 0:4dacc9be0df2 118 sprintf(str,"%4.3f",humidity); //data type conversion.
dcj001 0:4dacc9be0df2 119 oled.writeString(6,5,str);
dcj001 0:4dacc9be0df2 120
dcj001 0:4dacc9be0df2 121 oled.writeString(7,0," "); //If errors have been solved ,then clear the errors.
dcj001 0:4dacc9be0df2 122 } else
dcj001 0:4dacc9be0df2 123 {
dcj001 0:4dacc9be0df2 124 oled.writeString(7,0,"DHT11 Error");
dcj001 0:4dacc9be0df2 125 printf("%d\n",err);
dcj001 0:4dacc9be0df2 126 }
dcj001 0:4dacc9be0df2 127
dcj001 0:4dacc9be0df2 128 wait(1);
dcj001 0:4dacc9be0df2 129 }
dcj001 0:4dacc9be0df2 130
dcj001 0:4dacc9be0df2 131 }