3 термопары и tft дисплей SPI ILI9225 к шине SPI

Это тупиковый подход.
Нужно не “как можно точнее”, а “с приемлемой точностью и за приемлемое время”.

Ну вот вроде все заработало.
Осталось :
1)добавить команду очистки определенных ячеек перед печатью данных а то при снижении к примеру скорости с 12 км/ч до 8 км/ч вместо 8 км/ч пишет 82км/ч.
2) И понять почему .С утра включив в гараже плату сразу отобразилась дата 2000 год число и месяц не помню странно ведь перед печатью даты я использую команду if (gps.date.isValid()) (проверка являются ли данные даты верные ) и далее в программе если не верны то печать “–”

#include <TinyGPSPlus.h>  //Библиотека GPS модуля

TinyGPSPlus gps;  //Создаём объект gps класса TinyGPSPlus.

int hour;     // обЪявление переменной час
int GMT = 5;  // обЪявление переменной часовой пояс

//  Подключения дисплея
#include <Wire.h>                    // библиот для общения по I2C
#include <LiquidCrystal_I2C.h>       // библиот работы с символьным жк-дисплеем  по I2C
LiquidCrystal_I2C lcd(0x27, 20, 4);  // Устанавливаем характеристики дисплея

void setup() {
  Serial.begin(9600);  //задаем скорость общения по USB


  lcd.init();       // инициализация ЖК дисплея
  lcd.backlight();  // Включаем подсветку дисплея
  // Печатаем оформление на  дисплее то что не меняется
  lcd.clear();  //
  lcd.print("Date");
  lcd.setCursor(0, 1);
  lcd.print("clock");
  lcd.setCursor(0, 2);
  lcd.print("spyt=");
  lcd.setCursor(9, 2);
  lcd.print("<=");
  lcd.setCursor(0, 3);
  lcd.print("H=");
  lcd.setCursor(9, 3);
  lcd.print("skor=");
  delay(1000);
}
void loop() {
  // This sketch displays information every time a new sentence is correctly encoded.

  while (Serial.available() > 0) {    // ПРОВЕРКА ЕСТЬ ЛИИ ДАННЫЕ в порте
    if (gps.encode(Serial.read())) {  // команда библиотеки TinyGPSPlus.h ОБРАБОТКА ДАННЫХ ИЗВЛЕЧЕНИЕ нужной информации


      // Дата печать
      if (gps.date.isValid()) {
        lcd.setCursor(6, 0);                      // Устанавливаем курсор на 5 строку и 1.
        if (gps.date.day() < 10) lcd.print("0");  //печать 0 перед днем если меньше 10
        lcd.print(gps.date.day());                // печать день
        lcd.print(F("/"));
        if (gps.date.month() < 10) lcd.print(F("0"));  //печать 0 перед месяцом если меньше 10
        lcd.print(gps.date.month());                   // печать месяц
        lcd.print(F("/"));
        lcd.print(gps.date.year());  // печать год
      } else {
        lcd.setCursor(6, 0);
        lcd.print(F("--"));
      }
      // время
      if (gps.time.isValid()) {
        lcd.setCursor(7, 1);              // Устанавливаем курсор на 5 строку и 1.
        hour = gps.time.hour() + GMT;     // расчет переменной час с учетом часового пояса
        if (hour > 23) hour = hour - 24;  // Вычитаем 24 когда часы переходят за 23 часа
        if (hour < 10) lcd.print("0");    //печать 0 перед часом если меньше 10
        lcd.print(hour);                  // печать часа
        lcd.print(F(":"));
        if (gps.time.minute() < 10) lcd.print(F("0"));  //печать 0 перед часом если меньше 10
        lcd.print(gps.time.minute());                   // печать  минут
        lcd.print(F(":"));
        if (gps.time.second() < 10) lcd.print(F("0"));  //печать 0 перед часом если меньше 10
        lcd.print(gps.time.second());                   // печать  минут

      } else {
        lcd.setCursor(7, 1);
        lcd.print(F("--"));
      }
      //кол-чество спутн
      if (gps.satellites.isValid()) {
        lcd.setCursor(5, 2);
        lcd.print(gps.satellites.value());
      } else {
        lcd.setCursor(5, 2);
        lcd.print(F("--"));
      }
      //Высота
      if (gps.altitude.isValid()) {
        lcd.setCursor(2, 3);
        lcd.print(gps.altitude.meters(), 1);
      } else {
        lcd.setCursor(2, 3);
        lcd.print(F("--"));
      }
      //Угол направления
      if (gps.course.isValid()) {
        lcd.setCursor(12, 2);
        lcd.print(gps.course.deg(), 1);
      } else {
        lcd.setCursor(12, 2);
        lcd.print(F("--"));
      }
      //Скорость
      if (gps.speed.isValid()) {
        lcd.setCursor(14, 3);
        lcd.print(gps.speed.kmph(), 0);
      } else {
        lcd.setCursor(14, 3);
        lcd.print(F("--"));
      }
    }
  }
}

1 после 100 строки надо вывести 2 пробела на экран
2 думаю надо ориентироваться на валидность времени, а не даты

1 Прикольно оказывается так просто, а я уже думал как использовать команду lcd.clear(); с выбором очистки определенных ячеек.
2.То-есть проверять только if (gps.time.isValid()) и после печатать сразу дату и время, а команду (gps.date.isValid()) вобще не использовать правильно?

ага, только задержки изменения скорости от этого только вырастут

Это точно работает?

Да, чудес ведь не бывает