OPEN SMART 3.0 TFT на Stm32f103c

Тема в разделе "Arduino & Shields", создана пользователем TebEnkov2222, 1 май 2019.

  1. TebEnkov2222

    TebEnkov2222 Гик

    Господа. Добрый день. Я купил себе такой вот дисплей. Но как его подключить ума не приложу. Начал по этому гайду делать. Но как подключить этот экран к stm? Может кто нибудь подскажет? (Экран не стандартного размера. Потому и не могу разобраться)
     
  2. b707

    b707 Гуру

    Размер значения не имеет, главное разрешение и контроллер. Что за дисплей - вы не написали.
    Совет - если начали разбираться по "этому гайду" - для начала возьмите ардуину и добейтесь. чтобы дисплей заработал. Когда заработает с ардуиной - ищите СТМ-версию этой же библиотеки и пробуете с СТМ
     
    Daniil нравится это.
  3. TebEnkov2222

    TebEnkov2222 Гик

  4. Daniil

    Daniil Гуру

    в ней есть поддержка стм?
     
  5. TebEnkov2222

    TebEnkov2222 Гик

    А как это понять?
     
  6. b707

    b707 Гуру

    СТМ32 весьма отличается от плат на основе Атмела. Поэтому стандартные библиотеки без допиливания редко работают и там и там. Так что либо это должна быть отдельная библиотека для СТМ, либо в описании библиотеки будет указано, что она поддерживает СТМ32.
    Ну и конечно, подключение и конфигурация пинов для УНО-Нано и для СТМ32 совершенно разные
     
  7. TebEnkov2222

    TebEnkov2222 Гик

    Там вообще написано, что только под уну(( (
     
  8. b707

    b707 Гуру

    MCUFRIEND_kbv работает и под СТМ
     
  9. TebEnkov2222

    TebEnkov2222 Гик

    А с подключением не поможете?
     
  10. DetSimen

    DetSimen Guest

    Приехать?
     
  11. TebEnkov2222

    TebEnkov2222 Гик

    Схему хотя бы можете показать?
     
  12. DetSimen

    DetSimen Guest

    Нет. Могу толька приехать, выхлебать всю вотку, потом подключить, если повезет.
     
  13. TebEnkov2222

    TebEnkov2222 Гик

    ну а если серьезно?
     
  14. TebEnkov2222

    TebEnkov2222 Гик

    Вот как подключать?
    upload_2019-5-6_17-26-29.png
    Пытаюсь воспользоваться стандартным скетчем 400*240 пикселей
    Код (C++):
    // UTFT_Demo_400x240
    // Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
    // web: http://www.RinkyDinkElectronics.com/
    //
    // This program is a demo of how to use most of the functions
    // of the library with a supported display modules.
    //
    // This demo was made for modules with a screen resolution
    // of 400x240 pixels.
    //
    // This program requires the UTFT library.
    //

    //################################################
    // GLUE class that implements the UTFT API
    // replace UTFT include and constructor statements
    // remove UTFT font declaration e.g. SmallFont
    //################################################

    #include <UTFTGLUE.h>              //use GLUE class and constructor
    UTFTGLUE myGLCD(0,A2,A1,A3,A4,A0); //all dummy args

    // Declare which fonts we will be using
    //extern uint8_t SmallFont[];

    // Set the pins to the correct ones for your development shield
    // ------------------------------------------------------------
    // Arduino Uno / 2009:
    // -------------------
    // Standard Arduino Uno/2009 shield            : <display model>,A5,A4,A3,A2
    // DisplayModule Arduino Uno TFT shield        : <display model>,A5,A4,A3,A2
    //
    // Arduino Mega:
    // -------------------
    // Standard Arduino Mega/Due shield            : <display model>,38,39,40,41
    // CTE TFT LCD/SD Shield for Arduino Mega      : <display model>,38,39,40,41
    //
    // Remember to change the model parameter to suit your display module!
    //UTFT myGLCD(ITDB32WD,38,39,40,41);

    void setup()
    {
      randomSeed(analogRead(0));

    // Setup the LCD
      myGLCD.InitLCD();
      myGLCD.setFont(SmallFont);
    }

    void loop()
    {
      int buf[398];
      int x, x2;
      int y, y2;
      int r;

    // Clear the screen and draw the frame
      myGLCD.clrScr();

      myGLCD.setColor(255, 0, 0);
      myGLCD.fillRect(0, 0, 399, 13);
      myGLCD.setColor(64, 64, 64);
      myGLCD.fillRect(0, 226, 399, 239);
      myGLCD.setColor(255, 255, 255);
      myGLCD.setBackColor(255, 0, 0);
      myGLCD.print("*** Universal Color TFT Display Library ***", CENTER, 1);
      myGLCD.setBackColor(64, 64, 64);
      myGLCD.setColor(255,255,0);
      myGLCD.print("< http://www.RinkyDinkElectronics.com/ >", CENTER, 227);

      myGLCD.setColor(0, 0, 255);
      myGLCD.drawRect(0, 14, 399, 225);

    // Draw crosshairs
      myGLCD.setColor(0, 0, 255);
      myGLCD.setBackColor(0, 0, 0);
      myGLCD.drawLine(199, 15, 199, 224);
      myGLCD.drawLine(1, 119, 398, 119);
      for (int i=9; i<390; i+=10)
        myGLCD.drawLine(i, 117, i, 121);
      for (int i=19; i<220; i+=10)
        myGLCD.drawLine(197, i, 201, i);

    // Draw sin-, cos- and tan-lines
      myGLCD.setColor(0,255,255);
      myGLCD.print("Sin", 5, 15);
      for (int i=1; i<398; i++)
      {
        myGLCD.drawPixel(i,119+(sin(((i*0.9)*3.14)/180)*95));
      }

      myGLCD.setColor(255,0,0);
      myGLCD.print("Cos", 5, 27);
      for (int i=1; i<398; i++)
      {
        myGLCD.drawPixel(i,119+(cos(((i*0.9)*3.14)/180)*95));
      }

      myGLCD.setColor(255,255,0);
      myGLCD.print("Tan", 5, 39);
      for (int i=1; i<398; i++)
      {
        y=119+(tan(((i*0.9)*3.14)/180));
        if ((y>15) && (y<224))
        myGLCD.drawPixel(i,y);
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);
      myGLCD.setColor(0, 0, 255);
      myGLCD.setBackColor(0, 0, 0);
      myGLCD.drawLine(199, 15, 199, 224);
      myGLCD.drawLine(1, 119, 398, 119);

    // Draw a moving sinewave
      x=1;
      for (int i=1; i<(398*20); i++)
      {
        x++;
        if (x==399)
          x=1;
        if (i>399)
        {
          if ((x==199)||(buf[x-1]==119))
            myGLCD.setColor(0,0,255);
          else
            myGLCD.setColor(0,0,0);
          myGLCD.drawPixel(x,buf[x-1]);
        }
        myGLCD.setColor(0,255,255);
        y=119+(sin(((i)*3.14)/180)*(90-(i / 100)));
        myGLCD.drawPixel(x,y);
        buf[x-1]=y;
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

    // Draw some filled rectangles
      for (int i=1; i<6; i++)
      {
        switch (i)
        {
          case 1:
            myGLCD.setColor(255,0,255);
            break;
          case 2:
            myGLCD.setColor(255,0,0);
            break;
          case 3:
            myGLCD.setColor(0,255,0);
            break;
          case 4:
            myGLCD.setColor(0,0,255);
            break;
          case 5:
            myGLCD.setColor(255,255,0);
            break;
        }
        myGLCD.fillRect(110+(i*20), 30+(i*20), 170+(i*20), 90+(i*20));
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

    // Draw some filled, rounded rectangles
      for (int i=1; i<6; i++)
      {
        switch (i)
        {
          case 1:
            myGLCD.setColor(255,0,255);
            break;
          case 2:
            myGLCD.setColor(255,0,0);
            break;
          case 3:
            myGLCD.setColor(0,255,0);
            break;
          case 4:
            myGLCD.setColor(0,0,255);
            break;
          case 5:
            myGLCD.setColor(255,255,0);
            break;
        }
        myGLCD.fillRoundRect(230-(i*20), 30+(i*20), 290-(i*20), 90+(i*20));
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

    // Draw some filled circles
      for (int i=1; i<6; i++)
      {
        switch (i)
        {
          case 1:
            myGLCD.setColor(255,0,255);
            break;
          case 2:
            myGLCD.setColor(255,0,0);
            break;
          case 3:
            myGLCD.setColor(0,255,0);
            break;
          case 4:
            myGLCD.setColor(0,0,255);
            break;
          case 5:
            myGLCD.setColor(255,255,0);
            break;
        }
        myGLCD.fillCircle(110+(i*30),60+(i*20), 30);
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

    // Draw some lines in a pattern
      myGLCD.setColor (255,0,0);
      for (int i=15; i<224; i+=5)
      {
        myGLCD.drawLine(1, i, (i*1.77)-10, 224);
      }
      myGLCD.setColor (255,0,0);
      for (int i=224; i>15; i-=5)
      {
        myGLCD.drawLine(398, i, (i*1.77)-11, 15);
      }
      myGLCD.setColor (0,255,255);
      for (int i=224; i>15; i-=5)
      {
        myGLCD.drawLine(1, i, 411-(i*1.77), 15);
      }
      myGLCD.setColor (0,255,255);
      for (int i=15; i<224; i+=5)
      {
        myGLCD.drawLine(398, i, 410-(i*1.77), 224);
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

    // Draw some random circles
      for (int i=0; i<100; i++)
      {
        myGLCD.setColor(random(255), random(255), random(255));
        x=32+random(336);
        y=45+random(146);
        r=random(30);
        myGLCD.drawCircle(x, y, r);
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

    // Draw some random rectangles
      for (int i=0; i<100; i++)
      {
        myGLCD.setColor(random(255), random(255), random(255));
        x=2+random(396);
        y=16+random(207);
        x2=2+random(396);
        y2=16+random(207);
        myGLCD.drawRect(x, y, x2, y2);
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

    // Draw some random rounded rectangles
      for (int i=0; i<100; i++)
      {
        myGLCD.setColor(random(255), random(255), random(255));
        x=2+random(396);
        y=16+random(207);
        x2=2+random(396);
        y2=16+random(207);
        myGLCD.drawRoundRect(x, y, x2, y2);
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

      for (int i=0; i<100; i++)
      {
        myGLCD.setColor(random(255), random(255), random(255));
        x=2+random(396);
        y=16+random(209);
        x2=2+random(396);
        y2=16+random(209);
        myGLCD.drawLine(x, y, x2, y2);
      }

      delay(2000);

      myGLCD.setColor(0,0,0);
      myGLCD.fillRect(1,15,398,224);

      for (int i=0; i<10000; i++)
      {
        myGLCD.setColor(random(255), random(255), random(255));
        myGLCD.drawPixel(2+random(396), 16+random(209));
      }

      delay(2000);

      myGLCD.fillScr(0, 0, 255);
      myGLCD.setColor(255, 0, 0);
      myGLCD.fillRoundRect(120, 70, 279, 169);

      myGLCD.setColor(255, 255, 255);
      myGLCD.setBackColor(255, 0, 0);
      myGLCD.print("That's it!", CENTER, 93);
      myGLCD.print("Restarting in a", CENTER, 119);
      myGLCD.print("few seconds...", CENTER, 132);

      myGLCD.setColor(0, 255, 0);
      myGLCD.setBackColor(0, 0, 255);
      myGLCD.print("Runtime: (msecs)", CENTER, 210);
      myGLCD.printNumI(millis(), CENTER, 225);

      delay (10000);
    }
    Объясните дураку как подключить этот экран (подключаю на уну)..
     
  15. parovoZZ

    parovoZZ Гуру

    Твои контакты: CS (выбор экрана), RS (данные), WR(команда/данные). Нижние X и Y - это с тача. Но никакая уна с этим тачем работать не способна. Нужен МК с PTC на борту.
    Я могу ошибаться - даташит ты нам не предоставил.
     
  16. Daniil

    Daniil Гуру

    В коде написано ж
     
  17. TebEnkov2222

    TebEnkov2222 Гик

    Подождите. А почему другие форматы способны на уне работать. А этот экран нет? (Дтш я поищу )
    И если это так. То приведите пример, с каким контроллером работать будет
     
  18. TebEnkov2222

    TebEnkov2222 Гик

    ? Там НАписано подключение. А не РАСписано. Где какой пин там не указано
     
  19. b707

    b707 Гуру

    да не слушайте вы Паровоза - он в ардуино вовсе не разбирается.
    Обычный экран с 8-битным параллельным подключением. с тачем. Тач нормально работает на таких экранах.

    Ищи в Гугле но всем надписям на экране - уверен, что найдете и схему подключения. и правильную инициализацию
     
    Daniil нравится это.
  20. Daniil

    Daniil Гуру

    В коде либы посмотрите как объявляется экран, если писал норм. человек, то из названий аргументов можно понять

    кстати да. Обычно легко нагуглить ответ по запросу ""дисплей" ардуино"