Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp70 [2020/06/15 17:39] – [Программный код эксперимента] labuser29 | products:laboratory_iot:exp70 [2024/12/17 18:15] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 17: | Строка 17: | ||
| {{ : | {{ : | ||
| - | // | + | // |
| + | {{ : | ||
| + | // | ||
| ==== Программный код эксперимента ==== | ==== Программный код эксперимента ==== | ||
| Строка 40: | Строка 42: | ||
| spi = SPI(1, baudrate=40000000, | spi = SPI(1, baudrate=40000000, | ||
| tft = TFT_GREEN(128, | tft = TFT_GREEN(128, | ||
| - | tft.initr() | + | tft.initr(tft.BGR) # tft.initr(tft.RGB) #Если вместо синего цвета отображается красный, |
| Строка 98: | Строка 100: | ||
| </ | </ | ||
| - | В этой программе мы сосредоточились на создании GUI — графического интерфейса пользователя, | + | В этой программе мы сосредоточились на создании GUI — графического интерфейса пользователя, |
| Первым делом извлекаем из структуры нужные нам данные. А именно: | Первым делом извлекаем из структуры нужные нам данные. А именно: | ||
| Название города записываем в переменную wCity | Название города записываем в переменную wCity | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| wCity = data[' | wCity = data[' | ||
| </ | </ | ||
| Текущую температуру записываем в переменную wTemp | Текущую температуру записываем в переменную wTemp | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| wTemp = round(data[' | wTemp = round(data[' | ||
| </ | </ | ||
| Ощущение температуры записываем в переменную wTempFeels. (например из-за ветра или влажности температура может ощущаться человеком как более низкая, | Ощущение температуры записываем в переменную wTempFeels. (например из-за ветра или влажности температура может ощущаться человеком как более низкая, | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| wTempFeels = data[' | wTempFeels = data[' | ||
| </ | </ | ||
| Влажность в % записываем в переменную wHumidity | Влажность в % записываем в переменную wHumidity | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| wHumidity = data[' | wHumidity = data[' | ||
| </ | </ | ||
| Скорость ветра в метрах в секунду записываем в переменную wWind | Скорость ветра в метрах в секунду записываем в переменную wWind | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| wWind = data[' | wWind = data[' | ||
| </ | </ | ||
| Текущее время суток записываем в переменную pod. Если сейчас день, то в ней будет значение d, а если ночь — n. Эти данные нам понадобятся для выбора правильной иконки погоды. Например, | Текущее время суток записываем в переменную pod. Если сейчас день, то в ней будет значение d, а если ночь — n. Эти данные нам понадобятся для выбора правильной иконки погоды. Например, | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| pod = data[' | pod = data[' | ||
| </ | </ | ||
| Сервис weatherbit.io среди прочих данных о погоде сообщает код текущей погоды. Это коды, которые используются именно этим сервисом. По ним можно понять какую иконку погоды нужно отобразить. [[https:// | Сервис weatherbit.io среди прочих данных о погоде сообщает код текущей погоды. Это коды, которые используются именно этим сервисом. По ним можно понять какую иконку погоды нужно отобразить. [[https:// | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| wCode = int(data[' | wCode = int(data[' | ||
| </ | </ | ||
| - | Сервис поддерживает очень большое количество иконок у нас столько нет. У нас всего 18 погодных иконок— 9 дневных и 9 ночных. Поэтому нам нужно настроить соответствие кодов из сервиса нашим иконкам. Например несколько видов дождя, которые обозначаются разными кодами, | + | Сервис поддерживает очень большое количество иконок у нас столько нет. У нас всего 18 погодных иконок — 9 дневных и 9 ночных. Поэтому нам нужно настроить соответствие кодов из сервиса нашим иконкам. Например несколько видов дождя, которые обозначаются разными кодами, |
| - | <code python> | + | <code python[enable_line_numbers=" |
| if wCode <= 233: | if wCode <= 233: | ||
| wPic = ' | wPic = ' | ||
| Строка 161: | Строка 163: | ||
| Для отображения иконки термометра на дисплее нужно определить положительная сейчас температура или отрицательная. Если температура ниже нуля, то будем отображать " | Для отображения иконки термометра на дисплее нужно определить положительная сейчас температура или отрицательная. Если температура ниже нуля, то будем отображать " | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| if (wTemp > 0): | if (wTemp > 0): | ||
| wTempPic = ' | wTempPic = ' | ||
| Строка 169: | Строка 171: | ||
| Определяем цвета для шрифтов. Один из них будет использоваться для отображения названия города и температуры, | Определяем цвета для шрифтов. Один из них будет использоваться для отображения названия города и температуры, | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| FontColor = tft.rgbcolor(33, | FontColor = tft.rgbcolor(33, | ||
| FontColor2 = tft.rgbcolor(8, | FontColor2 = tft.rgbcolor(8, | ||
| Строка 175: | Строка 177: | ||
| Закрашиваем весь дисплей белым | Закрашиваем весь дисплей белым | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| tft.clear(tft.rgbcolor(255, | tft.clear(tft.rgbcolor(255, | ||
| </ | </ | ||
| Строка 181: | Строка 183: | ||
| Выводим на дисплей название города | Выводим на дисплей название города | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| tft.text(1, | tft.text(1, | ||
| </ | </ | ||
| Рисуем иконки: | Рисуем иконки: | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| tft.draw_bmp(34, | tft.draw_bmp(34, | ||
| tft.draw_bmp(5, | tft.draw_bmp(5, | ||
| Строка 192: | Строка 194: | ||
| Выводим текущую температуру | Выводим текущую температуру | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| tft.text(30, | tft.text(30, | ||
| </ | </ | ||
| Выводим дополнительные данные: | Выводим дополнительные данные: | ||
| - | <code python> | + | <code python[enable_line_numbers=" |
| tft.text(5, | tft.text(5, | ||
| tft.text(5, | tft.text(5, | ||
| tft.text(5, | tft.text(5, | ||
| </ | </ | ||