Нужна помощь - пропуск некоторых операторов serial.print

У меня есть проект, над которым я работаю для курятника. Я хочу контролировать дверь со временем восхода и захода солнца. Также глядя на несколько других вещей, но где-то по пути , я, должно быть, испортил размещение setup (), loop() и других операторов void. Я больше не получаю Serial.print заявления для печати. Я сделал довольно много заимствований из других кодов (которые могут быть очевидны для тех, кто гораздо лучше в этом, чем я). Для некоторых из этих заимствованных кодов я получаю серийные отпечатки. Я использую это как свою отладку, чтобы проверить передаваемые значения и определить, являются ли они тем, что я ожидаю, особенно для времени восхода и захода солнца, чтобы управлять приводом моей двери.

Есть какие-нибудь идеи, почему эти различные строки serial.print не печатаются?

Я указал некоторые строки serial.print с помощью <------------------------.

/*************************************************************
  Скачать последнюю версию библиотеки Blynk можно здесь:
    https://github.com/blynkkk/blynk-library/releases/latest

  Blynk - это платформа с приложениями для iOS и Android для управления
  Arduino, Raspberry Pi и тому подобное через Интернет.
  Вы можете легко создавать графические интерфейсы для всех ваших
проектов, просто перетаскивая виджеты.

    Загрузки, документы, учебные пособия: http://www.blynk.cc
    Генератор скетча: http://examples.blynk.cc
    Сообщество Blynk: http://community.blynk.cc
    Следуйте за нами: http://www.fb.com/blynkapp
                                http://twitter.com/blynk_app

  Библиотека Blynk лицензирована по лицензии MIT
  Этот пример кода находится в открытом доступе.

 *************************************************************
  ПРЕДУПРЕЖДЕНИЕ!
    Очень сложно заставить его работать. Пожалуйста, прочтите эту статью:
    http://help.blynk.cc/hardware-and-libraries/arduino/esp8266-with-at-firmware

  Этот пример показывает, как значение может быть передано из Arduino в
приложение Blynk.

  ЗАПИСКА:
  BlynkTimer обеспечивает функциональность SimpleTimer:
    http://playground.arduino.cc/Code/SimpleTimer

  Настройка проекта приложения:
    Виджет отображения значения, прикрепленный к виртуальному контакту V5
 *************************************************************/

/* Прокомментируйте это, чтобы отключить печать и сэкономить место */
#define BLYNK_PRINT Serial


#include <ESP8266_Lib.h>
#include <BlynkSimpleShieldEsp8266.h>
#include "DHT.h"
#include <Wire.h>
#include <time.h>
#include <TimeLib.h>
#include <Dusk2Dawn.h>
#include <DS1307RTC.h>

#define TIMEZONE    -6
#define LATITUDE    38.3970
#define LONGITUDE   -90.6412


//Тип DHT, который используется
#define DHTTYPE DHT11   // DHT 11
//Какой вывод выхода DHT подключен к Arduino
#define DHTPIN 5
DHT dht(DHTPIN, DHTTYPE);


// Вы должны получить токен Auth в приложении Blynk.
// Перейдите в Настройки проекта (значок гайки).
char auth[] = "d*********************************0";

// Ваши учетные данные Wi-Fi.
// Установите пароль на "" для открытых сетей.
char ssid[] = "P**********k";
char pass[] = "m*****************a";

int DisconnectCount = 0;
int ReCnctFlag;
int ReCnctCount = 0;

  Dusk2Dawn HouseSprings(LATITUDE,LONGITUDE, TIMEZONE);
  tmElements_t tm;
  //Изменяет Минуты на тот же формат, что и Восход/Закат солнца (минуты после полуночи)
  int Mins = tm.Hour * 60 + tm.Minute;
  int Sunrise = HouseSprings.sunrise(tm.Year, tm.Month, tm.Day, true);
  int Sunset = HouseSprings.sunset(tm.Year, tm.Month, tm.Day, true);

//char Str_door_status[] = "";

// Аппаратный Serial на Mega, Leonardo, Micro...
//#define EspSerial Serial1

// или Serial программного обеспечения на Uno, Nano...
#include <SoftwareSerial.h>
SoftwareSerial EspSerial(2, 3); // RX, TX

// Ваша скорость передачи данных ESP8266: корректировка для каждого проекта
#define ESP8266_BAUD 9600

ESP8266 wifi(&EspSerial);



BlynkTimer timer;

//Раздел кода, который будет обрабатывать получение данных влажности/температуры и куда их отправлять
void send_sensor()
{
  //Установите переменную h в значение для
  float h = dht.readHumidity();
  // Считывание температуры по Фаренгейту (isFahrenheit = true)
  //Установите переменную f в значение temp
  float f = dht.readTemperature(true);
  //delay(1000);
  //Выполните проверку, если h или f не имеют значения
  if (isnan(h) || isnan(f)) {
    Serial.println(F("Не удалось прочитать с датчика DHT!"));
    return;
  }
  //Они будут использоваться для отправки данных в последовательное окно
  Serial.println(h); // ------------------------
  Serial.println(f); // ------------------------
  //Установите виртуальный вывод 3 blynk на значение температуры
  Blynk.virtualWrite(V3, f);
  //Установите виртуальный вывод 4 blynk на значение влажности
  Blynk.virtualWrite(V4, h);
}






// Эта функция каждую секунду отправляет время работы Arduino на виртуальный вывод (5).
// В приложении частота чтения виджета должна быть установлена на PUSH. Это означает
// что вы определяете, как часто отправлять данные в приложение Blynk.
void myTimerEvent()
{
  // Вы можете отправить любое значение в любое время.
  // Пожалуйста, не отправляйте больше 10 значений в секунду.


}

