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: mbed LoRaWAN-lib SX1276Lib
app/main.cpp
- Committer:
- amir_chaudhary
- Date:
- 2021-12-10
- Revision:
- 11:7a7913d47ca6
- Parent:
- 10:f3b1186fc0b0
- Child:
- 12:85b3174c8b30
File content as of revision 11:7a7913d47ca6:
#include "mbed.h" #include "Si7021.h" // I2C Definition I2C spd800_i2c(PB_9, PB_8); //sda, scl DigitalOut si7021_power_pin(PB_2); Serial pc(SERIAL_TX, SERIAL_RX,115200); void print_array(char *array, int len) { for (int idx = 0; idx < len; idx++) { pc.printf("%x", array[idx]); } pc.printf("\r\n"); } float read_pressure_measurement() { char output[9]; // Read measurements if ( spd800_i2c.read((0x25 << 1), output, 9) != 0 ) { // read from register pc.printf("FAILED TO READ PRESSURE: %d\r\n", spd800_i2c.read((0x25 << 1), output, 9)); } //print_array(output, 9); // Interpret int16_t diffPressureTicks = (output[0] << 8) | output[1]; // int16_t temperatureTicks = (output[3] << 8) | output[4]; uint16_t scaleFactorDiffPressure = (output[6] << 8) | output[7]; float diffPressure = (float)diffPressureTicks / (float)scaleFactorDiffPressure; return diffPressure; } int main() { pc.printf("Starting Pressure/Temp/Humidity Sensor Test..\r\n"); wait(3); char cont_measure_command[2] = {0x36, 0x1E}; char single_measure_command[2] = {0x36, 0x2F}; char stop_command[2] = {0x3F, 0xF9}; char reset_command[1] = {0x06}; // Reset the pressure sensor pc.printf("Resetting Pressure Sensor...\r\n"); if ( spd800_i2c.write(0x00, reset_command, 1) != 0 ) { pc.printf("RESET FAILED!\r\n"); } // set up SHT31 si7021_power_pin = 1; Si7021 si7021 = Si7021(PB_9, PB_8); wait(1); // Take a few manual measurements while( true ) { pc.printf("\r\n\n"); pc.printf("Measuring Pressure...\r\n"); if ( spd800_i2c.write((0x25 << 1), single_measure_command, 2) != 0 ) { pc.printf("FAILED TO WRITE TO PRESSURE SENSOR\r\n"); } wait(1); pc.printf("Measuring Temp/Humidity...\r\n"); if ( !si7021.check() ) { pc.printf("TEMP/HUMIDITY SENSOR NOT WORKING\r\n"); } else { si7021.measure(); } pc.printf("Humidity: %d\r\n", si7021.get_humidity()); pc.printf("Temperature: %d\r\n", si7021.get_temperature()); pc.printf("Pressure: %f\r\n", read_pressure_measurement()); wait(1); } /*// Start Pressure Measurements pc.printf("Starting Measurements...\r\n"); if ( i2c.write((0x25 << 1), cont_measure_command, 2) != 0 ) { pc.printf("START COMMAND FAILED!\r\n"); } wait(1); while( true ) { pc.printf("%f\r\n", read_measurement()); wait(1); }*/ }