• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Wyswietlacz TFT na ESP i deepSleep
#1
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ć Sad
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
 
Odpowiedź
  


Wiadomości w tym wątku
Wyswietlacz TFT na ESP i deepSleep - przez DVDmulti - 15-03-2020, 22:23

Skocz do:


Przeglądający: 1 gości