| Ваш IP: 35.175.133.127 | Online(24) - гости: 15, боты: 9 | Загрузка сервера: 0.81 ::::::::::::

STM32 + TFT-дисплей SPI 320×240 (ILI9341C)

TFT-дисплей SPI 320×240 (ILI9341C) в сочетании с платой STM32 базе микроконтроллера STM32F103C8T6 имеет очень хорошее быстродействие, скорость обновления экрана намного выше чем использования этого дисплея с Arduino Nano. Работа логики дисплея имеет напряжение 3,3 В, что очень упрощает его подключение к STM32.

Подключение дисплея к STM32 достаточно простое:

При добавлении платы STM32 в Arduino IDE так же добавляются все необходимые библиотеки для работы с TFT-дисплей SPI 320×240 (ILI9341C).

Как добавить плату STM32 в Arduino IDE можно ознакомится в — STM32 Arduino IDE

// Библиотека Arduino_STM32-master.zip
#include "SPI.h"
#include <Adafruit_GFX_AS.h>   // https://rcl-radio.ru/wp-content/uploads/2020/06/Adafruit_GFX.zip
#include <Adafruit_ILI9341_STM.h>
 
#define TFT_CS         PA1                 
#define TFT_DC         PA2             
#define TFT_RST        PA3
 
long i;
 
Adafruit_ILI9341_STM tft = Adafruit_ILI9341_STM(TFT_CS, TFT_DC, TFT_RST); // Mosi - PA7, SCK - PA5 
 
void setup(){
  tft.begin(); 
  tft.setRotation(1);tft.fillScreen(ILI9341_BLACK);
}
 
void loop(void) {
  tft.setCursor(0, 0);
  tft.setTextColor(ILI9341_RED);  tft.setTextSize(1);
  tft.println("RCL-RADIO.RU");
  tft.println();
  tft.setTextColor(ILI9341_BLUE);  tft.setTextSize(2);
  tft.println("RCL-RADIO.RU");
  tft.println();
  tft.setTextColor(ILI9341_GREEN);  tft.setTextSize(3);
  tft.println("RCL-RADIO.RU");
  tft.println();
  tft.setTextColor(ILI9341_WHITE);  tft.setTextSize(4);
  tft.println("RCL-RADIO.RU");
  tft.println();
 
  tft.fillRect(0,150,150,180,ILI9341_BLACK);
  tft.setTextSize(1);
 
  tft.setTextColor(ILI9341_WHITE); 
  tft.setCursor(0, 150);
  tft.print(i++);
 
  delay(10);
}

Комментарии

  • enot:

    Ошибка компиляции для платы Generic STM32F103C series.

    Что может быть?

  • enot:

    Arduino: 1.8.12 (Windows 10), Плата:»Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), Serial, 72Mhz (Normal), Smallest (default)»

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawUnicode(uint16_t, int16_t, int16_t, int16_t)’:

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:142:9: error: ‘textsize’ was not declared in this scope

    if (textsize == 1) drawFastHLine(x, pY, width+gap, textbgcolor);

    ^~~~~~~~

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:142:9: note: suggested alternative: ‘textsize_x’

    if (textsize == 1) drawFastHLine(x, pY, width+gap, textbgcolor);

    ^~~~~~~~

    textsize_x

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:149:11: error: ‘textsize’ was not declared in this scope

    if (textsize==1){

    ^~~~~~~~

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:149:11: note: suggested alternative: ‘textsize_x’

    if (textsize==1){

    ^~~~~~~~

    textsize_x

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:173:7: error: ‘textsize’ was not declared in this scope

    pY+=textsize;

    ^~~~~~~~

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:173:7: note: suggested alternative: ‘textsize_x’

    pY+=textsize;

    ^~~~~~~~

    textsize_x

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:175:20: error: ‘textsize’ was not declared in this scope

    return (width+gap)*textsize; // x +

    ^~~~~~~~

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:175:20: note: suggested alternative: ‘textsize_x’

    return (width+gap)*textsize; // x +

    ^~~~~~~~

    textsize_x

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawCentreString(char*, int16_t, int16_t, int16_t)’:

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:249:15: error: ‘textsize’ was not declared in this scope

    len = len*textsize;

    ^~~~~~~~

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:249:15: note: suggested alternative: ‘textsize_x’

    len = len*textsize;

    ^~~~~~~~

    textsize_x

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawRightString(char*, int16_t, int16_t, int16_t)’:

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:300:15: error: ‘textsize’ was not declared in this scope

    len = len*textsize;

    ^~~~~~~~

    C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:300:15: note: suggested alternative: ‘textsize_x’

    len = len*textsize;

    ^~~~~~~~

    textsize_x

    Несколько библиотек найдено для «Adafruit_ILI9341_STM.h»
    Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_ILI9341_STM
    Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_ILI9341_STM
    Несколько библиотек найдено для «Adafruit_I2CDevice.h»
    Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_BusIO
    Не используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_BusIO-master
    Несколько библиотек найдено для «Wire.h»
    Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Wire
    Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\WireSlave
    Не используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\WireSlave
    Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Wire
    Несколько библиотек найдено для «SPI.h»
    Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\SPI
    Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\SPI
    Несколько библиотек найдено для «Adafruit_GFX_AS.h»
    Используется: C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_GFX_AS
    Не используется: C:\Users\propaynepropaev\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS
    exit status 1
    Ошибка компиляции для платы Generic STM32F103C series.

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    «Показать подробный вывод во время компиляции»

  • liman28:

    Попробуйте удалить (запаковать в архив) библиотеку C:\Users\propaynepropaev\Documents\Arduino\libraries\Adafruit_ILI9341_STM

    У Вас имеется ряд конфликтов одноименных библиотек Arduino с STM32

  • enot:

    Я уже понял, только вот:Arduino: 1.8.12 (Windows 10), Плата:»Generic STM32F103C series, STM32F103CB (20k RAM. 128k Flash), Serial, 72Mhz (Normal), Smallest (default)»

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawUnicode(uint16_t, int16_t, int16_t, int16_t)’:

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:142:9: error: ‘textsize’ was not declared in this scope

    if (textsize == 1) drawFastHLine(x, pY, width+gap, textbgcolor);

    ^~~~~~~~

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:142:9: note: suggested alternative: ‘textsize_x’

    if (textsize == 1) drawFastHLine(x, pY, width+gap, textbgcolor);

    ^~~~~~~~

    textsize_x

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:149:11: error: ‘textsize’ was not declared in this scope

    if (textsize==1){

    ^~~~~~~~

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:149:11: note: suggested alternative: ‘textsize_x’

    if (textsize==1){

    ^~~~~~~~

    textsize_x

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:173:7: error: ‘textsize’ was not declared in this scope

    pY+=textsize;

    ^~~~~~~~

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:173:7: note: suggested alternative: ‘textsize_x’

    pY+=textsize;

    ^~~~~~~~

    textsize_x

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:175:20: error: ‘textsize’ was not declared in this scope

    return (width+gap)*textsize; // x +

    ^~~~~~~~

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:175:20: note: suggested alternative: ‘textsize_x’

    return (width+gap)*textsize; // x +

    ^~~~~~~~

    textsize_x

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawCentreString(char*, int16_t, int16_t, int16_t)’:

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:249:15: error: ‘textsize’ was not declared in this scope

    len = len*textsize;

    ^~~~~~~~

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:249:15: note: suggested alternative: ‘textsize_x’

    len = len*textsize;

    ^~~~~~~~

    textsize_x

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp: In member function ‘int16_t Adafruit_GFX_AS::drawRightString(char*, int16_t, int16_t, int16_t)’:

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:300:15: error: ‘textsize’ was not declared in this scope

    len = len*textsize;

    ^~~~~~~~

    C:\Program Files (x86)\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\Adafruit_GFX_AS\Adafruit_GFX_AS.cpp:300:15: note: suggested alternative: ‘textsize_x’

    len = len*textsize;

    ^~~~~~~~

    textsize_x

    exit status 1
    Ошибка компиляции для платы Generic STM32F103C series.
    Возникла ошибка при загрузке http://dan.drown.org/stm32duino/package_stm32duino_index.json

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    «Показать подробный вывод во время компиляции»

  • liman28:

    Adafruit_GFX у меня используется из библиотек арудино, уставите библиотеку https://rcl-radio.ru/wp-content/uploads/2020/06/Adafruit_GFX.zip

  • enot:

    Кажется победили. Компиляция прошла успешно. Завтра попробую дисплейчик подключить.
    У меня не такой, нужно с пинами разбираться.Большое благодарю!

  • enot:

    У меня дисплейчик (2.4″tft lcd shield)оказался на SPFD5408 хотя на пакете китаец указал ILI9341.Их можно как-то подружить?

  • enot:

    Эвон оно как,спасибо.

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Таймер работы дворников автомобиля

    На микросхеме NE555 можно собрать простой таймер для дворников на четыре положения в 3, 6, 10 и 15 секунд на один цикл работы. Период работы таймера управляющего работой дворников можно изменить, изменив сопротивления резисторов R2…R5. Литература: Функциональные аналоговые интегральные микросхемы В.Л.Шило 1982гПодробнее...
  • УМЗЧ на TDA7831 4 × 25W Quad

    УМЗЧ на TDA7831 4 × 25W Quad

    Ниже приведена схема четырех канального усилителя (усилитель с 4 входами и 4 выходами) на TDA7381. Этот усилитель предназначен для  звуко-воспроизвидения в автомобиле, но  может также использоваться и для других целей. Эта схема имеет простую схему и легка в повторении. О TDA7381: TDA7381 — аудио усилитель мощности класс Б, специально разработан …Подробнее...
  • Радио на Si4703 (Arduino)

    Радио на Si4703 (Arduino)

    Модуль Si4703 представляет собой FM-радиоприёмник (УКВ от 76 МГц до 108 МГц) с цифровым управлением (I2C) и функцией RDS. Так же модуль содержит маломощный усилитель мощности звуковой частоты TPA6111A2, позволяющий подключать наушники к модулю используя разъем 3,5 мм, при этом подключенные наушники используются в качестве антенны. Используя платформу Arduino можно …Подробнее...
  • УСТРОЙСТВО ПЛАВНОГО ПЕРЕКЛЮЧЕНИЯ ЕЛОЧНОЙ ГИРЛЯНДЫ

    Устройство предназначено для плавного переключения, сетевой елочной гирлянды с частотой 0,2…2 Гц. Яркость свечения ламп можно регулировать. Устройство рассчитано на подключение гирлянды напряжением 220 В, мощностью не более 100 Вт. Принципиальная схема устройства переключения изображена на рисунке. Частотой переключения управляет мультивибратор, собранный на элементах DD1.3, DD1.4. Сдвиг момента открывания тиристора …Подробнее...
  • Преобразователь напряжения для питания газоразрядных индикаторов

    Для питания газоразрядных индикаторов (типа ИН) необходимо постоянное или пульсирующее напряжение 100…200В. Схема преобразователя показана на рисунке. На элементах DD1.1 DD1.2 собран генератор импульсов частотой 5…8кГц и скважностью 9…10, на DD1.3 собран буферный каскад. Когда на выходе DD1.3 появляется напряжение высокого уровня VT1 открывается и через L1 течет ток. В …Подробнее...