Hej, mam mały problem z moim kodem. Mianowicie wszystko jest OK do czasu aż nie wprowadzę go w DeepSleepa po którym nie chce się już wybudzić
Płytka to NodeMCU V3, D0 i RST połączone oczywiście. Po wybudzeniu się nie działa zarówno wyświetlacz (czarny) jak i nadawanie w ESPnow.
Po wybudzeniu się jedyna informacja którą dostaje w porcie szeregowym to:
Płytka to NodeMCU V3, D0 i RST połączone oczywiście. Po wybudzeniu się nie działa zarówno wyświetlacz (czarny) jak i nadawanie w ESPnow.
Kod:
//TFT
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#define TFT_CS 5
#define TFT_RST 15
#define TFT_DC 2
#define TFT_SCLK 0
#define TFT_MOSI 4
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
//Sleep
#define uS_TO_S_FACTOR 1000000
#define TIME_TO_SLEEP 10 /* Czas snu) */
#include <ESP8266WiFi.h>
#include <espnow.h>
uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
typedef struct struct_message {
char a[32];
int b;
float c;
String d;
bool e;
} struct_message;
struct_message myData;
#include "bitmapy.h"
byte rysowanie = 0;
//Timer
#include <Timers.h>
Timer REFRESH_COMMUNICATION;
Timer USYPIANIE;
void setup() {
WiFi.mode(WIFI_STA);
esp_now_set_self_role(ESP_NOW_ROLE_CONTROLLER);
esp_now_add_peer(broadcastAddress, ESP_NOW_ROLE_SLAVE, 1, NULL, 0);
REFRESH_COMMUNICATION.begin(SECS(2));
USYPIANIE.begin(SECS(20));
tft.initR(INITR_BLACKTAB);
tft.fillScreen(ST7735_BLACK);
}
void loop() {
if (rysowanie == 0){
tft.setTextSize(1);
tft.setTextColor(ST7735_RED, ST7735_BLACK);
tft.setCursor(10, 70);
tft.println("15 / 03 / 2020");
tft.setCursor(36, 86);
tft.println("16:45");
tft.setTextColor(ST7735_RED, ST7735_BLACK);
tft.drawBitmap(16, 34, LOGO1, 96, 18, ST7735_RED);
tft.drawBitmap(0, 0, LOGO2, 128, 48, ST7735_WHITE);
tft.drawBitmap(0, 136, LOGO3, 128, 24, ST7735_RED);
tft.drawBitmap(0, 0, LOGO5, 31, 16, ST7735_YELLOW);
tft.drawBitmap(112, 0, LOGO5, 15, 14, ST7735_YELLOW);
tft.drawBitmap(0, 102, LOGO6, 53, 22, ST7735_RED);
tft.drawBitmap(54, 102, LOGO7, 74, 22, ST7735_ORANGE);
analogWrite(14, 350);
rysowanie++;
}
if (REFRESH_COMMUNICATION.available()){
strcpy(myData.a, "Help !!");
myData.b = random(1,20);
myData.c = 1.2;
myData.d = "Hello";
myData.e = false;
esp_now_send(broadcastAddress, (uint8_t *) &myData, sizeof(myData));
REFRESH_COMMUNICATION.restart();
}
if (USYPIANIE.available()){
ESP.deepSleep(TIME_TO_SLEEP * uS_TO_S_FACTOR);
}
}
Po wybudzeniu się jedyna informacja którą dostaje w porcie szeregowym to:
Kod:
ets Jan 8 2013,rst cause:5, boot mode:(3,2)
ets_main.c