Помогите с простым скетчем.

DeathKing
Offline
Зарегистрирован: 29.03.2019

Специалисты гляньте что не так пожалуйста. Я делаю светодиодный проект. Есть светодиодная строка из светодиодных матриц 8х8 на микросхемах MAX7219. Так же есть семисегментные индикаторы на TM1637 и 5 светодиодов на сдвиговом регистре 74HC595. По отдельности скетчи проверки работают а вот когда обьединяю в один скетч не хочет работать. Не работают светодиоды и строка не хочет работать правильно. Гланьте может я что то не так делаю? Огромное спасибо!!!

 

Moderator : пожалуйста, вставьте код правильно - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

 

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

DeathKing пишет:

Специалисты гляньте что не так пожалуйста. 

Первое - неправильно вставлен код. За 5 месяцев, даже если ты по слогам читаешь, можно было осилить правила форума из песочницы. 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DeathKing пишет:

Я делаю светодиодный проект. Есть ... MAX7219. Так же есть ... TM1637 и ... 74HC595. 

Проект называется "Ноев ковчег"?

DeathKing
Offline
Зарегистрирован: 29.03.2019

/*Time_Test*/
#include "TM1637.h"


#define DISP1_CLK 30
#define DISP1_DIO 31

#define DISP2_CLK 22
#define DISP2_DIO 23

#define DISP3_CLK 24
#define DISP3_DIO 25

#define DISP4_CLK 32
#define DISP4_DIO 33

#define DISP5_CLK 28
#define DISP5_DIO 29



TM1637 Display_1(DISP1_CLK, DISP1_DIO);

TM1637 Display_2(DISP2_CLK, DISP2_DIO);

TM1637 Display_3(DISP3_CLK, DISP3_DIO);

TM1637 Display_4(DISP4_CLK, DISP4_DIO);

TM1637 Display_5(DISP5_CLK, DISP5_DIO);


int8_t Time1[] = {1, 2, 2, 0};
int8_t Time2[] = {1, 4, 3, 5};
int8_t Time3[] = {0, 7, 2, 4};
int8_t Time4[] = {0, 9, 4, 6};
int8_t Time5[] = {1, 9, 4, 7};

/*5Led_Test*/
const int data_pin = 2;
const int sh_pin = 4;
const int st_pin = 3;

int bt = 0;

void shift(byte v){
    for(int z=0; z<8; z++){
        digitalWrite(sh_pin, LOW);
        digitalWrite(data_pin, v & (1 << z ));
        digitalWrite(sh_pin, HIGH);
    }
    digitalWrite(st_pin, HIGH); 
    digitalWrite(st_pin, LOW);
}

/*Display_Test*/
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>

int pinCS = 10; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf http://arduino.cc/en/Reference/SPI )
int numberOfHorizontalDisplays = 1;
int numberOfVerticalDisplays = 25;

Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);

String tape = "SW12.3 NW14.5 S 15  NE14.3 EW19.2";
int wait = 20; // In milliseconds

int spacer = 1;
int width = 5 + spacer; // The font width is 5 pixels


void setup()

/*Time_Test*/
{
  /*Инициализация дисплеев*/
  Display_1.init();
  Display_2.init();
  Display_3.init();
  Display_4.init();
  Display_5.init();
  /*Устанавливаем яркость свечения дисплеев*/
  /*BRIGHT_TYPICAL - нормальная яркость*/
  /*BRIGHT_DARKEST - затемнённый дисплей*/
  /*BRIGHTEST - яркий дисплей*/
  Display_1.set(BRIGHTEST);
  Display_2.set(BRIGHTEST);
  Display_3.set(BRIGHTEST);
  Display_4.set(BRIGHTEST);
  Display_5.set(BRIGHTEST);


/*5Led_Test*/
    pinMode(data_pin, OUTPUT);
    pinMode(sh_pin, OUTPUT);
    pinMode(st_pin, OUTPUT);

/*Display_Test*/
  matrix.setIntensity(15); // Use a value between 0 and 15 for brightness

// Adjust to your own needs
//  matrix.setPosition(0, 0, 0); // The first display is at <0, 0>
//  matrix.setPosition(1, 1, 0); // The second display is at <1, 0>
//  matrix.setPosition(2, 2, 0); // The third display is at <2, 0>
//  matrix.setPosition(3, 3, 0); // And the last display is at <3, 0>
//  ...
//  matrix.setRotation(0, 2);    // The first display is position upside down
  matrix.setRotation(1);    // The same hold for the last display   

}
void loop() 
{

/*5Led_Test*/
    shift(1<<bt);
    bt++;
    if( bt==8 )
        bt = 0;
/*Time_Test*/
  
  /*Сразу же гасим десятичную точку для всех знакомест*/
  Display_1.point(true);
  Display_2.point(true);
  Display_3.point(true);
  Display_4.point(true);
  Display_5.point(true);
  /*Вывод значения температуры на дисплей с десятичной точкой*/
  Display_1.display(Time1);
  Display_2.display(Time2);
  Display_3.display(Time3);
  Display_4.display(Time4);
  Display_5.display(Time5);
  /*Выводим значение времени на дисплей с разделителем двоеточие*/
  /*Также управляем зажиганием и гашением разделителя двоеточие*/




/*Display_Test*/

// for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) {

      for ( int i = 196 ; i < width * tape.length() + matrix.width() - 1 - spacer;) {

    matrix.fillScreen(LOW);

    int letter = i / width;
    int x = (matrix.width() - 1) - i % width;
    int y = (matrix.height() - 8) / 2; // center the text vertically

    while ( x + width - spacer >= 0 && letter >= 0 ) {
      if ( letter < tape.length() ) {
        matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
      }

      letter--;
      x -= width;
    }

    matrix.write(); // Send bitmap to display

   delay(wait);


  }

}

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Оффтоп обращение к модераторам и админам форума:

