<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.tinkernet.ca/index.php?action=history&amp;feed=atom&amp;title=IoT_-_Modular_-_BME280.cpp</id>
	<title>IoT - Modular - BME280.cpp - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tinkernet.ca/index.php?action=history&amp;feed=atom&amp;title=IoT_-_Modular_-_BME280.cpp"/>
	<link rel="alternate" type="text/html" href="https://wiki.tinkernet.ca/index.php?title=IoT_-_Modular_-_BME280.cpp&amp;action=history"/>
	<updated>2026-04-18T15:40:22Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>https://wiki.tinkernet.ca/index.php?title=IoT_-_Modular_-_BME280.cpp&amp;diff=1559&amp;oldid=prev</id>
		<title>Tinker: Created page with &quot;==#includes, Defines, etc...==  &lt;syntaxhighlight lang=&quot;cpp&quot; line=&quot;1&quot;&gt; #include &quot;libraries.h&quot; #include &quot;functions.h&quot; #include &quot;externs.h&quot; #include &quot;s-BME280.h&quot;  extern int Alti...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.tinkernet.ca/index.php?title=IoT_-_Modular_-_BME280.cpp&amp;diff=1559&amp;oldid=prev"/>
		<updated>2021-04-30T17:30:55Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;==#includes, Defines, etc...==  &amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt; #include &amp;quot;libraries.h&amp;quot; #include &amp;quot;functions.h&amp;quot; #include &amp;quot;externs.h&amp;quot; #include &amp;quot;s-BME280.h&amp;quot;  extern int Alti...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==#includes, Defines, etc...==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;libraries.h&amp;quot;&lt;br /&gt;
