EPS8266 Wemos D1 Mini - автомат c перезагрузка - PullRequest
0 голосов
/ 02 мая 2020

Я сделал простой эскиз, который отображает количество моих подписчиков, и он работает полностью. Я сделал для этого деревянный ящик, так что я собираюсь ввернуть его вместе с Вемос внутри. Когда я отсоединяю USB-аккорд и вставляю его обратно в Sketch, кажется, что он перезагружается, но на матрице точек ничего не отображается. Однако, если я нажму sh кнопку сброса, она полностью перезагрузится, и матрица снова отобразит числа.

Когда я запускаю последовательный монитор Arduino, отсоединяю и снова подключаю его, он запускает скетч, но на матрице ничего не отображается. Это заставляет меня задуматься.

Я не уверен, поможет ли код, но я, конечно, могу опубликовать sh, если потребуется.

Вопрос: есть ли способ закодировать полную перезагрузку при переподключении к питанию? Поскольку он будет застревать в деревянном ящике, было бы очень хорошо, если бы он перезагрузился при включении питания, поэтому мне не нужно открывать ящик и каждый раз сбрасывать pu sh.

Любая помощь приветствуется. Спасибо!

Код:

// Libraries included

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include "Arduino.h"
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include "JsonStreamingParser.h"
#include <ArduinoJson.h>

#include "InstagramStats.h"
#include <YoutubeApi.h>

#include "theSwedishMaker.h"


const uint16_t WAIT_TIME = 6000; //Time between fecthing data.


// Define the typ of hardware and the pins used. 

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4

#define CLK_PIN   12
#define DATA_PIN  15
#define CS_PIN    13

// Hardware SPI connection
//MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Arbitrary output pins
MD_Parola P = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);



#define API_KEY "********" //Your Youtube API-Key 
#define CHANNEL_ID "Youtube Channel ID" // Your youtube channel ID. 

String userName = "TheSwedishMaker"; // Your Instagram Username


WiFiClientSecure client; //For ESP8266 boards
InstagramStats instaStats(client);

YoutubeApi api(API_KEY, client);

// =======================================================================
// Configuration of router settings
// =======================================================================

const char* ssid     = "NETWORKNAME";      // SSID of local network
const char* password = "*******";                // Password on network

void setup() 
{
  P.begin();
  P.setFont(fontSubs);

  // Connecting to wifi
  Serial.begin(115200);
  Serial.print("Connecting WiFi ");
  WiFi.begin(ssid, password);
  P.print(" WiFi...");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print("."); delay(500);
  }
  Serial.println("");
  Serial.print("Connected: "); Serial.println(WiFi.localIP());

  client.setInsecure();
}


void loop(void)
{

  Serial.println("Getting data ...");
  P.print("fetching");
  int cnt = 0;
  //int yt1;
  long yt1,yt2,insta;
    while(1) {
    if(!cnt--) {
     cnt = 50;
     if(api.getChannelStatistics(CHANNEL_ID))
      yt1 = api.channelStats.subscriberCount; 
      yt2 = api.channelStats.viewCount;
      InstagramUserStats response = instaStats.getUserStats(userName);
      insta = response.followedByCount;    
    }

    // FORMATO
       String subsCount = num_format(yt1);
       String viewCount = num_format(yt2);
       String instaFollowers = num_format(insta);

    // PRINT
    Serial.println(subsCount);
    P.print("*" + subsCount); 
    delay(3500);
   // P.print("*" + viewCount); //Uncomment if your want to show viewcount.
   // delay(3500); //Uncomment if you want to show viewcount.
    P.print("&" + instaFollowers); 
    delay(5000);
    }}


String num_format(long num){
     String num_s;
     long num_original = num;
     if (num>99999 && num<=999999){
        num = num / 1000;
        long fraction = num_original%1000;
        String num_fraction = String(fraction);
        String decimal = num_fraction.substring(0,1);
        num_s = String(num) + "." + decimal + "K";          
    }
    else if(num>999999){
        num = num / 1000000;
        long fraction = num_original%1000000;
        String num_fraction = String(fraction);
        String decimal = num_fraction.substring(0,1);
        if (num_original<100000000){
          num_s = " " + String(num) + "." + decimal + "M";      
        }
        else{
        num_s = String(num) + "." + decimal + "M";
        }
    }
    else{
        int num_l = String(num).length();
        char num_f[15];
        int blankDigits = 6 - num_l;
        for(int i = 0; i < blankDigits; i++){
          num_f[i] = ' '; 
        }
        num_f[blankDigits] = '\0';
        num_s = num_f + String(num);
    }
    return num_s;
}    
...