Towhid 2 Posted December 14, 2015 Share Posted December 14, 2015 I have interfaced Bosch BME 280 with my launchpad which is msp432 via i2c ..I am using energia ...I can see the output which is pressure, humidity and temperature through the serial monitor...now I have to show the output through this sharp lcd boosterpack...can anyone help ?? Quote Link to post Share on other sites
bluehash 1,581 Posted December 14, 2015 Share Posted December 14, 2015 See here: http://forum.43oh.com/topic/8801-energia-support-for-msp432-with-cc3100-and-sharp96-boost/ @@Towhid Towhid 1 Quote Link to post Share on other sites
energia 485 Posted December 21, 2015 Share Posted December 21, 2015 @@Towhid, have you tried LCD_SharpBoosterPack library example that ships with Energia? Quote Link to post Share on other sites
Towhid 2 Posted January 3, 2016 Author Share Posted January 3, 2016 @@energia ,yes i have tried the example ..it works fine energia 1 Quote Link to post Share on other sites
Towhid 2 Posted January 11, 2016 Author Share Posted January 11, 2016 this is the code that i have tried ..but no output on the lcd ... #include <Wire.h>#include "cactus_io_BME280_I2C.h"#include "SPI.h"#include "OneMsTaskTimer.h"#include "LCD_SharpBoosterPack_SPI.h"// Create BME280 objectBME280_I2C bme; // I2C// VariablesLCD_SharpBoosterPack_SPI myScreen;uint8_t k = 0;uint16_t count = 0;void setup() {Serial.begin(9600);Serial.println("Bosch BME280 Pressure - Humidity - Temp Sensor | cactus.io");if (!bme.begin(0X76)) {Serial.println("Could not find a valid BME280 sensor, check wiring!");while (1);myScreen.begin(); myScreen.setFont(1); //myScreen.text(10, 10, "bme.getTemperature_C()); Serial.print(" *C\t"!"); myScreen.flush(); delay(1000); myScreen.clear();}Serial.println("Pressure\tHumdity\t\tTemp\ttTemp");}void loop() { double pressure_t = bme.getPressure() / 100.0F; //save the pressure value to a variable double humidity_t = bme.getHumidity(); double temp_t = bme.getTemperature_C(); Serial.print(pressure_t); Serial.print(" mb\t"); // Print the pressure in serial Serial.print(humidity_t); Serial.print(" %\t\t"); Serial.print(temp_t); Serial.print(" *C\t"); char buf[32]; dtostrf(pressure_t,3,2,buf); String pres = String(buf) ; myScreen.clearBuffer(); for(int i = 0 ; i < pres.length() ; i++) { myScreen.text(k, 10, pres); //this should print the pressure in screen. } k++; myScreen.flush(); delay(5000); //random delay myScreen.println(temp_t,DEC); //this should print the temp.. myScreen.flush(); delay(5000); //random delay myScreen.clear(); } can anyone help please? Quote Link to post Share on other sites
energia 485 Posted January 11, 2016 Share Posted January 11, 2016 I think you have a misplaced bracket for the if (!bme.begin(0X76)) I think what you want to do is to place the closing bracket } right after the while(1); if (!bme.begin(0X76)) { Serial.println("Could not find a valid BME280 sensor, check wiring!"); while (1); } myScreen.begin(); myScreen.setFont(1); //myScreen.text(10, 10, "bme.getTemperature_C()); Serial.print(" *C\t"!"); myScreen.flush(); delay(1000); myScreen.clear(); Quote Link to post Share on other sites
Towhid 2 Posted January 16, 2016 Author Share Posted January 16, 2016 I have been able to show my sensor output via the lcd and the code is given below : #include <Wire.h> #include "SPI.h" #include "OneMsTaskTimer.h" #include "LCD_SharpBoosterPack_SPI.h" #define BME280_ADDRESS 0x76 unsigned long int hum_raw,temp_raw,pres_raw; signed long int t_fine; uint16_t dig_T1; int16_t dig_T2; int16_t dig_T3; uint16_t dig_P1; int16_t dig_P2; int16_t dig_P3; int16_t dig_P4; int16_t dig_P5; int16_t dig_P6; int16_t dig_P7; int16_t dig_P8; int16_t dig_P9; int8_t dig_H1; int16_t dig_H2; int8_t dig_H3; int16_t dig_H4; int16_t dig_H5; int8_t dig_H6; // Variables LCD_SharpBoosterPack_SPI myScreen; uint8_t myOrientation = 3; uint16_t myCount = 0; void setup() { uint8_t osrs_t = 1; //Temperature oversampling x 1 uint8_t osrs_p = 1; //Pressure oversampling x 1 uint8_t osrs_h = 1; //Humidity oversampling x 1 uint8_t mode = 3; //Normal mode uint8_t t_sb = 5; //Tstandby 1000ms uint8_t filter = 0; //Filter off uint8_t spi3w_en = 0; //3-wire SPI Disable uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mode; uint8_t config_reg = (t_sb << 5) | (filter << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; Serial.begin(9600); Wire.begin(); writeReg(0xF2,ctrl_hum_reg); writeReg(0xF4,ctrl_meas_reg); writeReg(0xF5,config_reg); readTrim(); myScreen.flush(); //LCD myScreen.begin(); myScreen.clearBuffer(); myScreen.setFont(1); myScreen.setOrientation(myOrientation); myScreen.text(10, 10, "TEMP : "); // myScreen.text(10, 10, String(temp_act)); myScreen.flush(); // } void loop() { double temp_act = 0.0, press_act = 0.0,hum_act=0.0; signed long int temp_cal; unsigned long int press_cal,hum_cal; readData(); temp_cal = calibration_T(temp_raw); press_cal = calibration_P(pres_raw); hum_cal = calibration_H(hum_raw); temp_act = (double)temp_cal / 100.0; press_act = (double)press_cal / 100.0; hum_act = (double)hum_cal / 1024.0; Serial.print("TEMP : "); Serial.print(temp_act); Serial.print(" DegC PRESS : "); Serial.print(press_act); Serial.print(" hPa HUM : "); Serial.print(hum_act); Serial.println(" %"); myScreen.setFont(0); myScreen.setCharXY(10, 10); myScreen.println(" TEMP : "); myScreen.println(temp_act, DEC); myScreen.println(" DegC : "); myScreen.println(press_act, DEC); myScreen.println(" hPa HUM : "); myScreen.println(hum_act, DEC); myScreen.flush(); // myScreen.setOrientation(myOrientation); // myScreen.clearBuffer(); // myScreen.setFont(0); // myScreen.text(10, 10, " TEMP : "); // myScreen.text(10, 20, String(temp_act),); // myScreen.text(10, 30, " DegC PRESS : "); // myScreen.text(10, 40, String(press_act)); // myScreen.text(10, 50, " hPa HUM : "); // myScreen.text(10, 60, String(hum_act)); // myScreen.flush(); delay(1000); } void readTrim() { uint8_t data[32],i=0; Wire.beginTransmission(BME280_ADDRESS); Wire.write(0x88); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS,24); while(Wire.available()){ data = Wire.read(); i++; } Wire.beginTransmission(BME280_ADDRESS); Wire.write(0xA1); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS,1); data = Wire.read(); i++; Wire.beginTransmission(BME280_ADDRESS); Wire.write(0xE1); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS,7); while(Wire.available()){ data = Wire.read(); i++; } dig_T1 = (data[1] << 8) | data[0]; dig_T2 = (data[3] << 8) | data[2]; dig_T3 = (data[5] << 8) | data[4]; dig_P1 = (data[7] << 8) | data[6]; dig_P2 = (data[9] << 8) | data[8]; dig_P3 = (data[11]<< 8) | data[10]; dig_P4 = (data[13]<< 8) | data[12]; dig_P5 = (data[15]<< 8) | data[14]; dig_P6 = (data[17]<< 8) | data[16]; dig_P7 = (data[19]<< 8) | data[18]; dig_P8 = (data[21]<< 8) | data[20]; dig_P9 = (data[23]<< 8) | data[22]; dig_H1 = data[24]; dig_H2 = (data[26]<< 8) | data[25]; dig_H3 = data[27]; dig_H4 = (data[28]<< 4) | (0x0F & data[29]); dig_H5 = (data[30] << 4) | ((data[29] >> 4) & 0x0F); dig_H6 = data[31]; } void writeReg(uint8_t reg_address, uint8_t data) { Wire.beginTransmission(BME280_ADDRESS); Wire.write(reg_address); Wire.write(data); Wire.endTransmission(); } void readData() { int i = 0; uint32_t data[8]; Wire.beginTransmission(BME280_ADDRESS); Wire.write(0xF7); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS,8); while(Wire.available()){ data = Wire.read(); i++; } pres_raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4); temp_raw = (data[3] << 12) | (data[4] << 4) | (data[5] >> 4); hum_raw = (data[6] << 8) | data[7]; } signed long int calibration_T(signed long int adc_T) { signed long int var1, var2, T; var1 = ((((adc_T >> 3) - ((signed long int)dig_T1<<1))) * ((signed long int)dig_T2)) >> 11; var2 = (((((adc_T >> 4) - ((signed long int)dig_T1)) * ((adc_T>>4) - ((signed long int)dig_T1))) >> 12) * ((signed long int)dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; return T; } unsigned long int calibration_P(signed long int adc_P) { signed long int var1, var2; unsigned long int P; var1 = (((signed long int)t_fine)>>1) - (signed long int)64000; var2 = (((var1>>2) * (var1>>2)) >> 11) * ((signed long int)dig_P6); var2 = var2 + ((var1*((signed long int)dig_P5))<<1); var2 = (var2>>2)+(((signed long int)dig_P4)<<16); var1 = (((dig_P3 * (((var1>>2)*(var1>>2)) >> 13)) >>3) + ((((signed long int)dig_P2) * var1)>>1))>>18; var1 = ((((32768+var1))*((signed long int)dig_P1))>>15); if (var1 == 0) { return 0; } P = (((unsigned long int)(((signed long int)1048576)-adc_P)-(var2>>12)))*3125; if(P<0x80000000) { P = (P << 1) / ((unsigned long int) var1); } else { P = (P / (unsigned long int)var1) * 2; } var1 = (((signed long int)dig_P9) * ((signed long int)(((P>>3) * (P>>3))>>13)))>>12; var2 = (((signed long int)(P>>2)) * ((signed long int)dig_P8))>>13; P = (unsigned long int)((signed long int)P + ((var1 + var2 + dig_P7) >> 4)); return P; } unsigned long int calibration_H(signed long int adc_H) { signed long int v_x1; v_x1 = (t_fine - ((signed long int)76800)); v_x1 = (((((adc_H << 14) -(((signed long int)dig_H4) << 20) - (((signed long int)dig_H5) * v_x1)) + ((signed long int)16384)) >> 15) * (((((((v_x1 * ((signed long int)dig_H6)) >> 10) * (((v_x1 * ((signed long int)dig_H3)) >> 11) + ((signed long int) 32768))) >> 10) + (( signed long int)2097152)) * ((signed long int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((signed long int)dig_H1)) >> 4)); v_x1 = (v_x1 < 0 ? 0 : v_x1); v_x1 = (v_x1 > 419430400 ? 419430400 : v_x1); return (unsigned long int)(v_x1 >> 12); } energia 1 Quote Link to post Share on other sites
energia 485 Posted January 16, 2016 Share Posted January 16, 2016 Thanks for sharing @@Towhid! Towhid 1 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.