Можно создать тему, но нельзя ее отредактировать. Почему? Сделайте такую возможность. Не то что новички, никто так сделать не может. Но всегда комментарий модераторатора - «Оформите тему должным образом». Хорошо. Но как млять??!! Я на форуме почти год и не знаю как это сделать. Почему? Да просто кнопки «Изменить» в первом сообщении  нету!

b707
Offline
Зарегистрирован: 26.05.2017

BOOM пишет:

Оффтоп обращение к модераторам и админам форума:

Можно создать тему, но нельзя ее отредактировать. Почему? Сделайте такую возможность. Не то что новички, никто так сделать не может. Но всегда комментарий модераторатора - «Оформите тему должным образом». Хорошо. Но как млять??!

Никогда нет таких комментариев "оформите тему...". Вместо этого обычно просят " вставьте код правильно". Для этого нет необходимости редактировать заголовок -можно просто вставить код в новое сообщение.

Отсутсвие кнопки "Редактировать" в первом сообщении связано с особенностью движка форума. и, насколько я знаю, поменять это нельзя.

bwn
Offline
Зарегистрирован: 25.08.2014

BOOM пишет:

Оффтоп обращение к модераторам и админам форума:

Можно создать тему, но нельзя ее отредактировать. Почему? Сделайте такую возможность. Не то что новички, никто так сделать не может. Но всегда комментарий модераторатора - «Оформите тему должным образом». Хорошо. Но как млять??!! Я на форуме почти год и не знаю как это сделать. Почему? Да просто кнопки «Изменить» в первом сообщении  нету!

Как когда-то объяснял Александр: сие сделано от хитрожопых студиозов, которые сперва постили свои хотелки курсовиков, а потом стирали, итог - пустая тема.

Как исправить неверно вставленный код, сказали выше.

Кстати, цитирование приведет к аналогичному эффекту, Вы не сможете отредактировать процитированный пост.

Araris
Offline
Зарегистрирован: 09.11.2012

BOOM пишет:

Но как млять??!! Я на форуме почти год и не знаю как это сделать.

Большое спасибо, что подсказали, поменял текст на Moderator : пожалуйста, вставьте код правильно (новым сообщением в тему), как описано в http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii

DeathKing
Offline
Зарегистрирован: 29.03.2019

А кто то вообще с кодом поможет? :)

DeathKing
Offline
Зарегистрирован: 29.03.2019

Или никто не знает в чем проблема? :(

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

DeathKing пишет:

Специалисты гляньте что не так пожалуйста. 

Первое - неправильно вставлен код. За 5 месяцев, даже если ты по слогам читаешь, можно было осилить правила форума из песочницы. 

читать правила из песочницы это всё равно, что мужчине живущему на Кавказе, идти учиться в автошколу, унизительно знаете ли )))

b707
Offline
Зарегистрирован: 26.05.2017

DeathKing пишет:

А кто то вообще с кодом поможет? :)

В вашем случае вряд ли - слишком неконкретно спрашиваете. Вы даже проблемы с кодом не потрудились четко описать, "диоды не работают" и "строка не показывает правильно" - мало что дают человеку, который хотел бы помочь.