#include &amp;quot;functions.h&amp;quot;&lt;br /&gt;
#include &amp;quot;externs.h&amp;quot;&lt;br /&gt;
#include &amp;quot;s-BME280.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
extern int Altitude;&lt;br /&gt;
struct BME280_Readings BME280_Datum;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BME280_main()==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
void BME280_main()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    for (int Count = 0; Count &amp;lt; BME280_Count; Count++)&lt;br /&gt;
    {&lt;br /&gt;
        // BME280_Datum = BME280_getReadings(0);&lt;br /&gt;
        BME280_getReadings(0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (BME280_Datum.Status == 0)&lt;br /&gt;
    {&lt;br /&gt;
        // SSD1306_Display_BME280_Temps(BBB);&lt;br /&gt;
        // SSD1306_Display_BME280_Temps();&lt;br /&gt;
        BME280_Display();&lt;br /&gt;
&lt;br /&gt;
        SSD1306_Indicate_Action();&lt;br /&gt;
&lt;br /&gt;
        BME280_SendData();&lt;br /&gt;
&lt;br /&gt;
        BME280_debug();&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        debug_Trouble(&amp;quot;BME280 Status Bad&amp;quot;);&lt;br /&gt;
        BME280_init();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BME280_init()==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
int BME280_init()&lt;br /&gt;
{&lt;br /&gt;
    bool status;&lt;br /&gt;
    char debugTEXT[46];&lt;br /&gt;
&lt;br /&gt;
    status = bme.begin(0x76);&lt;br /&gt;
    if (!status)&lt;br /&gt;
    {&lt;br /&gt;
        debug_LineOut(&amp;quot;No BME280(s)&amp;quot;);&lt;br /&gt;
        return (0);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        sprintf(debugTEXT, &amp;quot;%2d BME280(s) initialised&amp;quot;, 1);&lt;br /&gt;
        debug_LineOut(debugTEXT);&lt;br /&gt;
        return (1); // This needs to change&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Currently only capable of using one...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BME280_getReadings()==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
void BME280_getReadings(int deviceNumber)&lt;br /&gt;
{&lt;br /&gt;
    BME280_Datum.Temperature = bme.readTemperature();&lt;br /&gt;
    BME280_Datum.Humidity = bme.readHumidity();&lt;br /&gt;
    BME280_Datum.AbsPressure = bme.readPressure() / 100.0F;&lt;br /&gt;
&lt;br /&gt;
    if (&lt;br /&gt;
        (BME280_Datum.Temperature != BME280_Datum.Temperature) ||&lt;br /&gt;
        (BME280_Datum.Humidity != BME280_Datum.Humidity) ||&lt;br /&gt;
        (BME280_Datum.AbsPressure != BME280_Datum.AbsPressure))&lt;br /&gt;
    {&lt;br /&gt;
        BME280_Datum.Status = -1;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
        BME280_Datum.Status = 0;&lt;br /&gt;
&lt;br /&gt;
    // Attempting to derive SeaPressure based on formula found at:&lt;br /&gt;
    // https://keisan.casio.com/exec/system/1224575267&lt;br /&gt;
    BME280_Datum.SeaPressure = BME280_Datum.AbsPressure * pow((1 - ((0.0065 * Altitude) / (BME280_Datum.Temperature + (0.0065 * Altitude) + 273.15))), -5.257);&lt;br /&gt;
&lt;br /&gt;
    // return (AAA);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BME280_SendData()==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
void BME280_SendData()&lt;br /&gt;
{&lt;br /&gt;
    char BME280_JSON[100];&lt;br /&gt;
&lt;br /&gt;
    sprintf(BME280_JSON,&lt;br /&gt;
            &amp;quot;{\&amp;quot;Type\&amp;quot;:\&amp;quot;BME280\&amp;quot;, \&amp;quot;Temperature\&amp;quot;:%5.1f, \&amp;quot;Humidity\&amp;quot;:%5.1f, \&amp;quot;AbsPressure\&amp;quot;:%5.2f, \&amp;quot;SeaPressure\&amp;quot;:%5.2f}&amp;quot;,&lt;br /&gt;
            BME280_Datum.Temperature,&lt;br /&gt;
            BME280_Datum.Humidity,&lt;br /&gt;
            BME280_Datum.AbsPressure,&lt;br /&gt;
            BME280_Datum.SeaPressure);&lt;br /&gt;
&lt;br /&gt;
    MQTT_SendTELE(&amp;quot;SENSOR&amp;quot;, BME280_JSON);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BME280_Display()==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
void BME280_Display()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    // SSD1306_Display_Sensor_Data(&lt;br /&gt;
    //     &amp;quot;BME280!&amp;quot;,&lt;br /&gt;
    //     &amp;quot;Temp:&amp;quot;,&lt;br /&gt;
    //     BME280_Datum.Temperature,&lt;br /&gt;
    //     &amp;quot;Humi:&amp;quot;,&lt;br /&gt;
    //     BME280_Datum.Humidity,&lt;br /&gt;
    //     &amp;quot;Baro&amp;quot;,&lt;br /&gt;
    //     BME280_Datum.AbsPressure);&lt;br /&gt;
&lt;br /&gt;
    float inHg = (BME280_Datum.AbsPressure / 33.863886666667) + Pressure_Correction;&lt;br /&gt;
    float Water = (49.161 * log(inHg) + 44.932);&lt;br /&gt;
    SSD1306_Display_Sensor_Data2(&lt;br /&gt;
        &amp;quot;BME280&amp;quot;,&lt;br /&gt;
        &amp;quot;Temp:&amp;quot;,&lt;br /&gt;
        BME280_Datum.Temperature,&lt;br /&gt;
        &amp;quot;inHg&amp;quot;,&lt;br /&gt;
        inHg,&lt;br /&gt;
        &amp;quot; H2O&amp;quot;,&lt;br /&gt;
        Water);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BME280_debug()==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
void BME280_debug()&lt;br /&gt;
{&lt;br /&gt;
#ifdef DEBUG2&lt;br /&gt;
    char debugTEXT[46];&lt;br /&gt;
&lt;br /&gt;
    debug_SectionTitle(&amp;quot;BME280:&amp;quot;);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;Temperature:    %5.1f C&amp;quot;, BME280_Datum.Temperature);&lt;br /&gt;
    debug_LineOut(debugTEXT);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;Temperature:    %5.1f F&amp;quot;, 1.8 * BME280_Datum.Temperature + 32);&lt;br /&gt;
    debug_LineOut(debugTEXT);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;Humidity:       %5.1f %%&amp;quot;, BME280_Datum.Humidity);&lt;br /&gt;
    debug_LineOut(debugTEXT);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;AbsPressure:   %5.2f hPa&amp;quot;, BME280_Datum.AbsPressure);&lt;br /&gt;
    debug_LineOut(debugTEXT);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;SeaPressure:  %5.2f hPa&amp;quot;, BME280_Datum.SeaPressure);&lt;br /&gt;
    debug_LineOut(debugTEXT);&lt;br /&gt;
#endif&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tinker</name></author>
		
	</entry>
</feed>