From 76e0e5431827f00db6666c9410929b7485f42ec4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien?=
Date: Sun, 17 Dec 2017 01:06:06 +0100
Subject: [PATCH] First commit
---
LibreMetric.ino | 169 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 169 insertions(+)
create mode 100644 LibreMetric.ino
diff --git a/LibreMetric.ino b/LibreMetric.ino
new file mode 100644
index 0000000..7c0f267
--- /dev/null
+++ b/LibreMetric.ino
@@ -0,0 +1,169 @@
+
+//################# LIBRARIES ##########################
+#include
+#include
+#include // https://github.com/tzapu/WiFiManager
+#include
+#include
+#include
+#include
+#include
+
+//################# DISPLAY CONNECTIONS ################
+// LED Matrix Pin -> ESP8266 Pin
+// Vcc -> 3v (3V on NodeMCU 3V3 on WEMOS)
+// Gnd -> Gnd (G on NodeMCU)
+// DIN -> D7 (Same Pin for WEMOS)
+// CS -> D4 (Same Pin for WEMOS)
+// CLK -> D5 (Same Pin for WEMOS)
+
+//################ PROGRAM SETTINGS ####################
+String version = "0.1b";
+int PORT = 80;
+int wait = 50;
+int spacer = 1;
+int width = 5 + spacer;
+String SITE_WIDTH = "1000";
+int timezone = 1;
+int dstOffset = 1;
+const char* ntpServer = "fr.pool.ntp.org";
+int brightness = 2;
+int pinCS = D4;
+int numberOfHorizontalDisplays = 4;
+int numberOfVerticalDisplays = 1;
+
+//################## INITIALIZING ######################
+char time_value[20];
+String message, webpage;
+ESP8266WebServer server(PORT);
+Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
+
+
+void setup() {
+ Serial.begin(115200); // initialize serial communications
+ WiFiManager wifiManager;
+ wifiManager.setTimeout(180);
+ //fetches ssid and password and tries to connect, if connections succeeds it starts an access point with the name called "LibreMetric" and waits in a blocking loop for configuration
+ if(!wifiManager.autoConnect("LibreMetric")) {
+ Serial.println(F("failed to connect and timeout occurred"));
+ delay(6000);
+ ESP.reset(); //reset and try again
+ delay(180000);
+ }
+ // At this stage the WiFi manager will have successfully connected to a network, or if not will try again in 180-seconds
+ Serial.println(F("WiFi connected..."));
+ Serial.println(WiFi.localIP());
+ configTime(timezone * 3600, dstOffset * 3600, ntpServer); // First sync of time with (S)NTP
+
+//----------------------------------------------------------------------
+ server.begin();
+ Serial.println(F("Webserver started..."));
+ matrix.setIntensity(brightness);
+ brightness=16;
+ Serial.print(numberOfHorizontalDisplays);
+ Serial.println(" displays configurated...");
+
+ for (int i=0; i= 0 && letter >= 0 ) {
+ if ( letter < message.length() ) {
+ matrix.drawChar(x, y, message[letter], HIGH, LOW, 1); // HIGH LOW means foreground ON, background OFF, reverse these to invert the display!
+ }
+ letter--;
+ x -= width;
+ }
+ matrix.write(); // Send bitmap to display
+ delay(wait);
+ }
+}
+
+void GetMessage() {
+ webpage = "";
+ append_page_header();
+ String IPaddress = WiFi.localIP().toString();
+ webpage += "
";
+ webpage += "
";
+ append_page_footer();
+ if (server.args() > 0 ) { // Arguments were received
+ for ( uint8_t i = 0; i <= server.args(); i++ ) {
+ String Argument_Name = server.argName(i);
+ String client_response = server.arg(i);
+ if (Argument_Name == "message") message = client_response;
+ if (Argument_Name == "brightness") brightness = client_response.toInt();
+ }
+ }
+ server.send(200, "text/html", webpage); // Send a response to the client to enter their inputs, if needed, Enter=defaults
+}
+
+void append_page_header() {
+ webpage = F("");
+ webpage += "";
+ webpage += F("Envoi de messages - LibreMetricLibreMetric ");
+ webpage += version+"
";
+}
+
+void append_page_footer(){ // Saves repeating many lines of code for HTML page footers
+ webpage += F("");
+ webpage += F("");
+}
+