При беглом взгляде на код могу только сказать, что вы чисто механически соединили один скетч с другим - с 1 по 56 строчку у вас один скетч, а с 57 явно начинается следующий - так коды не соединяют. Определения и подключения библиотек, что у вас идут начиная с 57 строчки - должны быть в начале кода.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

DeathKing пишет:

А кто то вообще с кодом поможет? :)

Думаю, что нет. 

В первую очередь потому, что Вам самому это не надо. Вы ведь даже поленились внятно описать что с ним не так. Что Вы написали:

DeathKing пишет:

делаю светодиодный проект ... не хочет работать. Не работают светодиоды и строка не хочет работать правильно

Т.е., человек, захотевший Вам помочь должен:

1. Догадаться что именно Вы хотели сделать (что такое "светодиодный проект"?) и как именно Вы хотели, чтобы оно работало.
2. Догадаться что у Вас за схема, как всё соединено
3. Запустить Вам скетч и посмотреть что именно идёт не так, как Вы планировали и в чём выражается "не хочет работать".

Не слишком ли много усилий просто из-за того, что Вам лень нормально описать ситуацию и задать вопрос?

инна
Offline
Зарегистрирован: 26.12.2018

здравствуйте я хочу сделать WEB часы на ESP8266 и LED матрице MAX7219 (8х8)х4.нашла вот проект и там есть все для того чтобы его повторить .повторила все работает ,но только через БИН файл .хочу сделать (8х8)х8.сам скетч там тоже есть,но вот он и не рабочий.прилагаю сам проект.при проверке кода высвечевается розовым вот эта строка 536 if  (P.displayAnimate()){ и выдает кучу предупреждений и ошибку `P` was not declared in this scope. библиотеки я все добавила правильно . помогите кто нибудь с исправлением скетча,пожалуйста https://www.youtube.com/watch?v=9n3Z055pcII&t=73s буду очень рада если кто поможет ,заранее большое спасибо

/*
 * 
 * 
 */
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <ESP8266WebServer.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <Ticker.h>
#include <EEPROM.h>
#include "Timer.h"

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include <ArduinoJson.h>
#include "Fonts.h"

#define  MAX_DEVICES 4 
#define CLK_PIN     D5 // or SCK
#define DATA_PIN    D7 // or MOSI
#define CS_PIN      D8 // or SS

MD_Parola   MD_Parola(CS_PIN, MAX_DEVICES);
#define ARRAY_SIZE(x)  (sizeof(x)/sizeof(x[0]))

// Global data
typedef struct
{
  textEffect_t  effect;   // text effect to display
  char *        psz;      // text string nul terminated
  uint16_t      speed;    // speed multiplier of library default
  uint16_t      pause;    // pause multiplier for library default
} sCatalog;

sCatalog  catalog[] =
{
  { PA_SLICE, "SLICE", 1, 1 },
  { PA_MESH, "MESH", 10, 1 },
  { PA_FADE, "FADE", 20, 1 },
  { PA_WIPE, "WIPE", 5, 1 },
  { PA_WIPE_CURSOR, "WPE_C", 4, 1 },
  { PA_OPENING, "OPEN", 3, 1 },
  { PA_OPENING_CURSOR, "OPN_C", 4, 1 },
  { PA_CLOSING, "CLOSE", 3, 1 },
  { PA_CLOSING_CURSOR, "CLS_C", 4, 1 },
  { PA_BLINDS, "BLIND", 7, 1 },
  { PA_DISSOLVE, "DSLVE", 7, 1 },
  { PA_SCROLL_UP, "SC_U", 5, 1 },
  { PA_SCROLL_DOWN, "SC_D", 5, 1 },
  { PA_SCROLL_LEFT, "SC_L", 5, 1 },
  { PA_SCROLL_RIGHT, "SC_R", 5, 1 },
  { PA_SCROLL_UP_LEFT, "SC_UL", 7, 1 },
  { PA_SCROLL_UP_RIGHT, "SC_UR", 7, 1 },
  { PA_SCROLL_DOWN_LEFT, "SC_DL", 7, 1 },
  { PA_SCROLL_DOWN_RIGHT, "SC_DR", 7, 1 },
  { PA_SCAN_HORIZ, "SCANH", 4, 1 },
  { PA_SCAN_VERT, "SCANV", 3, 1 },
  { PA_GROW_UP, "GRW_U", 7, 1 },
  { PA_GROW_DOWN, "GRW_D", 7, 1 },
};



Timer t;

#include "global.h"
#include "NTP.h"

// Include the HTML, STYLE and Script "Pages"

#include "Page_Admin.h"
#include "Page_Script.js.h"
#include "Page_Style.css.h"
#include "Page_NTPSettings.h"
#include "Page_Information.h"
#include "Page_General.h"
#include "Page_NetworkConfiguration.h"



extern "C" {
#include "user_interface.h"
}

Ticker ticker;


os_timer_t myTimer;


//*** Normal code definition here ...

#define LED_PIN 2
#define buttonPin 0

#define analogPIN A0



String weatherKey;
String ipstring;
String Text;
char buf[256];

String y;     // год
String mon;   // месяц
String wd;    // день недели
String d;     // дени
String h;     // часоы
String m;     // минуты
String s;     // секунды

int disp=0;
int rnd;
int lp=0;

unsigned long eventTime=0;
int buttonstate =1;


String weatherMain = "";
String weatherDescription = "";
String weatherLocation = "";
String country;
int humidity;
int pressure;
float temp;
String tempz;

float lon;
float lat;

int clouds;
float windSpeed;
int windDeg;

String date;
String date1;
String currencyRates;
String weatherString;
String weatherString1;
String weatherStringz;
String weatherStringz1;
String weatherStringz2;

String cityID;
  
WiFiClient client;




String chipID;

void setup() {
  P.begin();
  P.setInvert(false);
  P.setFont(fontBG);

  bool CFG_saved = false;
  int WIFI_connected = false;
  Serial.begin(115200);


  pinMode(LED_PIN,OUTPUT);
  pinMode(buttonPin,INPUT);
  digitalWrite(buttonPin, HIGH);
  digitalWrite(LED_PIN, HIGH);
 
  //**** Network Config load 
  EEPROM.begin(512); // define an EEPROM space of 512Bytes to store data
  CFG_saved = ReadConfig();

  //  Connect to WiFi acess point or start as Acess point
  if (CFG_saved)  //if no configuration yet saved, load defaults
  {    
      // Connect the ESP8266 to local WIFI network in Station mode
      Serial.println("Booting");
      
      WiFi.mode(WIFI_STA);

  if (!config.dhcp)
  {
    WiFi.config(IPAddress(config.IP[0], config.IP[1], config.IP[2], config.IP[3] ),  IPAddress(config.Gateway[0], config.Gateway[1], config.Gateway[2], config.Gateway[3] ) , IPAddress(config.Netmask[0], config.Netmask[1], config.Netmask[2], config.Netmask[3] ) , IPAddress(config.DNS[0], config.DNS[1], config.DNS[2], config.DNS[3] ));
  }
      WiFi.begin(config.ssid.c_str(), config.password.c_str());
      printConfig();
      WIFI_connected = WiFi.waitForConnectResult();
      

    
  
      if(WIFI_connected!= WL_CONNECTED ){
        Serial.println("Connection Failed! activating to AP mode...");
        Serial.print("Wifi ip:");Serial.println(WiFi.localIP());
        Serial.print("Email:");Serial.println(config.email.c_str());
        
      }
  }

  if ( (WIFI_connected!= WL_CONNECTED) or !CFG_saved){
    // DEFAULT CONFIG
    scrollConnect();
    Serial.println("Setting AP mode default parameters");
    config.ssid = "UFA Iot";       // SSID of access point
    config.password = "" ;   // password of access point
    config.dhcp = true;
    config.IP[0] = 192; config.IP[1] = 168; config.IP[2] = 1; config.IP[3] = 100;
    config.Netmask[0] = 255; config.Netmask[1] = 255; config.Netmask[2] = 255; config.Netmask[3] = 0;
    config.Gateway[0] = 192; config.Gateway[1] = 168; config.Gateway[2] = 1; config.Gateway[3] = 1;
    config.DNS[0] = 192; config.DNS[1] = 168; config.DNS[2] = 1; config.DNS[3] = 1;
    config.ntpServerName = "0.ru.pool.ntp.org"; // to be adjusted to PT ntp.ist.utl.pt
    config.Update_Time_Via_NTP_Every =  10;
    config.timeZone = 3;
    config.isDayLightSaving = true;
    config.DeviceName = "API ключь";
    config.email = "cityID";
    WiFi.mode(WIFI_AP);  
    WiFi.softAP(config.ssid.c_str());
    Serial.print("Wifi ip:");Serial.println(WiFi.softAPIP());

   }
   

    // Start HTTP Server for configuration
    server.on ( "/", []() {
      Serial.println("admin.html");
      server.send_P ( 200, "text/html", PAGE_AdminMainPage);  // const char top of page
    }  );
  
    server.on ( "/favicon.ico",   []() {
      Serial.println("favicon.ico");
      server.send( 200, "text/html", "" );
    }  );
  
    // Network config
    server.on ( "/config.html", send_network_configuration_html );
    // Info Page
    server.on ( "/info.html", []() {
      Serial.println("info.html");
      server.send_P ( 200, "text/html", PAGE_Information );
    }  );
    server.on ( "/ntp.html", send_NTP_configuration_html  );
  
    //server.on ( "/appl.html", send_application_configuration_html  );
    server.on ( "/general.html", send_general_html  );
    //  server.on ( "/example.html", []() { server.send_P ( 200, "text/html", PAGE_EXAMPLE );  } );
    server.on ( "/style.css", []() {
      Serial.println("style.css");
      server.send_P ( 200, "text/plain", PAGE_Style_css );
    } );
    server.on ( "/microajax.js", []() {
      Serial.println("microajax.js");
      server.send_P ( 200, "text/plain", PAGE_microajax_js );
    } );
    server.on ( "/admin/values", send_network_configuration_values_html );
    server.on ( "/admin/connectionstate", send_connection_state_values_html );
    server.on ( "/admin/infovalues", send_information_values_html );
    server.on ( "/admin/ntpvalues", send_NTP_configuration_values_html );
    //server.on ( "/admin/applvalues", send_application_configuration_values_html );
    server.on ( "/admin/generalvalues", send_general_configuration_values_html);
    server.on ( "/admin/devicename",     send_devicename_value_html);
  
  
    server.onNotFound ( []() {
      Serial.println("Page Not Found");
      server.send ( 400, "text/html", "Page not Found" );
    }  );
    server.begin();
    Serial.println( "HTTP server started" );

    // ***********  OTA SETUP
  
    ArduinoOTA.setHostname(config.DeviceName.c_str());
    ArduinoOTA.onEnd([]() { // do a fancy thing with our board led at end
        ESP.restart();
      });
  
    ArduinoOTA.onError([](ota_error_t error) { 
        Serial.printf("Error[%u]: ", error);
        if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
        else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
        else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
        else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
        else if (error == OTA_END_ERROR) Serial.println("End Failed");
        ESP.restart(); 
      });
  
     /* setup the OTA server */
    ArduinoOTA.begin();
    Serial.println("Ready");
          for(int i=0; i<3; i++){ // Bling the LED to show the program started
           digitalWrite(LED_PIN, LOW);
           delay(200);
           digitalWrite(LED_PIN, HIGH);
           delay(200);
          }
    
      
    // start internal time update ISR
//    tkSecond.attach(1, ISRsecondTick);
    
    
    //**** Normal Sketch code here...
    




ipstring = (
String(WiFi.localIP()[0]) +"." +
String(WiFi.localIP()[1]) + "." +
String(WiFi.localIP()[2]) + "." +
String(WiFi.localIP()[3])
);


{


  for (uint8_t i=0; i<ARRAY_SIZE(catalog); i++)
  {
    catalog[i].speed *= P.getSpeed();
    catalog[i].pause *= 500;
  }
}

t.every(1000, ISRsecondTick);

if  (WiFi.status() == WL_CONNECTED) {
getTime();
scrollIP();

  //  t.every(10000, getTime);

  }  
   getTime();
   getWeatherData();
   getWeatherDataz();
weatherKey = config.DeviceName.c_str();
cityID = config.email.c_str();
}

// the loop function runs over and over again forever
void loop() {
  
  // OTA request handling
  ArduinoOTA.handle();

  //  WebServer requests handling
  server.handleClient();

   //  feed de DOG :) 
   customWatchdog = millis();

  //**** Normal Skecth code here ... 
t.update();
  if (lp >= 10) lp=0;

   if (disp ==0){
    if (lp==0){
       getWeatherData();
       getWeatherDataz();
    }
   getTime();
   disp=1;
   lp++;
   }
   
   if (disp ==1){
   rnd = random(0, ARRAY_SIZE(catalog));
   Text = h + ":" + m;
   displayInfo();
   }
   
   if (disp ==2){
   Text = wd + " " + d + " " + mon + " " + y;
   scrollText();
   }

   if (disp ==3){
   rnd = random(0, ARRAY_SIZE(catalog));
   Text = h + ":" + m;
   displayInfo1();
   }

   if (disp ==4){
   Text = weatherString;
   scrollText1();
   }

   if (disp ==5){
   rnd = random(0, ARRAY_SIZE(catalog));
   Text = h + ":" + m;
   displayInfo2();
   }

   if (disp ==6){
   Text = weatherStringz + " " + weatherStringz1;
   scrollText2();
   }
   
  //============длительное нажатие кнопки форматирует EEPROM
int buttonstate=digitalRead(buttonPin);
if(buttonstate==HIGH) eventTime=millis();
if(millis()-eventTime>5000){      // при нажатии 15 секунд - 
digitalWrite(16, LOW);  
 ResetAll();                 // форматируем EEPROM
Serial.println("EEPROM formatted");
ESP.restart();
}
else 
{
digitalWrite(16, HIGH); 
}

//============длительное нажатие кнопки форматирует EEPROM
}

void ResetAll(){
  EEPROM.begin(512);
  // write a 0 to all 512 bytes of the EEPROM
  for (int i = 0; i < 512; i++){
  EEPROM.write(i, 0);
  }
  EEPROM.end();
  ESP.reset();
}

//==========================================================
void getTime(){
  getNTPtime();
    h = String (DateTime.hour/10) + String (DateTime.hour%10);
    m = String (DateTime.minute/10) + String (DateTime.minute%10);
    s = String (DateTime.second/10 + String (DateTime.second%10));

    d = String (DateTime.day);

    y = String (DateTime.year);
     
    if (DateTime.month == 1) mon = "Января";
    if (DateTime.month == 2) mon = "Февраля";
    if (DateTime.month == 3) mon = "Марта";
    if (DateTime.month == 4) mon = "Апреля";
    if (DateTime.month == 5) mon = "Мая";
    if (DateTime.month == 6) mon = "Июня";
    if (DateTime.month == 7) mon = "Июля";
    if (DateTime.month == 8) mon = "Августа";
    if (DateTime.month == 9) mon = "Сентября";
    if (DateTime.month == 10) mon = "Октября";
    if (DateTime.month == 11) mon = "Ноября";
    if (DateTime.month == 12) mon = "Декабря";

    if (DateTime.wday == 2) wd = "Понедельник";
    if (DateTime.wday == 3) wd = "Вторник";
    if (DateTime.wday == 4) wd = "Среда";
    if (DateTime.wday == 5) wd = "Четверг";
    if (DateTime.wday == 6) wd = "Пятница";
    if (DateTime.wday == 7) wd = "Суббота";
    if (DateTime.wday == 1) wd = "Воскресенье";
    
}
//==========================================================
void displayInfo(){
    if (P.displayAnimate()){
    utf8rus(Text).toCharArray(buf, 256);
    P.displayText(buf, PA_CENTER, catalog[rnd].speed, 5000, catalog[rnd].effect, catalog[rnd].effect);   
    if (!P.displayAnimate()) disp = 2;
    }
}
//==========================================================
void displayInfo1(){
    if (P.displayAnimate()){
    utf8rus(Text).toCharArray(buf, 256);
    P.displayText(buf, PA_CENTER, catalog[rnd].speed, 5000, catalog[rnd].effect, catalog[rnd].effect);   
    if (!P.displayAnimate()) disp = 4;
    }
}
//==========================================================
void displayInfo2(){
    if (P.displayAnimate()){
    utf8rus(Text).toCharArray(buf, 256);
    P.displayText(buf, PA_CENTER, catalog[rnd].speed, 5000, catalog[rnd].effect, catalog[rnd].effect);   
    if (!P.displayAnimate()) disp = 6;
    }
}
//==========================================================
void displayInfo3(){
    if (P.displayAnimate()){
    utf8rus(Text).toCharArray(buf, 256);
    P.displayText(buf, PA_CENTER, catalog[rnd].speed, 5000, catalog[rnd].effect, catalog[rnd].effect);   
    if (!P.displayAnimate()) disp = 0;
    }
}
//==========================================================
void scrollText(){
  if  (P.displayAnimate()){
  utf8rus(Text).toCharArray(buf, 256);
  P.displayScroll(buf, PA_LEFT, PA_SCROLL_LEFT, 40);
  if (!P.displayAnimate()) disp = 3;
  }
}
//==========================================================
void scrollText1(){
  if  (P.displayAnimate()){
  utf8rus(Text).toCharArray(buf, 256);
  P.displayScroll(buf, PA_LEFT, PA_SCROLL_LEFT, 40);
  if (!P.displayAnimate()) disp = 5;
  }
}
//==========================================================
void scrollText2(){
  if  (P.displayAnimate()){
  utf8rus(Text).toCharArray(buf, 256);
  P.displayScroll(buf, PA_LEFT, PA_SCROLL_LEFT, 40);
  if (!P.displayAnimate()) disp = 0;
  }
}
//==========================================================
void scrollText3(){
  if  (P.displayAnimate()){
  utf8rus(Text).toCharArray(buf, 256);
  P.displayScroll(buf, PA_LEFT, PA_SCROLL_LEFT, 40);
  if (!P.displayAnimate()) disp = 0;
  }
}



//==========================================================
void scrollIP(){
  
    Text = "Ваш IP: "+ipstring;
  if  (P.displayAnimate()){
  utf8rus(Text).toCharArray(buf, 256);
  P.displayScroll(buf, PA_LEFT, PA_SCROLL_LEFT, 60);
  }

}
//==========================================================
void scrollConnect(){
  Text = "Отсутствует подключение к WIFI. Подключитесь к точке доступа 'UFA Iot' и войдите в веб интерфейс 192.168.4.1" ;
  if  (P.displayAnimate()){
  utf8rus(Text).toCharArray(buf, 256);
  P.displayScroll(buf, PA_LEFT, PA_SCROLL_LEFT, 40);
  if (!P.displayAnimate()) disp = 3;
  }
}

// =======================================================================
// Берем погоду с сайта openweathermap.org
// =======================================================================



const char *weatherHost = "api.openweathermap.org";

void getWeatherData()
{
  Serial.print("connecting to "); Serial.println(weatherHost);
  if (client.connect(weatherHost, 80)) {
    client.println(String("GET /data/2.5/weather?id=") + cityID + "&units=metric&appid=" + weatherKey + "&lang=ru" + "\r\n" +
                "Host: " + weatherHost + "\r\nUser-Agent: ArduinoWiFi/1.1\r\n" +
                "Connection: close\r\n\r\n");
  } else {
    Serial.println("connection failed");
    return;
  }
  String line;
  int repeatCounter = 0;
  while (!client.available() && repeatCounter < 10) {
    delay(500);
    Serial.println("w.");
    repeatCounter++;
  }
  while (client.connected() && client.available()) {
    char c = client.read(); 
    if (c == '[' || c == ']') c = ' ';
    line += c;
  }

  client.stop();
  Serial.println(line + "\n");
  DynamicJsonBuffer jsonBuf;
  JsonObject &root = jsonBuf.parseObject(line);
  if (!root.success())
  {
    Serial.println("parseObject() failed");
    return;
  }
  //weatherMain = root["weather"]["main"].as<String>();
  weatherDescription = root["weather"]["description"].as<String>();
  weatherDescription.toLowerCase();
  //  weatherLocation = root["name"].as<String>();
  //  country = root["sys"]["country"].as<String>();
  temp = root["main"]["temp"];
  humidity = root["main"]["humidity"];
  pressure = root["main"]["pressure"];
  windSpeed = root["wind"]["speed"];
  windDeg = root["wind"]["deg"];
  clouds = root["clouds"]["all"];
  String deg = String(char('~'+25));
  weatherString = "Сейчас " + String(temp,0)+" ";
  weatherString += weatherDescription;
  weatherString += " Влажн " + String(humidity) + "% ";
  weatherString += "Давл " + String(pressure/1.3332239,0) + " мм ";
//  weatherString += "Облачность: " + String(clouds) + "% ";

String windDegString;

if (windDeg>=345 || windDeg<=22) windDegString = "Северный";
if (windDeg>=23 && windDeg<=68) windDegString = "Северо-восточный";
if (windDeg>=69 && windDeg<=114) windDegString = "Восточный";
if (windDeg>=115 && windDeg<=160) windDegString = "Юго-восточный";
if (windDeg>=161 && windDeg<=206) windDegString = "Южный";
if (windDeg>=207 && windDeg<=252) windDegString = "Юго-западный";
if (windDeg>=253 && windDeg<=298) windDegString = "Западный";
if (windDeg>=299 && windDeg<=344) windDegString = "Северо-западный";


  weatherString += "Ветер " + windDegString + " " + String(windSpeed,1) + " м/с";



  
  Serial.println("POGODA: " + String(temp,0) + "\n");
}

// =======================================================================
// Берем ПРОГНОЗ!!! погоды с сайта openweathermap.org
// =======================================================================



const char *weatherHostz = "api.openweathermap.org";

void getWeatherDataz()
{
  Serial.print("connecting to "); Serial.println(weatherHostz);
  if (client.connect(weatherHostz, 80)) {
    client.println(String("GET /data/2.5/forecast/daily?id=") + cityID + "&units=metric&appid=" + weatherKey + "&lang=ru" + "&cnt=2" + "\r\n" +
                "Host: " + weatherHostz + "\r\nUser-Agent: ArduinoWiFi/1.1\r\n" +
                "Connection: close\r\n\r\n");
  } else {
    Serial.println("connection failed");
    return;
  }
  String line;
  int repeatCounter = 0;
  while (!client.available() && repeatCounter < 10) {
    delay(500);
    Serial.println("w.");
    repeatCounter++;
  }
  while (client.connected() && client.available()) {
    char c = client.read(); 
    if (c == '[' || c == ']') c = ' ';
    line += c;
  }
  tvoday(line);
  Serial.println(tempz + "\n");

  client.stop();
  
  DynamicJsonBuffer jsonBuf;
  JsonObject &root = jsonBuf.parseObject(tempz);
  if (!root.success())
  {
    Serial.println("parseObject() failed");
    return;
  }
  lon = root ["coord"]["lon"];
  lat = root ["coord"]["lat"];
  
  float wSpeed = root ["speed"];
  int wDeg = root ["deg"];
  float tempMin = root ["temp"]["min"];
  float tempMax = root ["temp"]["max"];
  weatherDescription = root ["weather"]["description"].as<String>();
  
  weatherStringz = "Завтра " + String(tempMin,1) + " .. " + String(tempMax,1) + " " + weatherDescription;
  Serial.println("!!!!!PROGNOZ: " + weatherStringz + " Wind: "+wSpeed+ " WindDeg: "+(wDeg)+ "\n");
  
  String windDegString;

if (wDeg>=345 || wDeg<=22) windDegString = "Северный";
if (wDeg>=23 && wDeg<=68) windDegString = "Северо-восточный";
if (wDeg>=69 && wDeg<=114) windDegString = "Восточный";
if (wDeg>=115 && wDeg<=160) windDegString = "Юго-восточный";
if (wDeg>=161 && wDeg<=206) windDegString = "Южный";
if (wDeg>=207 && wDeg<=252) windDegString = "Юго-западный";
if (wDeg>=253 && wDeg<=298) windDegString = "Западный";
if (wDeg>=299 && wDeg<=344) windDegString = "Северо-западный";

  weatherStringz1 = "Ветер " + windDegString + " " + String(wSpeed,1) + " м/с";
}
// =======================================================================
  void tvoday(String line){
    String s;
    int strt = line.indexOf('}');
    for (int i=1; i<=4; i++){
      strt = line.indexOf('}', strt + 1);
    }
    s = line.substring(2+strt, line.length());
    tempz=s;
}

// =======================================================================


String utf8rus(String source)
{
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };

  k = source.length(); i = 0;

  while (i < k) {
    n = source[i]; i++;

    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB8; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
return target;
}

 

b707
Offline
Зарегистрирован: 26.05.2017

Инна, самое первое - не надо влезать со своим вопросом в чужую ветку, это как вмешиваться в разговор незнакомых людей.

Что касается Вашего вопроса - скетч, что вы привели, весь состоит из отдельных кусков, надерганных из разных программ. Не думаю, что его можно поправить, исправив одну-две ошибки, боюсь, его надо переписывать чуть ли не заново.

инна
Offline
Зарегистрирован: 26.12.2018

есле не трудно, будьте так добры ,перейдите по ссылке и там есть видео ,а под ним указан адрес скетча .к нему прилагаются в комплект дополнительные файлы переработанные ,запустите. может чем поможете. просто я сама нпытаюсь понять что к чему, а куда обратиться не знаю .я не профессионалка толко могу сложить готовое ,а как прикрепить зип файл ,тогда я вам его прешлю не заходя по ссылке

Morroc
Offline
Зарегистрирован: 24.10.2016

В архиве походу не все файлы - user_interface.h, timer.h не нашел

инна пишет:

толко могу сложить готовое

звучит пугающе если речь о коде из разных скетчей )))

инна
Offline
Зарегистрирован: 26.12.2018

извините меня пожалуйста ,не правильно поняла систему и принципы форума форума.прошу извинить меня пожалуйста

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Да не парься. Это мелочи по отношению к твоему вопросу в чужой теме...