IoT - Modular - main.cpp

From The TinkerNet Wiki
Jump to navigation Jump to search

#includes, Defines, etc...

You'll note this is currently aimed at the SugarBush project.

 1 #include "libraries.h"
 2 #include "functions.h"
 3 
 4 #ifdef s_CLIMATE
 5 #include "s-Climate.h"
 6 #endif // s_CLIMATE
 7 
 8 #include "externs.h"
 9 #include "TopSecret.h"
10 
11 /************************************************************************************************/
12 struct CLIMATE_Readings
13 {
14     byte Status;
15 
16     float Temperature;
17     float Humidity;
18     float AbsPressure;
19     float SeaPressure;
20 };
21 
22 struct CLIMATE_Readings CLIMATE_Datum;
23 /************************************************************************************************/
24 
25 // I2C pins suitable for the ESP-M3-Everything!
26 const int SSD1306_SDA = 14; // Tarduino D5
27 const int SSD1306_SCL = 12; // Tarduino D6
28 
29 #ifdef d_SDD1306
30 bool WalkingDudeIndicator = false;
31 bool WavingDudeIndicator = true;
32 #endif
33 
34 SimpleTimer timer;
35 
36 extern int BMP180_Count;
37 extern int BME280_Count;
38 
39 #ifdef SS_Dumper
40 int ReedPin = 4;
41 int HallPin = 5;
42 // int  Dumptime = 0;
43 #endif // SS_Dumper

setup()

