<?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_-_BMP180.cpp</id>
	<title>IoT - Modular - BMP180.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_-_BMP180.cpp"/>
	<link rel="alternate" type="text/html" href="https://wiki.tinkernet.ca/index.php?title=IoT_-_Modular_-_BMP180.cpp&amp;action=history"/>
	<updated>2026-05-22T15:10:20Z</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_-_BMP180.cpp&amp;diff=1560&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-BMP180.h&quot;  extern int Alti...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.tinkernet.ca/index.php?title=IoT_-_Modular_-_BMP180.cpp&amp;diff=1560&amp;oldid=prev"/>
		<updated>2021-04-30T17:38:33Z</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-BMP180.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-BMP180.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
extern int Altitude;&lt;br /&gt;
struct BMP180_Readings BMP180_Datum;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BMP180_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 BMP180_main()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    for (int Count = 0; Count &amp;lt; BMP180_Count; Count++)&lt;br /&gt;
    {&lt;br /&gt;
        BMP180_getReadings(0);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (BMP180_Datum.Status == 0)&lt;br /&gt;
    {&lt;br /&gt;
        BMP180_Display();&lt;br /&gt;
&lt;br /&gt;
        SSD1306_Indicate_Action();&lt;br /&gt;
&lt;br /&gt;
        BMP180_SendData();&lt;br /&gt;
&lt;br /&gt;
        BMP180_debug();&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        debug_Trouble(&amp;quot;BMP180 Status Bad&amp;quot;);&lt;br /&gt;
        BMP180_init();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BMP180_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 BMP180_init()&lt;br /&gt;
{&lt;br /&gt;
    bool status;&lt;br /&gt;
    char debugTEXT[46];&lt;br /&gt;
&lt;br /&gt;
    status = bmp.begin(0x76);&lt;br /&gt;
    if (!status)&lt;br /&gt;
    {&lt;br /&gt;
        debug_LineOut(&amp;quot;No BMP180(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 BMP180(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;
==BMP180_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 BMP180_getReadings(int deviceNumber)&lt;br /&gt;
{&lt;br /&gt;
    BMP180_Datum.Temperature = bmp.readTemperature();&lt;br /&gt;
    BMP180_Datum.AbsPressure = bmp.readPressure() / 100.0F;&lt;br /&gt;
&lt;br /&gt;
    if (&lt;br /&gt;
        (BMP180_Datum.Temperature != BMP180_Datum.Temperature) ||&lt;br /&gt;
        (BMP180_Datum.AbsPressure != BMP180_Datum.AbsPressure))&lt;br /&gt;
    {&lt;br /&gt;
        BMP180_Datum.Status = -1;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
        BMP180_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;
    BMP180_Datum.SeaPressure = BMP180_Datum.AbsPressure * pow((1 - ((0.0065 * Altitude) / (BMP180_Datum.Temperature + (0.0065 * Altitude) + 273.15))), -5.257);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Climate_Pressure_Correction()==&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;
float Climate_Pressure_Correction(float Pressure_Actual)&lt;br /&gt;
{&lt;br /&gt;
    BMP180_getReadings(0);&lt;br /&gt;
float inHg = (BMP180_Datum.AbsPressure / 33.863886666667);&lt;br /&gt;
// // float inHg = 0;&lt;br /&gt;
Pressure_Correction = Pressure_Actual - inHg;&lt;br /&gt;
            char FooBar[42];&lt;br /&gt;
            sprintf(FooBar, &amp;quot;actual: %f, reading: %f&amp;quot;, Pressure_Actual, inHg);&lt;br /&gt;
            debug_Success(FooBar);&lt;br /&gt;
            sprintf(FooBar, &amp;quot;Correction: %f&amp;quot;, Pressure_Correction);&lt;br /&gt;
            debug_Success(FooBar);&lt;br /&gt;
return (Pressure_Correction);&lt;br /&gt;
// return(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BMP180_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 BMP180_SendData()&lt;br /&gt;
{&lt;br /&gt;
    char BMP180_JSON[100];&lt;br /&gt;
&lt;br /&gt;
    sprintf(BMP180_JSON,&lt;br /&gt;
            &amp;quot;{\&amp;quot;Type\&amp;quot;:\&amp;quot;BMP180\&amp;quot;, \&amp;quot;Temperature\&amp;quot;:%5.1f, \&amp;quot;AbsPressure\&amp;quot;:%5.2f, \&amp;quot;SeaPressure\&amp;quot;:%5.2f, \&amp;quot;inHg\&amp;quot;:%5.2f}&amp;quot;,&lt;br /&gt;
            BMP180_Datum.Temperature,&lt;br /&gt;
            BMP180_Datum.AbsPressure,&lt;br /&gt;
            BMP180_Datum.SeaPressure,&lt;br /&gt;
            (BMP180_Datum.AbsPressure / 33.863886666667) + Pressure_Correction);&lt;br /&gt;
&lt;br /&gt;
    MQTT_SendTELE(&amp;quot;SENSOR&amp;quot;, BMP180_JSON);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BMP180_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 BMP180_Display()&lt;br /&gt;
{&lt;br /&gt;
    float inHg = (BMP180_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;BMP180&amp;quot;,&lt;br /&gt;
        &amp;quot;Temp:&amp;quot;,&lt;br /&gt;
        BMP180_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;
    char FooBar[42];&lt;br /&gt;
    sprintf(FooBar,&lt;br /&gt;
            &amp;quot;inHg: %f - Corrected: %f&amp;quot;,&lt;br /&gt;
            BMP180_Datum.AbsPressure / 33.863886666667,&lt;br /&gt;
            BMP180_Datum.AbsPressure / 33.863886666667 + Pressure_Correction);&lt;br /&gt;
    debug_Success(FooBar);&lt;br /&gt;
                sprintf(FooBar, &amp;quot;Correction: %f&amp;quot;, Pressure_Correction);&lt;br /&gt;
            debug_Success(FooBar);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==BMP180_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 BMP180_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;BMP180:&amp;quot;);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;Temperature:    %5.1f C&amp;quot;, BMP180_Datum.Temperature);&lt;br /&gt;
    debug_LineOut(debugTEXT);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;Temperature:    %5.1f F&amp;quot;, 1.8 * BMP180_Datum.Temperature + 32);&lt;br /&gt;
    debug_LineOut(debugTEXT);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;AbsPressure:   %5.2f hPa&amp;quot;, BMP180_Datum.AbsPressure);&lt;br /&gt;
    debug_LineOut(debugTEXT);&lt;br /&gt;
    sprintf(debugTEXT, &amp;quot;SeaPressure:  %5.2f hPa&amp;quot;, BMP180_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>