DHT11 example f

Dependencies:   mbed C12832 I2CLCD TextLCD

Committer:
LaurenceW
Date:
Wed Dec 11 11:48:52 2019 +0000
Revision:
4:67b457cac0ec
Parent:
3:93078a6f3bad
Child:
5:973401999337
SGP30

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LaurenceW 3:93078a6f3bad 1 //SGP30 Air Quality sensor
LaurenceW 3:93078a6f3bad 2 //Laurence Wilkins CU Coventry University
LaurenceW 3:93078a6f3bad 3
LaurenceW 3:93078a6f3bad 4 #include "mbed.h"
LaurenceW 3:93078a6f3bad 5 #include "C12832.h"
LaurenceW 3:93078a6f3bad 6
LaurenceW 3:93078a6f3bad 7 C12832 lcd(p5, p7, p6, p8, p11); // set up instance of LCd screen
LaurenceW 3:93078a6f3bad 8 I2C i2c(p28, p27); //I2c build into mbed.h, define pincs
LaurenceW 3:93078a6f3bad 9
LaurenceW 3:93078a6f3bad 10 const int SGP30I2CAddress7 = 0x58; // 7-bit I2C address
LaurenceW 3:93078a6f3bad 11 const int SGP30I2CAddress8 = 0x58 << 1; // 8-bit I2C address, shifted (0xA2)
LaurenceW 3:93078a6f3bad 12
LaurenceW 3:93078a6f3bad 13 int main()
LaurenceW 3:93078a6f3bad 14 {
LaurenceW 3:93078a6f3bad 15 char cmd[2]; //two byte array for 16 bit address/command
LaurenceW 3:93078a6f3bad 16 char data[6]; // six byte array for data
LaurenceW 3:93078a6f3bad 17 lcd.cls(); //clear LCD screen
LaurenceW 3:93078a6f3bad 18
LaurenceW 3:93078a6f3bad 19 cmd[0] = 0x20; //address 0X0203 initialises sensor
LaurenceW 3:93078a6f3bad 20 cmd[1] = 0x03;
LaurenceW 3:93078a6f3bad 21 i2c.write(SGP30I2CAddress8, cmd, 2); //2=two bytes of data
LaurenceW 3:93078a6f3bad 22
LaurenceW 3:93078a6f3bad 23 while(1) {
LaurenceW 4:67b457cac0ec 24 wait(1.0f); //wait 1 second between reads
LaurenceW 3:93078a6f3bad 25 lcd.locate(0,0); //LCD cursor to top left
LaurenceW 3:93078a6f3bad 26 cmd[0] = 0x20;
LaurenceW 3:93078a6f3bad 27 cmd[1] = 0x08; //command 0X0208 reads six bits of air quality
LaurenceW 3:93078a6f3bad 28 i2c.write(SGP30I2CAddress8, cmd, 2);
LaurenceW 3:93078a6f3bad 29 wait(0.015); // MUST awiat 15mS after read request before read
LaurenceW 3:93078a6f3bad 30 i2c.read(SGP30I2CAddress8, data, 6); //read six bytes from sensor into data array
LaurenceW 3:93078a6f3bad 31 int CO2 = ((data[0]*256) + data[1]); //first two bits are CO2. Ignore checksums
LaurenceW 3:93078a6f3bad 32 int VOC = ((data[3]*256) + data[4]); //bits 3 & 4 are VOC. Ignore checksums
LaurenceW 3:93078a6f3bad 33 lcd.printf("SGP30 Gas Sensor \n\r"); //pretty heading
LaurenceW 3:93078a6f3bad 34 lcd.printf("CO2:%d ppm VOC:%d ppb \n\r",CO2,VOC);
LaurenceW 3:93078a6f3bad 35 lcd.printf("Raw: %02hhX %02hhX %02hhX %02hhX %02hhX %02hhX", data[0], data[1], data[2], data[3], data[4], data[5]);
LaurenceW 3:93078a6f3bad 36 //line above is for debugging only; it displays the six bytes read from sensor
LaurenceW 3:93078a6f3bad 37 }
LaurenceW 3:93078a6f3bad 38 }