Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp46 [2024/11/30 20:23] – [Эксперимент 46. Подключаем TFT дисплей] labuser30products:laboratory_iot_c:exp46 [2024/12/07 17:50] (текущий) – [Программный код эксперимента] labuser30
Строка 7: Строка 7:
 </WRAP> </WRAP>
  
-Управление матрицей кристаллов берет на себя встроенный в дисплей контроллер. А мы будем управлять этим контроллером. Для этого нам потребуется специальная библиотека. Установите библиотеку "Adafruit ST7735 and ST7789" +Управление матрицей кристаллов берет на себя встроенный в дисплей контроллер. А мы будем управлять этим контроллером. Для этого нам потребуется специальная библиотека. Установите библиотеку "Adafruit ST7735 and ST7789" как мы уже делали ранее. После нажатия кнопки "Установка" появится окно "Установите зависимости библиотек" с предложением установить необходимые зависимости. Нужно нажать "Установить все".  
  
 {{ :products:laboratory_iot_c:arduino_ide_exp46_1.png?nolink |}} {{ :products:laboratory_iot_c:arduino_ide_exp46_1.png?nolink |}}
- 
-Как и в прошлый раз, в архиве находятся два варианта файлов — в виде исходный текстов (в папке py) и предварительно откомпилированные (в папке mpy). Мы рекомендуем загружать в микроконтроллер откомпилированные версии файлов, а файлы в исходных кодах использовать только для самостоятельного изучения. 
  
 Для обмена данными с дисплеем используется шина SPI. SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом. Для обмена данными с дисплеем используется шина SPI. SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.
Строка 33: Строка 31:
 Напишем приветственную надпись на дисплее.  Напишем приветственную надпись на дисплее. 
  
-<file python Exp46.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<file arduino Exp46.ino[enable_line_numbers="2", start_line_numbers_at="1"]> 
-from machine import Pin, SPI +#include <SPI.h> 
-from tft import TFT_GREEN +#include <Adafruit_ST7735.h> 
-import font +
-_init()+
  
-dc  = Pin(4, Pin.OUT)  +#define PIN_CS  2 
-cs  = Pin(2, Pin.OUT) +#define PIN_DC  4 
-rst = Pin(5, Pin.OUT)+#define PIN_RST 5
  
-spi SPI(1baudrate=40000000polarity=0, phase=0)+Adafruit_ST7735 tft Adafruit_ST7735(PIN_CS PIN_DCPIN_RST);
  
-tft = TFT_GREEN(128160, spi, dc, cs, rst, rotate=0)+void setup() { 
 +  tft.initR(INITR_BLACKTAB); 
 +  tft.setRotation(2);  
 +  tft.fillScreen(ST77XX_BLACK); 
 +  tft.setCursor(0, 0)
 +  tft.setTextColor(ST77XX_WHITE); 
 +  tft.print("Hello world!"); 
 +}
  
-tft.initr() +void loop() { 
- +}
-tft.clear(tft.rgbcolor(0,0, 0)) +
-tft.text(0,0,"Hello, World!", font.terminalfont, tft.rgbcolor(255, 255, 255), 1)+
 </file> </file>
  
 Подключаем библиотеки для работы в портами ввода-вывода, шиной SPI, дисплеем и шрифт. Подключаем библиотеки для работы в портами ввода-вывода, шиной SPI, дисплеем и шрифт.
-<code python[enable_line_numbers="2", start_line_numbers_at="1"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="1"]> 
-from machine import Pin, SPI +#include <SPI.h> 
-from tft import TFT_GREEN +#include <Adafruit_ST7735.h> 
-import font+
 </code> </code>
  