int in1 = 11;
int in2 = 12;

void motor_stop()
{
  digitalWrite(in1,LOW);
  digitalWrite(in2,LOW);
  Blynk.virtualWrite(V6,0);
  Blynk.virtualWrite(V7,0);
}


BLYNK_WRITE(V6)
{
  int pinValue = param.asInt();
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
  if (pinValue = 1);
  {
    digitalWrite(in1,HIGH);
    digitalWrite(in2,LOW);
    Blynk.virtualWrite(V0,1);
    //delay(35000);
    //digitalWrite(in1,LOW);
    //Blynk.virtualWrite(V6,0);
    timer.setTimeout(35000L, motor_stop);
    Blynk.virtualWrite(V0,2);
  }
}

BLYNK_WRITE(V7)
{
  int pinValue = param.asInt();
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
  if (pinValue = 1);
  {
    digitalWrite(in1,LOW);
    digitalWrite(in2,HIGH);
    Blynk.virtualWrite(V0,1);
    //убрал эту функцию задержки, так как Блинку она не нравится
    //delay(35000);
    //digitalWrite(in1,LOW);
    //Blynk.virtualWrite(V6,0);
    //Secondary method of delay that Blynk appears to prefer
    timer.setTimeout(35000L, motor_stop);
    Blynk.virtualWrite(V0,0);
  }
}



void setup()
{
  // Консоль отладки
  Serial.begin(9600);

  // Set ESP8266 baud rate
  EspSerial.begin(ESP8266_BAUD);
  delay(10);

  Blynk.begin(auth, wifi, ssid, pass);
  // Вы также можете указать сервер:
  //Blynk.begin(auth, wifi, ssid, pass, "blynk-cloud.com", 80);
  //Blynk.begin(auth, wifi, ssid, pass, IPAddress(192,168,1,100), 8080);

  // Setup a function to be called every second
  timer.setInterval(1000L, myTimerEvent);



  dht.begin();

  timer.setInterval(1000L, send_sensor);

  //RTC.read(tm);

  
  
}

BLYNK_CONNECTED() {
  Serial.println("Connected");
  ReCnctCount = 0;

}



      


  //Serial.println(Sunrise);  // 418
  //Serial.println(Sunset);   // 1004





void open_door()
{

}

void close_door()
{
  Serial.println("info"); // <------------------------
  Serial.println(Mins); // <------------------------
  Serial.println(Sunrise); // <------------------------
  Serial.println(Sunset); // <------------------------
  char time2[] = "00:00";
  Dusk2Dawn::min2str(time2, Sunrise);
  Serial.print("Sunrise: ");     // <------------------------
  Serial.println(time2); // 16:53  // <------------------------
  char time3[] = "00:00";
  Dusk2Dawn::min2str(time3, Sunset);
  Serial.print("Sunset: ");  // <------------------------
  Serial.println(time3); // 16:53 // <------------------------
}

void loop()
{
  Serial.println(Mins); // <------------------------
  Serial.println(Sunrise); // <------------------------
  Serial.println(Sunset); // <------------------------
  
  if (Blynk.connected()) 
  {
    Blynk.run();                                    // Запускает соединение Blynk
  }
  else if (ReCnctFlag == 0) 
  {
    ReCnctFlag = 1;                                 // Установить флаг повторного подключения
    Serial.println("Запуск таймера повторного подключения через 3 секунды...");
    timer.setTimeout(3000L, []() {                 // Функция Таймера повторного подключения Лямбды
      ReCnctFlag = 0; // Сбросить флаг повторного подключения
      ReCnctCount++; // Инкремент Счетчика повторного подключения
      Serial.print("Попытка повторного подключения #");
      Serial.println(ReCnctCount);
      Blynk.connect(); // Попробуйте повторно подключиться к серверу
    });
  }
  timer.run(); // Инициирует BlynkTimer


  
  //if (Mins > Sunrise) {
    //Serial.println("Door is open"); 
  //}
  //if (Mins > Sunset) {
  //  Serial.println("Door is closed");
  //}


  
}

Вот что я получаю в последовательном окне:

[45108333] Ready (ping: 53ms). 
Connected

, 👍1

Обсуждение

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

Вы можете увидеть, что я сделал в [истории редактирования](https://arduino.stackexchange.com/posts/82158/revisions). Короче говоря, отступы, а не символы в одной кавычке. Я изменил вашу попытку выделить операторы печати жирным шрифтом, указав их стрелкой в комментарии, потому что форматирование не подходит для списков кода., @timemage

Я заметил, что в коде используется " 3 " в " SoftwareSerial EspSerial(2, 3)", который, похоже, является "последовательным" RX-контактом. Но сильно урезанная версия вашего кода, не делающая ничего, кроме этого, не казалась причиной проблемы. Мое единственное предложение состоит в том, чтобы вы начали удалять код из своего вопроса, начиная с вещей, с которыми люди, которые могли бы попытаться вам помочь, не захотят иметь дело. Blynk, датчик DHT, все, что вы можете удалить, все еще демонстрируя проблему., @timemage

поместите много последовательных инструкций.print, чтобы определить, где зависает программа, @jsotola

вы можете снова вызвать Serial.begin (), чтобы "исправить" это и посмотреть, не сломается ли что-то еще. Я предполагаю, что-то пытается выполнить цифровую запись на последовательный пин., @dandavis

@timemage, это скетч для Uno, @Juraj

попробуйте #определить BLYNK_NO_BUILDIN перед #включить <BlynkSimpleShieldEsp8266.h>, @Juraj

@Juraj, да, это имеет больше смысла. Хотя без того, чтобы убрать кучу вещей, я не получу большой пользы от этой информации., @timemage