TFT 7 дюймов, Due и тачскрин - не работает

Тема в разделе "Arduino & Shields", создана пользователем DIYMan, 21 окт 2017.

  1. DIYMan

    DIYMan Guest

    Хех, странная проблемка. Имею TFT 7 дюймов, CTE shield и Arduino Due. Картинки показывает, всё зашибись. Настала пора поработать с тачем. Вот такой простенький скетч:

    Код (C++):
    #include <UTFT.h>
    #include <URTouch.h>

    extern uint8_t BigFont[];

    UTFT    myGLCD(CTE70,25,26,27,28);
    URTouch  myTouch( 6, 5, 4, 3, 2);

    void setup()
    {
      myGLCD.InitLCD(LANDSCAPE);
      myGLCD.clrScr();
      myGLCD.setFont(BigFont);
      myTouch.InitTouch(LANDSCAPE);
      myTouch.setPrecision(PREC_MEDIUM);
      myGLCD.fillScr(0, 0, 0);
      myGLCD.print("Wait for touch...",0,10);
    }

    void loop()
    {
      if(myTouch.dataAvailable())
      {
        myTouch.read();
        Debug(myTouch.getX(), myTouch.getY());
      }
    }

    void Debug(int X, int Y)
    {
      char output[] = "X:xxx | Y:xxx";
      myGLCD.setBackColor(0, 0, 0);//background of text is black
      myGLCD.setColor(255, 255, 255); // test color is white
      sprintf(output, "X:%03d | Y:%03d", X, Y);
      myGLCD.print(output, 50, 100);
    }
    Компилируется, загружается, и вот тут начинается самое интересное: если выткнуть питание и воткнуть снова, потом коснуться экрана - то на дисплее появляются значения координат, причём они ВСЕГДА равны -1. Потом, сколько не тыкай на экран - ни-че-го. Если опять передёрнуть питание - процесс повторяется сначала.

    Питал и от БП, и от USB, и от обоих сосков сразу - без изменений. В выхлопную трубу - тоже дул. Платы просмотрел, коротышей не нашёл. Скетч калибровки экрана из примеров к URTouch работает ровно так же - после пересброса питания отрабатывает одно касание - и на глушняк.

    Шо это за хрень и как с этим бороться - может, кто сталкивался и подскажет хотя бы направление?

    З.Ы. Экран такой: https://ru.aliexpress.com/item/7-7-...32665916475.html?spm=2114.13010708.0.0.MRTIAG
    Шилд такой: https://ru.aliexpress.com/item/TFT-...32658272354.html?spm=2114.13010708.0.0.MRTIAG
    Дунька такая: https://ru.aliexpress.com/wholesale...ative_id=SB_20171021070357&isViewCP=y&catId=0
     
  2. DIYMan

    DIYMan Guest

    Короче, кому интересно:
    Код (C++):
    URTouch  myTouch( 6, 5, 32, 3, 2);
    Вот так тач начал отзываться, всё работает. Теперь осталось разобраться с поддержкой кириллицы в шрифтах.
     
    Последнее редактирование модератором: 21 окт 2017
    arkadyf нравится это.
  3. DIYMan

    DIYMan Guest

    И с кириллицей разобрался: взял отсюда основу: https://github.com/twsdwf/UTFT-rus, понял, что под Due не работает, как надо, полез в кишки, заменил
    Код (C++):
    ch = pgm_read_byte(utf8_rus_charmap + ch);
    на
    Код (C++):
    ch = utf8_rus_charmap[ch];
    И у мну теперь есть два русских шрифта, сделанных хорошим человеком.

    А всё дело в том, что pgm_read_byte под Due определён по-другому, обратил внимание на warning при компиляции. Было - так:
    Код (C++):
    #define pgm_read_byte(addr) (*(const unsigned char *)(addr))
    А стало- так:
    Код (C++):
    #define pgm_read_byte(data) *data
    Чуете, да, в чём дело? Говорили же - СКОБОЧКИ В МАКРОСАХ надо, обязательно! Если бы было вот так:
    Код (C++):
    #define pgm_read_byte(data) *(data)
    было бы всё норм.

    Вот такие пироги, короче ;)
     
    arkadyf и ИгорьК нравится это.
  4. DIYMan

    DIYMan Guest

    Русский работает норм, за исключением библиотеки UTFT_Buttons, т.к. она не знает, что можно выводить и русские символы из UTF8. Надо будет - перепилю библиотеку, пока - такой надобности не обнаружил, но всё возможно. Вот как выглядит сейчас:

    IMG_2887.JPG

    Короче, пока Добби доволен :)
     
    arkadyf и ostrov нравится это.
  5. DIYMan

    DIYMan Guest

    С русским текстом на кнопках - всё теперь норм, пришлось делать копию библиотеки UTFT_Buttons, написать свой класс-посредник, короче, всё теперь работает:

    IMG_2888.JPG

    В аттаче к сообщению - тестовый скетч, практически пример из поставки UTFT: там видно, как юзать русские шрифты (файл шрифтов приложен) с библиотекой UTFT. Библиотеку UTFT_Buttons устанавливать необязательно - смотрите пример, как в скетче идёт работа с кнопками.

    Надеюсь, кому-нибудь будет полезно: работа, как видите, коллективная (я тоже чуть-чуть приложил свою руку), поэтому не поделиться - просто не могу, не имею морального права ;)
     

    Вложения:

    arkadyf нравится это.