-TFT дисплей не имеет встроенного знакогенератора, он ничего не знает о буквах и о том как они выглядят. Дисплей — это просто большой массив точек, которые могут светиться различным цветом. Чтобы иметь возможность выводить на дисплей текст, нужно описать какие точки светятся, а какие нет в каждом из символов. Именно эти данные и находятся в файле шрифта ''font''.+TFT дисплей не имеет встроенного знакогенератора, он ничего не знает о буквах и о том как они выглядят. Дисплей — это просто большой массив точек, которые могут светиться различным цветом. .
  
 Настраиваем выводы, используемые для дисплея Настраиваем выводы, используемые для дисплея
-<code python[enable_line_numbers="2", start_line_numbers_at="6"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="4"]> 
-dc  = Pin(4, Pin.OUT)  +#define PIN_CS  2 
-cs  = Pin(2, Pin.OUT) +#define PIN_DC  4 
-rst = Pin(5, Pin.OUT)+#define PIN_RST 5
 </code> </code>
  
-Настраиваем шину SPI. Объявляем скорость шины и ее параметры+Создаем объект дисплея и задаем какие выводы микроконтроллера используются для управления
-<code python[enable_line_numbers="2", start_line_numbers_at="10"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="8"]> 
-spi SPI(1baudrate=40000000polarity=0, phase=0)+Adafruit_ST7735 tft Adafruit_ST7735(PIN_CS PIN_DCPIN_RST);
 </code> </code>
  
-Создаем объект дисплея и задаем его параметры, такие как ширина и высота дисплея в пикселях и какие выводы микроконтроллера используются для управления. +Вызываем функцию инициализации дисплея. Прежде чем мы сможем работать с дисплеем, мы должны настроить встроенный в него контроллер. Это делает функция инициализации.  
-<code python[enable_line_numbers="2", start_line_numbers_at="112"]> +<code python[enable_line_numbers="2", start_line_numbers_at="11"]> 
-tft = TFT_GREEN(128, 160, spi, dc, cs, rst, rotate=0)+  tft.initR(INITR_BLACKTAB);
 </code> </code>
  
-Вызываем функцию инициализации дисплея. Прежде чем мы сможем работать с дисплеем, мы должны настроить встроенный в него контроллер. Это делает функция инициализации. +Переворачиваем изображение. Если этого не сделать, изображение на дисплее для нас буде "верх ногами"
-<code python[enable_line_numbers="2", start_line_numbers_at="14"]> +<code python[enable_line_numbers="2", start_line_numbers_at="12"]> 
-tft.initr()+  tft.setRotation(2);
 </code> </code>
  
-Когда дисплей инициализирован мы можем управлять изображением на нем. Сначала закрасим его черным цветом, а потом напишем текст. +Когда дисплей инициализирован мы можем управлять изображением на нем. Сначала закрасим его черным цветом, установим курсор в координаты 0,0, зададим цвет текста — белый, и выведем текст.   
-<code python[enable_line_numbers="2", start_line_numbers_at="16"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="13"]> 
-tft.clear(tft.rgbcolor(0, 0, 0))  +  tft.fillScreen(ST77XX_BLACK); 
-tft.text(0,0,"Hello, World!", font.terminalfont, tft.rgbcolor(255, 255, 255), 1)+  tft.setCursor(0, 0)
 +  tft.setTextColor(ST77XX_WHITE); 
 +  tft.print("Hello world!");
 </code> </code>
- 
-Как мы уже знаем из [[products:laboratory_iot:exp11|эксперимента с RGB светодиодом]] любой цвет можно отобразить с помощью трех составляющих: красного, зеленого и синего. Для задания цвета мы используем ''tft.rgbcolor(0, 0, 0)''. В качестве параметров передаем соответственно красный, зеленый, синий. Если все нули, никакой цвет не светится — это черный.  
- 
-Для вывода текста используем метод ''tft.text''. Параметры: 
-  * координата X 
-  * координата Y 
-  * строка для отображения 
-  * шрифт 
-  * цвет шрифта 
-  * размер шрифты 
  
 Координата 0,0 находится в верхнем левом углу. Максимальная — в нижнем правом. Координата 0,0 находится в верхнем левом углу. Максимальная — в нижнем правом.