Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*******************************************************************
- An example of usisng the InstagramStats library to get
- info on a given user.
- Written by Brian Lough
- https://www.youtube.com/channel/UCezJOfu7OtqGzd5xrP3q6WA
- modified to use MD_MAX72XX by noiasca
- http://forum.arduino.cc/index.php?topic=588536.0
- Version
- 2019-01-05 20:00 OTA, Fixtextausgabe
- 2019-01-04 20:30 Erste funktionierende Version mit MD_MAX72XX
- *******************************************************************/
- //------- Replace the following! ------
- const char ssid[] = "xxxxx"; // your network SSID (name)
- const char password[] = "xxxxx"; // your network key
- String userName = "xxxxx"; // from their instagram url xxxxx
- //------- some Parameters you can modify ------
- const uint32_t delayBetweenChecks = 60000; // mean time between api requests
- // ----------------------------
- // Standard Libraries - Already Installed if you have ESP8266 set up
- // ----------------------------
- #include <ESP8266WiFi.h>
- #include <WiFiClientSecure.h>
- // ----------------------------
- // Additional Libraries - each one of these will need to be installed.
- // ----------------------------
- #include <JsonStreamingParser.h>
- // Used to parse the Json code within the library
- // Available on the library manager (Search for "Json Streamer Parser")
- // https://github.com/squix78/json-streaming-parser
- #include <MD_MAX72xx.h> // MD_MAX72XX by majicDesigns Version 3.0.2 - installed with library Manager
- const int DATA_PIN = D8; // MISSING <-- hier ganz wichtig die richtigen PINs setzen vieleicht hast du hier 15/D8
- const int CLK_PIN = D6; // MISSING <-- hier ganz wichtig die richtigen PINs setzen vieleicht hast du hier 12/D6
- const int CS_PIN = D7; // MISSING <-- hier ganz wichtig die richtigen PINs setzen vieleicht hast du hier 13/D7
- // MISSING: ganz wichtig in den Zeilen darunter die richtige Hardware einsetzen. Das ist eine der vier Optionen:
- #define HARDWARE_TYPE MD_MAX72XX::FC16_HW // < Use FC-16 style hardware module.
- //#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW // < Use the Parola style hardware modules.
- //#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW // < Use 'generic' style hardware modules commonly available.
- //#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW // < Use ICStation style hardware module.
- const uint8_t DELAYTIME = 100; // in milliseconds
- const int MAX_DEVICES = 4;
- #include <SPI.h> // needed by MD_MAX72XX
- // Arbitrary pins
- MD_MAX72XX mx(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
- WiFiClientSecure client;
- #include "InstagramStats.h"
- unsigned long previousCheck = 0;
- InstagramStats instaStats(client);
- //Maximal 32 Stellen!!! 123456789a123456789b123456789c12 - Sonst geht der Rauch auf!
- const char *fixtext[] = {"Meine Follower: ", // Fixtext[0] ist der Präfix für den Counter
- "Das ist ein Fixtext", // weitere Texte können definiert werden
- "Das ist noch ein Text",
- "und noch einer" // genau schauen: beim letzten gibt es kein Komma mehr
- };
- const byte noOfFixtext = sizeof(fixtext) / sizeof(fixtext[0]); // Anzahl der obigen Fixtexte. Nicht hardcoded damit man das nicht manuell warten muss (und dann sowieso vergisst.
- uint32_t previousFixtext = 10; // store millis of last call
- const uint32_t delayBetweenFixtext = 4000; // Anzeigedauer zwischen den Fixtexten
- uint32_t mycounts = 0; // die ermittelten Follower werden in einer globalen Variable gespeichert
- #include <ArduinoOTA.h> // OTA Upload via ArduinoIDE
- void do_textausgabe() {
- // Gibt der Reihen nach einen der vordefinierten Texte oder die Follower aus
- //
- static byte currentFixtext = 1;
- Serial.print (F("do_textausgabe:")); Serial.println(currentFixtext);
- if (currentFixtext == 0) // von 0 bis n geben wir die definierten Fixtexte aus
- {
- char buf[32];
- char val[32]; // buffer zum umwandeln der Zahl
- strcpy(buf, fixtext[0]); // Fixtext[0] ist der Präfix für den Counter
- itoa(mycounts, val, 10);
- strcat(buf, val);
- scrollText(buf);
- }
- else
- {
- scrollText(fixtext[currentFixtext]);
- }
- currentFixtext++;
- if (currentFixtext >= noOfFixtext) currentFixtext = 0;
- }
- /* *******************************************************************
- F U N C T I O N S
- ********************************************************************/
- void getInstagramStatsForUser() {
- Serial.print (F("Getting instagram user stats for "));
- Serial.println (userName);
- InstagramUserStats response = instaStats.getUserStats(userName);
- Serial.println(F("Response:"));
- Serial.print(F("Number of followers: "));
- Serial.println(response.followedByCount);
- mycounts = response.followedByCount;
- }
- void scrollText(const char *p) // Fast 1:1 entnommen aus den Beispielen der MD_MAX72XX
- {
- uint8_t charWidth;
- uint8_t cBuf[8]; // this should be ok for all built-in fonts
- //Serial.println(F("D101 Scrolling text"));
- mx.clear();
- while (*p != '\0')
- {
- charWidth = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf);
- for (uint8_t i = 0; i <= charWidth; i++) // allow space between characters
- {
- mx.transform(MD_MAX72XX::TSL);
- if (i < charWidth)
- mx.setColumn(0, cBuf[i]);
- delay(DELAYTIME);
- }
- }
- }
- /* *******************************************************************
- S E T U P
- ********************************************************************/
- void setup() {
- Serial.begin(115200);
- Serial.println(F("Instagramm Abfrager"));
- mx.begin();
- scrollText("ARE YOU READY");
- // Set WiFi to station mode and disconnect from an AP if it was Previously
- // connected
- WiFi.mode(WIFI_STA);
- WiFi.disconnect();
- delay(100);
- // Attempt to connect to Wifi network:
- Serial.print(F("Connecting Wifi: "));
- Serial.println(ssid);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- Serial.print(F("."));
- delay(500);
- }
- scrollText("WLAN VERBUNDEN"); // connected
- Serial.println(F("\nWiFi connected"));
- Serial.println(F("IP address: "));
- IPAddress ip = WiFi.localIP();
- Serial.println(ip);
- Serial.print(F("Defined number of fixtext:")); Serial.println(noOfFixtext);
- previousCheck = millis() - delayBetweenChecks + 3000; // damit in etwa 3 Sekunden der erste Request gemacht wird
- ArduinoOTA.begin(); // OTA Upload via ArduinoIDE
- }
- /* *******************************************************************
- M A I N L O O P
- ********************************************************************/
- void loop() {
- unsigned long timeNow = millis();
- if ((timeNow - previousCheck >= delayBetweenChecks)) { // umgebaut gem. BlinkWithoutDelay wegen Rollover nach 42 Tagen.
- getInstagramStatsForUser();
- previousCheck = timeNow;
- }
- if ((timeNow - previousFixtext >= delayBetweenFixtext)) {
- do_textausgabe();
- previousFixtext = millis(); // Wir rechnen den Intervall ab ENDE der Fixtextausgabe.
- }
- ArduinoOTA.handle(); // OTA Upload via ArduinoIDE
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement