• 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
Wyświetlacz do hulajnogi elektrycznej
#1
Cześć

Chętnie zlecę napisanie lub modyfikację kodu.

Komunikacja pomiędzy sterownikiem Flipsky 75100 PRO V2, a WT32-SCO1 PLUS. 

Chodzi mi o wyświetlanie danych ze sterownika takich jak prędkość, moc, napięcie, prąd itp - wszystko co udostępnia biblioteka vescuart. 

Kod poniżej kompiluje się ale nie odczytuje danych z urządzenia (brak komunikacji). 

Dla odmiany zrobiłem wyświetlacz 16x4 i2c na arduino nano i tam odczyt działa prawidłowo (mogę udostępnić kod do porównania).

Do komunikacji użyłem pinów EXT_IO1 i EXT_IO2.

Może to być zlecenie napisania lub  modyfikacji kodu do odbierania danych lub bardziej rozbudowany graficznie projekt pod np. SquareLine Studio:


[Obrazek: shopping?q=tbn:ANd9GcR1C6JY8G_GQINOt0UP9...s&usqp=CAc]

lub 

[Obrazek: TFT-C1-Sharpbike-electric-bicycle-tft-lcd-display-.jpg]

Kod, który udało mi się do tej pory stworzyć pod ESP32:

Kod:
#define LGFX_USE_V1        
#include <LovyanGFX.hpp>    // Główna biblioteka
#include "esp32-hal.h"      // Do funkcji rdzenia ESP32
#include "esp32-hal-psram.h" // Wsparcie PSRAM

// Ustawienia orientacji
#define TFT_WIDTH   320
#define TFT_HEIGHT  480

// Konfiguracja UART
#define UART_NUM       1
#define UART_TX_PIN   10  // Pin TX dla UART (EXT_IO1)
#define UART_RX_PIN   11  // Pin RX dla UART (EXT_IO2)
#define UART_BAUDRATE 115200

class LGFX : public lgfx::LGFX_Device
{
  lgfx::Panel_ST7796  _panel_instance;  // ST7796UI
  lgfx::Bus_Parallel8 _bus_instance;    // MCU8080 8B
  lgfx::Light_PWM     _light_instance;
  lgfx::Touch_FT5x06  _touch_instance;

public:
  LGFX(void)
  {
    {
      auto cfg = _bus_instance.config();
      cfg.freq_write = 40000000;   
      cfg.pin_wr = 47;            
      cfg.pin_rd = -1;            
      cfg.pin_rs = 0;             

      // Interfejs danych LCD, 8-bitowy MCU (8080)
      cfg.pin_d0 = 9;             
      cfg.pin_d1 = 46;            
      cfg.pin_d2 = 3;             
      cfg.pin_d3 = 8;             
      cfg.pin_d4 = 18;            
      cfg.pin_d5 = 17;            
      cfg.pin_d6 = 16;            
      cfg.pin_d7 = 15;            

      _bus_instance.config(cfg);  
      _panel_instance.setBus(&_bus_instance);     
    }

    {
      auto cfg = _panel_instance.config();   

      cfg.pin_cs           =    -1; 
      cfg.pin_rst          =    4; 
      cfg.pin_busy         =    -1;

      cfg.panel_width      =   TFT_WIDTH;
      cfg.panel_height     =   TFT_HEIGHT;
      cfg.offset_x         =     0;
      cfg.offset_y         =     0;
      cfg.offset_rotation  =     0;
      cfg.dummy_read_pixel =     8;
      cfg.dummy_read_bits  =     1;
      cfg.readable         =  false;
      cfg.invert           = true;
      cfg.rgb_order        = false;
      cfg.dlen_16bit       = false;
      cfg.bus_shared       = false;

      _panel_instance.config(cfg);
    }

    {
      auto cfg = _light_instance.config();   

      cfg.pin_bl = 45;             
      cfg.invert = false;          
      cfg.freq   = 44100;          
      cfg.pwm_channel = 7;         

      _light_instance.config(cfg);
      _panel_instance.setLight(&_light_instance); 
    }

    {
      auto cfg = _touch_instance.config();

      cfg.x_min      = 0;
      cfg.x_max      = 319;
      cfg.y_min      = 0; 
      cfg.y_max      = 479;
      cfg.pin_int    = 7; 
      cfg.bus_shared = true;
      cfg.offset_rotation = 0;

      cfg.i2c_port = 1; // I2C_NUM_1
      cfg.i2c_addr = 0x38;
      cfg.pin_sda  = 6;  
      cfg.pin_scl  = 5;  
      cfg.freq = 400000; 

      _touch_instance.config(cfg);
      _panel_instance.setTouch(&_touch_instance); 
    }

    setPanel(&_panel_instance);
  }
};

static LGFX lcd;            // Deklaracja zmiennej wyświetlacza

// Zmienne UART
char incomingData[50]; // Bufor do odbierania danych UART

void setup(void)
{
  lcd.init();

  // Ustaw wyświetlacz w orientacji poziomej
  if (lcd.width() < lcd.height()) lcd.setRotation(lcd.getRotation() ^ 1);

  // Wyświetl logo startowe
  displayStartupLogo();

  // Wypełnij ekran czarnym kolorem
  lcd.fillScreen(TFT_BLACK);

  // Ustaw kolor tekstu na żółty
  lcd.setTextColor(TFT_YELLOW);

  // Ustaw rozmiar czcionki
  lcd.setTextSize(2);

  // Inicjalizacja UART
  Serial1.begin(UART_BAUDRATE, SERIAL_8N1, UART_RX_PIN, UART_TX_PIN);

  // Wyświetl początkowe napisy
  // displayValues(); // Ukryj tę linię, aby nie wyświetlać wartości
}

void loop()
{
  // Odczyt danych z UART
  if (Serial1.available()) {
    int bytesRead = Serial1.readBytesUntil('\n', incomingData, sizeof(incomingData) - 1);
    incomingData[bytesRead] = '\0'; // Zakończ łańcuch znaków

    // Wyświetl surowe dane na ekranie dla debugowania
    displayRawData(incomingData);
  } else {
    // Gdy brak danych, wyczyść surowe dane
    strcpy(incomingData, "Brak danych");
  }

  // Wyczyść ekran i wyświetl nowe wartości
  lcd.fillScreen(TFT_BLACK);
  displayRawData(incomingData);
  delay(1000); // Aktualizuj co 1 sekundę
}

void displayRawData(const char* data) {
  lcd.setCursor(10, 10); // Ustaw kursor na górze ekranu
  lcd.setTextColor(TFT_WHITE); // Ustaw kolor tekstu na biały
  lcd.setTextSize(2); // Ustaw większy rozmiar czcionki
  lcd.printf("Odebrane: %s", data); // Wyświetl surowe dane
}

void displayStartupLogo() {
  lcd.fillScreen(TFT_BLACK); // Wypełnij tło czarnym kolorem
  lcd.setTextColor(TFT_WHITE); // Ustaw kolor tekstu na biały
  lcd.setTextSize(4); // Ustaw większy rozmiar czcionki
 
  // Oblicz położenie logo
  int16_t x = (TFT_WIDTH - lcd.textWidth("FLIPSKY 75100 PRO V2")) / 2;
  int16_t y = (TFT_HEIGHT - lcd.fontHeight()) / 2;

  // Wyświetl logo na środku ekranu
  lcd.setCursor(x, y);
  lcd.printf("FLIPSKY 75100 PRO V2");

  delay(4000); // Czekaj przez 4 sekundy
}
[Obrazek: Aluminiowa-p-ytka-drukowana-Flipsky-7510...cznika.jpg]
[Obrazek: 1-sztuk-ESP32-pok-adzie-rozwoju-WT32-SC0...-ciowy.jpg]
 
Odpowiedź
#2
Dzień dobry,
serdecznie zapraszam do kontaktu poprzez e-mail: kontakt.shargon@gmail.com

Pozdrawiam
Shargon Łukasz Majchrzak
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości