Различия

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

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

Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp46 [2024/11/30 19:31] – создано labuser30products:laboratory_iot_c:exp46 [2024/12/07 17:50] (текущий) – [Программный код эксперимента] labuser30
Строка 7: Строка 7:
 </WRAP> </WRAP>
  
-Управление матрицей кристаллов берет на себя встроенный в дисплей контроллер. А мы будем управлять этим контроллером. Для этого нам потребуется специальная библиотека. Кроме того нам потребуется библиотека со шрифтом, чтобы отображать текст.+Управление матрицей кристаллов берет на себя встроенный в дисплей контроллер. А мы будем управлять этим контроллером. Для этого нам потребуется специальная библиотека. Установите библиотеку "Adafruit ST7735 and ST7789" как мы уже делали ранее. После нажатия кнопки "Установкапоявится окно "Установите зависимости библиотекс предложением установить необходимые зависимости. Нужно нажать становить все" 
  
-<WRAP center round download 60%> +{{ :products:laboratory_iot_c:arduino_ide_exp46_1.png?nolink |}}
-{{ :products:esp-iot:tft.zip |}} +
-</WRAP> +
- +
- +
-Как и в прошлый раз, в архиве находятся два варианта файлов — в виде исходный текстов (в папке py) и предварительно откомпилированные (в папке mpy). Мы рекомендуем загружать в микроконтроллер откомпилированные версии файлов, а файлы в исходных кодах использовать только для самостоятельного изучения.+
  
 Для обмена данными с дисплеем используется шина SPI. SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом. Для обмена данными с дисплеем используется шина SPI. SPI (англ. Serial Peripheral Interface, SPI bus — последовательный периферийный интерфейс, шина SPI) — последовательный синхронный стандарт передачи данных в режиме полного дуплекса, предназначенный для обеспечения простого и недорогого высокоскоростного сопряжения микроконтроллеров и периферии. SPI также иногда называют четырёхпроводным (англ. four-wire) интерфейсом.
Строка 36: Строка 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 находится в верхнем левом углу. Максимальная — в нижнем правом.