Всем привет! Кто может подсказать, ни как не разберусь
Делаю такую штуку, 5 датчиков которые измеряют температуру и выводят на цветной экран.
Все работает, только при обновлении данных экран обновляется
Кто знает как сделать что бы обновлялись только цифры значений?
Спасибо
Код программы
#include <SPI.h> // Подключаем библиотеку для работы с устройством по интерфейсу SPI
#include <Adafruit_GFX.h> // Подключаем библиотеку для работы с текстом и графикой
#include <TFT_ILI9163C.h> // Подключаем библиотеку программных драйверов для работы с дисплеем 1.44 128x128 SPI
#include <microDS18B20.h> // Подключаем библиотеку термодатчика
#define DS_PIN 2 // пин для термометров
// Уникальные адреса датчиков - считать можно в примере address_read
uint8_t s1_addr = {0x28, 0xDB, 0xB4, 0x80, 0xE3, 0xE1, 0x3C, 0x24}; //0x28, 0xAB, 0x58, 0x80, 0xE3, 0xE1, 0x3C, 0x47
uint8_t s2_addr = {0x28, 0x7F, 0x47, 0x80, 0xE3, 0xE1, 0x3C, 0x4C};
uint8_t s3_addr = {0x28, 0x2E, 0xB2, 0x80, 0xE3, 0xE1, 0x3C, 0x21};
uint8_t s4_addr = {0x28, 0x90, 0xA3, 0x80, 0xE3, 0xE1, 0x3C, 0x84};
uint8_t s5_addr = {0x28, 0x3C, 0xF7, 0x80, 0xE3, 0xE1, 0x3C, 0x2F};
MicroDS18B20<DS_PIN, s1_addr> sensor1; // Создаем термометр с адресацией
MicroDS18B20<DS_PIN, s2_addr> sensor2; // Создаем термометр с адресацией
MicroDS18B20<DS_PIN, s3_addr> sensor3; // Создаем термометр с адресацией
MicroDS18B20<DS_PIN, s4_addr> sensor4; // Создаем термометр с адресацией
MicroDS18B20<DS_PIN, s5_addr> sensor5; // Создаем термометр с адресацией
// В следующих 8-и строках опеределяем названия и соответствующие им RGB обозначения цветов, которые будем выводить на дисплей
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define __CS 10 // Определяем пин к которому подключен разъем CS дисплея
#define __DC 9 // Определяем пин к которому подключен разъем A0 дисплея
#define __RES 8 // Определяем пин к которому подключен разъем RESET дисплея
TFT_ILI9163C display = TFT_ILI9163C(__CS, __DC, __RES); // Связываем объект display с библиотекой TFT_ILI9163C и сообщаем библиотеке определенные для работы с дисплеем пины
// Начало функции обработки кириллических символов
String utf8rus(String source) // Функция для конвертации русских символов из кодировки CP1251 в UTF8
{
int i,k;
String target;
unsigned char n;
char m[2] = { ‘0’, ‘\0’ };
k = source.length(); i = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 0xBF){
switch (n) {
case 0xD0: {
n = source[i]; i++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x2F;
break;
}
case 0xD1: {
n = source[i]; i++;
if (n == 0x91) { n = 0xB7; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x6F;
break;
}
}
}
m[0] = n; target = target + String(m);
}
return target;
}
// Конец функции обработки кириллических симоволов
void setup() {
display.begin(); // Иницализируем дисплей
Serial.begin(9600);
}
void loop() {
display.fillScreen(); // Очищаем дисплей перед выводом
display.setTextSize(1); // Определяем размер шрифта
display.setCursor(10,5); // Устанавливаем курсор в левый верхний угол области вывода
display.setTextColor(YELLOW); // Определяем цвет вывода на дисплей
display.print(utf8rus(“Температура ленты”)); // Надпись
display.setTextSize(1); // Определяем размер шрифта
display.setCursor(20,22); // Устанавливаем курсор в левый верхний угол области вывода
display.setTextColor(RED); // Определяем цвет вывода на дисплей
display.print(utf8rus(“Д1”)); // Надпись
display.setTextSize(1); // Определяем размер шрифта
display.setCursor(20,34); // Устанавливаем курсор в левый верхний угол области вывода
display.setTextColor(GREEN); // Определяем цвет вывода на дисплей
display.print(utf8rus(“Д2”)); // Надпись
display.setTextSize(1); // Определяем размер шрифта
display.setCursor(20,46); // Устанавливаем курсор в левый верхний угол области вывода
display.setTextColor(BLUE); // Определяем цвет вывода на дисплей
display.print(utf8rus(“Д3”)); // Надпись
display.setTextSize(1); // Определяем размер шрифта
display.setCursor(20,58); // Устанавливаем курсор в левый верхний угол области вывода
display.setTextColor(MAGENTA); // Определяем цвет вывода на дисплей
display.print(utf8rus(“Д4”)); // Надпись
display.setTextSize(1); // Определяем размер шрифта
display.setCursor(20,70); // Устанавливаем курсор в левый верхний угол области вывода
display.setTextColor(CYAN); // Определяем цвет вывода на дисплей
display.print(utf8rus(“Д5”));
// Надпись
datatemp();
//delay(2000);
temperature();
}
void temperature() {
sensor1.requestTemp(); // Запрашиваем преобразование температуры
sensor2.requestTemp();
sensor3.requestTemp();
sensor4.requestTemp();
sensor5.requestTemp();
delay(5000); // ожидаем результат
Serial.print("1 метр: ");
if (sensor1.readTemp()) Serial.println(sensor1.getTemp());
else Serial.println(“error”);
Serial.print("2 метр: ");
if (sensor2.readTemp()) Serial.println(sensor2.getTemp());
else Serial.println(“error”);
Serial.print("3 метр: ");
if (sensor3.readTemp()) Serial.println(sensor3.getTemp());
else Serial.println(“error”);
Serial.print("4 метр: ");
if (sensor4.readTemp()) Serial.println(sensor4.getTemp());
else Serial.println(“error”);
Serial.print("5 метр: ");
if (sensor5.readTemp()) Serial.println(sensor5.getTemp());
else Serial.println(“error”);
}
//
void datatemp() {
display.setTextSize(1);
display.setCursor(40,22);
display.setTextColor(WHITE);
display.print(sensor1.getTemp());
display.setCursor(73,22);
display.setTextColor(WHITE);
display.print(“\x80\C”);
display.setCursor(40,34);
display.setTextColor(WHITE);
display.print(sensor2.getTemp());
display.setCursor(73,34);
display.setTextColor(WHITE);
display.print(“\x80\C”);
display.setCursor(40,46);
display.setTextColor(WHITE);
display.print(sensor3.getTemp());
display.setCursor(73,46);
display.setTextColor(WHITE);
display.print(“\x80\C”);
display.setCursor(40,58);
display.setTextColor(WHITE);
display.print(sensor4.getTemp());
display.setCursor(73,58);
display.setTextColor(WHITE);
display.print(“\x80\C”);
display.setCursor(40,70);
display.setTextColor(WHITE);
display.print(sensor5.getTemp());
display.setCursor(73,70);
display.setTextColor(WHITE);
display.print(“\x80\C”);
}