Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
products:laboratory_iot_c:exp49 [2024/12/13 13:33] – создано labuser30 | products:laboratory_iot_c:exp49 [2024/12/13 15:23] (текущий) – [Программный код эксперимента] labuser30 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ==== Программный код эксперимента ==== | + | ===== Эксперимент |
- | <file python Exp49.py[enable_line_numbers=" | + | Попробуем создать первое полезное устройство с использованием TFT дисплея. Пусть это будет простой секундомер. На дисплее будут отображаться часы, минуты и секунды, которые будет отсчитывать секундомер. Также снабдим его кнопкой по нажатию на которую, |
- | from machine import Pin, SPI | + | |
- | from tft import TFT_GREEN | + | |
- | import font | + | |
- | import time | + | |
- | _init() | + | |
- | machine.freq(160000000) | + | |
+ | Картинка с изображением секундомера | ||
+ | <WRAP center round download 60%> | ||
+ | {{ : | ||
+ | </ | ||
+ | Ее нужно загрузить во внутреннюю память микроконтроллера | ||
- | dc | + | ==== Схема эксперимента ==== |
- | cs | + | |
- | rst = Pin(5, Pin.OUT) | + | |
- | spi = SPI(1, baudrate=40000000, | + | {{ : |
- | tft = TFT_GREEN(128, | + | // |
- | tft.initr(tft.BGR) # tft.initr(tft.RGB) #Если вместо синего цвета | + | {{ : |
- | tft.clear(tft.rgbcolor(255, | + | //Рисунок 2. Монтажная схема эксперимента для дисплея с 11 выводами// |
- | tft.draw_bmp(0, | + | ==== Программный код эксперимента ==== |
- | fontcolor = tft.rgbcolor(39,40,51) | + | <file arduino Exp49.ino[enable_line_numbers=" |
+ | #include < | ||
+ | #include < | ||
+ | #include " | ||
- | tft.text(5, 125, ' | + | #define PIN_CS |
- | tft.text(41, 125, ":", | + | #define PIN_DC |
- | tft.text(55, 125, '00', font.terminalfont, fontcolor, 3) | + | #define PIN_RST 5 |
- | tft.text(90, 130, ":" | + | |
- | tft.text(98, 132, ' | + | Adafruit_ST7735 |
+ | LittleFS_ImageReader reader; | ||
+ | |||
+ | void setup() { | ||
+ | os_update_cpu_frequency(160); | ||
+ | LittleFS.begin(); | ||
+ | tft.initR(INITR_BLACKTAB); | ||
+ | tft.setRotation(2); | ||
+ | |||
+ | tft.fillScreen(tft.color565(255, 251, 240)); | ||
+ | reader.drawBMP("/time.bmp", | ||
+ | |||
+ | tft.setTextColor(tft.color565(39, 40, 51)); | ||
+ | tft.setTextSize(3); | ||
+ | tft.setCursor(8, 125); | ||
+ | tft.print(" | ||
+ | tft.setCursor(41, 125); | ||
+ | tft.print(":" | ||
+ | tft.setCursor(55, 125); | ||
+ | tft.print(" | ||
+ | tft.setTextSize(2); | ||
+ | tft.setCursor(88, 132); | ||
+ | tft.print(":" | ||
+ | tft.setCursor(98, 132); | ||
+ | tft.print(" | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | } | ||
</ | </ | ||
Этот код выводит интерфейс секундомера. | Этот код выводит интерфейс секундомера. | ||
- | Этой строкой мы переключаем | + | Задаем |
- | < | + | < |
- | machine.freq(160000000) | + | #define PIN_CS |
+ | #define PIN_DC | ||
+ | #define PIN_RST 5 | ||
</ | </ | ||
- | Настройка выводов | + | Cоздаем объекты |
- | < | + | < |
- | dc | + | Adafruit_ST7735 tft = Adafruit_ST7735(PIN_CS, |
- | cs = Pin(2, Pin.OUT) | + | LittleFS_ImageReader reader; |
- | rst = Pin(5, Pin.OUT) | + | |
</ | </ | ||
- | Настраиваем аппаратный | + | Этой |
- | < | + | < |
- | spi = SPI(1, baudrate=40000000, | + | |
- | tft = TFT_GREEN(128, | + | |
</ | </ | ||
- | Инициализируем дисплей, | + | Инициализируем |
- | < | + | заливаем его фоновым цветом и отображаем картинку с секундомером. |
- | tft.initr(tft.BGR) # tft.initr(tft.RGB) #Если вместо синего цвета отображается красный, | + | < |
- | tft.clear(tft.rgbcolor(255, | + | |
- | tft.draw_bmp(0, | + | tft.initR(INITR_BLACKTAB); |
+ | tft.setRotation(2); | ||
</ | </ | ||
- | Объявляем переменную с цветом | + | Закрашиваем дисплей RBG цветом, получая нужное значение с помощью метода '' |
- | < | + | < |
- | fontcolor = tft.rgbcolor(39,40,51) | + | tft.fillScreen(tft.color565(255, 251, 240)); |
+ | tft.draw_bmp(0, | ||
</ | </ | ||
- | Отображаем | + | Задаем |
- | < | + | < |
- | tft.text(5, 125, ' | + | tft.setTextColor(tft.color565(39, 40, 51)); |
+ | tft.setTextSize(3); | ||
</ | </ | ||
- | Отображаем | + | Отображаем часы, |
- | < | + | < |
- | tft.text(41, 125, ":" | + | tft.setCursor(8, 125); |
+ | tft.print(" | ||
+ | tft.setCursor(41, 125); | ||
+ | tft.print(":" | ||
+ | tft.setCursor(55, 125); | ||
+ | tft.print(" | ||
</ | </ | ||
- | Подобным образом отображаем | + | Уменьшаем размер шрифта, |
- | < | + | < |
- | tft.text(55, 125, ' | + | tft.setTextSize(2); |
- | tft.text(90, 130, ":" | + | tft.setCursor(88, 132); |
- | tft.text(98, 132, ' | + | tft.print(":" |
+ | tft.setCursor(98, 132); | ||
+ | tft.print(" | ||
+ | } | ||
</ | </ | ||