Display the value of the three sensors on the OLED.
Dependencies: SSD1308_128x64_I2C Grove_temperature
main.cpp@0:4dacc9be0df2, 2019-12-11 (annotated)
- 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?
User | Revision | Line number | New 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 | } |