ILI9431 액정을 LovyanGFX로 사용해보기

4875 단어 LovyanGFXESP32


"ESP32로 ILI9341 TFT 액정 이동"
htps : // 이 m / 난부 wks / ms / 72503cf93c5f2 에 d0 에에 b

에서 소개한 ILI9341 LCD를 최근 화제의 LovyanGFX 라이브러리에서 움직여 보았습니다.
연결된 보드는 ESP32의 자체 제작 보드입니다.

환경


  • ESP32 Arduino
  • Ubuntu Linux 20.04
  • Arduino 1.8.13 (Portable 환경)
  • LovyanGFX 라이브러리
  • ESP32 (자작 보드)
  • ILI9341 LCD 3.2in 터치 패널 없음

  • 자작 보드와 ILI9341 액정의 배선은 「ESP32로 ILI9341 TFT 액정을 이동한다」기사와 같습니다.

    설치



    Arduino 라이브러리 관리자에서 LovyanGFX 라이브러리를 로드합니다.
    파일 - 스케치 예제 - 사용자 정의 라이브러리 스케치 예제 - LovyanGFX - HowToUse - 2_spi_setting
    다시 작성합니다.

    기본적으로 다음 항목을 변경합니다.

    변경 전
    
    //:  lgfx::Panel_ILI9341 panel;
      lgfx::Panel_ILI9342 panel;
    ...
        panel.spi_cs = 14;
        panel.spi_dc = 27;
        panel.gpio_rst = 33;
        panel.gpio_bl  = 32;
    ...
      panel.memory_width  = 320;
      panel.memory_height = 240;
      panel.panel_width  = 320;
      panel.panel_height = 240;
    

    변경 후
    
      lgfx::Panel_ILI9341 panel;
    //  lgfx::Panel_ILI9342 panel;
    ...
        panel.spi_cs = 5;
        panel.spi_dc = 17;
        panel.gpio_rst = 16;
        panel.gpio_bl  = 4;
    ...
      panel.memory_width  = 240;
      panel.memory_height = 320;
      panel.panel_width  = 240;
      panel.panel_height = 320;
    

    코멘트등을 삭제해 컴팩트하게 해, 데모 화면을 일본어 표시가 되도록(듯이) 고쳐 본 것이 이하의 코드입니다.
    
      panel.memory_width  = 240;
      panel.memory_height = 320;
      panel.panel_width  = 240;
      panel.panel_height = 320;
    
    #include <LovyanGFX.hpp>
    struct LGFX_Config
    {
      static constexpr spi_host_device_t spi_host = VSPI_HOST;
      static constexpr int dma_channel = 1;
      static constexpr int spi_sclk = 18;
      static constexpr int spi_mosi = 23;
      static constexpr int spi_miso = 19;
      static constexpr int spi_dlen = 8;
    };
    static lgfx::LGFX_SPI<LGFX_Config> lcd;
    static lgfx::Panel_ILI9341 panel;
    
    void setup(void)
    {
      panel.freq_write = 20000000;
      panel.freq_fill  = 27000000;
      panel.freq_read  = 16000000;
      panel.spi_mode = 0;
      panel.spi_mode_read = 0;
      panel.len_dummy_read_pixel = 8;
      panel.spi_read = true;
      panel.spi_3wire = false;
      panel.spi_cs = 5;
      panel.spi_dc = 17;
      panel.gpio_rst = 16;
      panel.gpio_bl  = 4;
      panel.pwm_ch_bl = 7;
      panel.backlight_level = true;
      panel.reverse_invert = false;
      panel.rgb_order = false;
      panel.memory_width  = 240;
      panel.memory_height = 320;
      panel.panel_width  = 240;
      panel.panel_height = 320;
      panel.offset_x = 0;
      panel.offset_y = 0;
      panel.rotation = 0;
      panel.offset_rotation = 0;
      lcd.setPanel(&panel);
      lcd.init();
    }
    
    uint32_t count = ~0;
    void loop(void)
    {
      for ( int i=0; i<4;i++){
        lcd.setRotation(i);
        lcd.startWrite();
        lcd.fillScreen(random(65535));
        lcd.setCursor(0,0);
        lcd.setFont(&lgfxJapanGothicP_8); lcd.setTextColor(random(65535),random(65535)); lcd.print("縦 8日本語\n");
        lcd.setFont(&lgfxJapanGothicP_12);lcd.setTextColor(random(65535),random(65535)); lcd.print("縦12日本語\n");
        lcd.setFont(&lgfxJapanGothicP_16); lcd.setTextColor(random(65535),random(65535));lcd.print("縦16日本語\n");
    //    lcd.setFont(&lgfxJapanGothicP_20); lcd.setTextColor(random(65535),random(65535));lcd.print("縦20日本語\n");
    //    lcd.setFont(&lgfxJapanGothicP_24); lcd.setTextColor(random(65535),random(65535));lcd.print("縦24日本語\n");
    //    lcd.setFont(&lgfxJapanGothicP_28); lcd.setTextColor(random(65535),random(65535));lcd.print("縦28日本語\n");
    //    lcd.setFont(&lgfxJapanGothicP_32); lcd.setTextColor(random(65535),random(65535));lcd.print("縦32日本語\n");
    //    lcd.setFont(&lgfxJapanGothicP_36); lcd.setTextColor(random(65535),random(65535));lcd.print("縦36日本語\n");
        lcd.setFont(&lgfxJapanGothicP_40);lcd.setTextColor(random(65535),random(65535)); lcd.print("縦40日本語\n");
        lcd.endWrite();
        delay(3000);
      }
    }
    

    일본어 관계의 코드는 이하를 참고로 했습니다.
    「ovyanGFX 입문 그 3 일본어 폰트 그리기계 | Lang-ship」
    htps : /// g-p. 이 m / b ぉ g /

    폰트 사이즈 9종류 모두 나오려고 하면, 표준 설정에서는 메모리가 부족해졌으므로 적당하게 코멘트 아웃 해 넣었습니다.



    Tips


  • 액정은 16 비트 칼라로 움직이고 있는 것 같습니다.
  • 이번에 설정한 것과 같은 내용으로 LGFX_Config_Custom.hpp 를 재작성해 사용하려고 했는데 어째서인지 잘 되지 않았습니다. 하테?
  • 좋은 웹페이지 즐겨찾기