Конфликт tft экрана и ethernetudp

Тема в разделе "Arduino & Shields", создана пользователем Михаил123, 12 авг 2020.

  1. Код (C++):

    #include "Ethernet.h"
    #include "EthernetUdp.h"
    #include "SPFD5408_Adafruit_GFX.h"
    #include "SPFD5408_Adafruit_TFTLCD.h"
    #include "SPFD5408_TouchScreen.h"

    #define LCD_CS A3 // Chip Select goes to Analog 3
    #define LCD_CD A2 // Command/Data goes to Analog 2
    #define LCD_WR A1 // LCD Write goes to Analog 1
    #define LCD_RD A0 // LCD Read goes to Analog 0
    #define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin

    #define BUFFPIXEL 20

    Adafruit_SHTC3 shtc3 = Adafruit_SHTC3();
    Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
    EthernetUDP Udp;
    ....
    установки, настройки....
    всё работает

            Serial.println(scale.get_units(10), 1);
            old_ms = millis();
            sensors_event_t humidity, tmp;
            shtc3.getEvent(&humidity, &tmp);
            //tft.fillScreen(BLACK);
            tft.setTextSize(1); // зависает, если здесь поставить > 1
            delay(20);    
            tft.setTextColor(WHITE);
            delay(20);
            if (old_tmp > 0)
            {
                tft.setCursor(160,40);
                tft.print(old_tmp);
            }
         
            if (old_hum > 0)
            {
                tft.setCursor(160,80);        
                tft.print(old_hum);
            }
            delay(20);
            tft.setTextColor(BLUE); // зависает, если здесь поставить BLACK
            old_tmp = floor(tmp.temperature * 10.0) / 10.0;
            old_hum = floor(humidity.relative_humidity * 10.0) / 10.0;
            tft.setCursor(160,40);
            tft.print(old_tmp);
            tft.setCursor(160,80);    
            tft.print(old_hum);
            Serial.println(old_tmp);
            Serial.println(old_hum);
        }
    проблема в чем, проблема в том, что если добавлять в код
    tft.setTextSize(2); или 3 или ...

    код виснет на
    Код (C++):
    Serial.println("получение");
        int packetSize = Udp.parsePacket();    // тут виснет
        Serial.println("получил");
    получение - выводится, получил - нет.
    так же подвисает если , если вместо
    tft.setTextColor(BLUE); // зависает, если здесь поставить BLAK
    поставить BLAK

    странно.
    в сборке MEGA256, W5100 шильд, TFT шильд

    в какую сторону копать?
     
  2. parovoZZ

    parovoZZ Гуру

    А есть понимание, что делает эта функция?
    Код (C++):
    Udp.parsePacket();