You'll note this is currently aimed at the SugarBush project.

  1 void setup()
  2 {
  3   char debugTEXT[46];
  4   sprintf(debugTEXT, "nothing yet");
  5 
  6   Serial.begin(115200);
  7   delay(500); // Delay to let the ESP get booted before sending out serial data
  8 
  9   debug_TitleScreen();
 10 
 11   if (I2C_Test(SSD1306_SDA, SSD1306_SCL)) // Force a reset of the I2C bus if needed
 12   {
 13     Wire.begin(SSD1306_SDA, SSD1306_SCL); // Select SDA & SCL pins
 14                                           /////////////////////////////
 15     pinMode(SSD1306_SDA, INPUT);
 16     pinMode(SSD1306_SCL, INPUT);
 17   }
 18   else
 19   {
 20     ////////////////////////////////  Need to send an MQTT error status message!
 21     debug_Action("POOP!");
 22   }
 23 
 24 // ESP Info //////////////////////////////////////////////////////////////////
 25 #ifdef DEBUG6
 26   debug_Separator();
 27   debug_ESP_info();
 28 #endif // DEBUG6
 29 
 30   // WiFi //////////////////////////////////////////////////////////////////////
 31   debug_Separator();
 32   WiFi_init();
 33 
 34   // MQTT //////////////////////////////////////////////////////////////////////
 35   debug_Separator();
 36   MQTT_init();
 37 
 38   debug_Separator();
 39   debug_Action("Initialising Outputs...");
 40 
 41 // Pixels //////////////////////////////////////////////////////////////////////
 42 #ifdef d_Pixels
 43 
 44   Pixels_init();
 45 
 46   for (int i = 0; i < PixelCount; i++)
 47   {
 48     SetAPixel(i, BLU);
 49   }
 50 
 51 #endif // d_Pixels
 52 
 53 // Audio ///////////////////////////////////////////////////////////////////////
 54 #ifdef d_Audio
 55   Noise_init();
 56 #endif // d_Audio
 57 
 58 #ifdef d_SDD1306
 59   SSD1306_init();
 60   // Display static text
 61   // SSD1306_title("ColdStuff");
 62   SSD1306_title("SugarBush");
 63 #ifdef DEBUG
 64   debug_LineOut("Title on-screen");
 65 #endif
 66 #endif // d_SDD1306
 67 
 68   debug_Separator();
 69   debug_Action("Initialising Sensors...");
 70 
 71 // Event Triggers //////////////////////////////////////////////////////////////
 72 #ifdef SS_Dumper
 73   debug_LineOut("Dumper Sensor");
 74   pinMode(HallPin, INPUT);
 75   attachInterrupt(digitalPinToInterrupt(ReedPin), DumpDetect, CHANGE);
 76   sprintf(debugTEXT, "Reed Switch on pin %d", ReedPin);
 77   debug_LineOut(debugTEXT);
 78   attachInterrupt(digitalPinToInterrupt(HallPin), DumpDetect2, CHANGE);
 79   sprintf(debugTEXT, "Hall Effect Sensor on pin %d", HallPin);
 80   debug_LineOut(debugTEXT);
 81 #endif // SS_Dumper
 82 
 83 // Depth Probes ////////////////////////////////////////////////////////////////
 84 #ifdef s_Depth
 85   Depth_init();
 86 #endif // d_Depth
 87 
 88   // BMP180 ////////////////////////////////////////////////////////////////////
 89 #ifdef s_BMP180
 90   BMP180_Count = BMP180_init();
 91 #endif
 92 
 93   // BME280 ////////////////////////////////////////////////////////////////////
 94 #ifdef s_BME280
 95   BME280_Count = BME280_init();
 96 #endif
 97 
 98 #ifdef s_CLIMATE
 99   BMP180_Count = BMP180_init();
100   if (BMP180_Count > 0)
101   {
102 #define s_BMP180
103   }
104   BME280_Count = BME280_init();
105   if (BME280_Count > 0)
106   {
107 #define s_BME280
108   }
109 #endif
110 
111   // Hall-Effect ///////////////////////////////////////////////////////////////
112   // #ifdef SS_Dumper
113   //   debug_Separator();
114   //   debug_SectionTitle("Hall Effect Sensor");
115   //   pinMode(HallPin, INPUT);
116   //   attachInterrupt(digitalPinToInterrupt(ReedPin), DumpDetect, CHANGE);
117   //   sprintf(debugTEXT, "Reed Switch on pin %d", ReedPin);
118   //   debug_LineOut(debugTEXT);
119   //   attachInterrupt(digitalPinToInterrupt(HallPin), DumpDetect2, CHANGE);
120   //   sprintf(debugTEXT, "Hall Effect Sensor on pin %d", HallPin);
121   //   debug_LineOut(debugTEXT);
122   // #endif // SS_Dumper
123 
124   // Interval Timers ///////////////////////////////////////////////////////////
125   debug_Separator();
126   debug_SectionTitle("Interval Timers");
127 
128   timer.setInterval(20, MQTT_handler);
129   debug_LineOut("MQTT");
130 
131   timer.setInterval(2000, WiFi_Test);
132   debug_LineOut("WiFiCheck");
133 
134 #ifdef s_Depth
135   timer.setInterval(5000, CheckProbes);
136   debug_LineOut("Check Probes");
137 #endif // s_Depth
138 
139 #ifdef s_BMP180
140   if (BMP180_Count != 0)
141   {
142     timer.setInterval(10000, BMP180_main);
143     debug_LineOut("BMP180 Handler");
144   }
145 #endif
146 
147 #ifdef s_BME280
148   if (BME280_Count != 0)
149   {
150     timer.setInterval(10000, BME280_main);
151     debug_LineOut("BME280 Handler");
152   }
153 #endif
154 
155 #ifdef s_CLIMATE
156   if (BMP180_Count != 0)
157   {
158     timer.setInterval(10000, BMP180_main);
159     debug_LineOut("BMP180 Handler");
160   }
161     if (BME280_Count != 0)
162   {
163     timer.setInterval(10000, BME280_main);
164     debug_LineOut("BME280 Handler");
165   }
166 #endif
167 
168 #ifdef d_SDD1306
169   timer.setInterval(100, WavingDude); // Waving Dude in the top-right corner
170   debug_LineOut("Waving Dude Indicator");
171 #endif
172 
173   // READY /////////////////////////////////////////////////////////////////////
174   debug_ReadyScreen();
175 }

loop()

You'll note this is currently aimed at the SugarBush project.

 1 void loop()
 2 {
 3   // Run the interval timers
 4   // Running processes here in loop() is a synchronous flow.
 5   // Running processes via the interval timers is assynchronous.
 6   // If your actions don't depend directly on each other,
 7   // synchronous flow makes no sense at all...
 8   timer.run();
 9 
10 #ifdef SS_Dumper
11   //   This is just here to give me console output while developing...
12   // Serial.print(".");
13   // delay(1000);
14 #endif // SS_Dumper
15 }