Помогите новичку с TFT 128х128 SPI ST7735

aspid
Offline
Зарегистрирован: 21.05.2017

Помогите разобраться с кодом. Есть Arduino Nano и 1.8 " TFT 128х128 SPI ST7735 и датчик DHT-11.

Немогу собразить как вывести данные с датчика на экран. Вот код:

[code]
 //Подключаем библиотеки для работы дисплея
 #include <TFT.h>
 #include <SPI.h>
#include "DHT.h"
 //Определяем пины к которым подключен дисплей
 //Напомню, что пин SCLK подключаем к пину 13,
 // пин SDI (MOSI) к пину 11, если Вы хотите использовать
 // другие пины определите их, раскомментировав код и
 //поставьте свои значения.
 //#define SCLK 13
 //#define MOSI 11
 #define cs   10
 #define dc   8
 #define rst  9
 #define DHTPIN 2     //DHT11 на пине 2
 #define DHTTYPE DHT11   // DHT 11
 
 // Инициализируем дисплей, назовем его TFTscreen
 TFT TFTscreen = TFT(cs, dc, rst);
 DHT dht(DHTPIN, DHTTYPE);
 //Сделаем установки микроконтроллера
 void setup()
 {
   dht.begin();
//Запустим работу дисплея
 TFTscreen.begin();
// Очистим экран дисплея, чтобы убрать случайные
 //артефакты
  TFTscreen.background(0, 0, 0);
 }
 //В основном коде программы вызовем каждую
 //команду для отрисовки элементов
 void loop()
{
  
  delay(2000);
  // Так как у меня дисплей 1,44 дюйма, его размеры
  //124 на 124 пикселя, поэтому я отталкиваюсь
  //от этих размеров
 
  //Сначала установим цвет текста
  TFTscreen.stroke(0, 0, 255);
  //Установим размер текста
  TFTscreen.setTextSize(2);
  //Напишем на экране текст
   TFTscreen.text("TEMPERATURA",10,20);
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  .....................
  .....................
  ??????????
  delay(250);
  }

[/code]

:

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

aspid пишет:

Немогу собразить как вывести данные с датчика на экран. 


Ну, Вы хоть как-то пробовали? Или даже не попытались?

aspid
Offline
Зарегистрирован: 21.05.2017

Все получилось !!! Я разобрался.

Вот код может кому-то поможет:


// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

 #include <SPI.h>
 #include <TFT.h>
 #include <OneWire.h>
 #include <DallasTemperature.h>
 #define ONE_WIRE_BUS 4 // номер пина к которому подключен DS18B20
 OneWire oneWire(ONE_WIRE_BUS);
 DallasTemperature sensors(&oneWire);
 #define cs   10
 #define dc   8
 #define rst  9

 TFT TFTscreen = TFT(cs, dc, rst);

#include "DHT.h"

#define DHTPIN 2     // what digital pin we're connected to

// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
  DHT dht(DHTPIN, DHTTYPE);

void setup() {
  
  Serial.begin(9600);
  Serial.println("DHTxx test!");

  dht.begin();
   // Start up the library DS18B20
  sensors.begin();
  Serial.println("Dallas Temperature IC Control Library Demo");


    // put your setup code here, to run once:
  TFTscreen.begin();
  
  TFTscreen.background(0, 0, 0);
  TFTscreen.setTextSize(3);
  TFTscreen.setCursor(20, 20);
  TFTscreen.print("WEATHER");
  TFTscreen.setCursor(20, 50);
  TFTscreen.print("STATION");
}

void loop() {
  // Wait a few seconds between measurements.

  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  int h = dht.readHumidity();
 
  // Read temperature as Celsius (the default)
  int t = dht.readTemperature();
 
  // Read temperature as Fahrenheit (isFahrenheit = true)
  int f = dht.readTemperature(true);
  
  sensors.requestTemperatures();
  
   // put your main code here, to run repeatedly:
   TFTscreen.stroke(0, 255, 0);
   TFTscreen.setTextSize(2);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
  Serial.println("Failed to read from DHT sensor!");
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
  Serial.print("Temperature for the device 1 (index 0) is: ");
  Serial.println(sensors.getTempCByIndex(0));
  // Read temperature DS18B20 as Celsius
  int T= sensors.getTempCByIndex(0);
 
  TFTscreen.background(0, 0, 0);
  TFTscreen.text("  Vlagnost ",1,2);
  TFTscreen.setCursor(30, 50);
  TFTscreen.setTextSize(5);
  TFTscreen.print(h);
  TFTscreen.print(" %");
  
  delay(5000);
  TFTscreen.background(0, 0, 0);
  TFTscreen.setTextSize(2);
  TFTscreen.text("Temperatyra 1",1,2);
  TFTscreen.setCursor(30, 50);
  TFTscreen.setTextSize(5);
  TFTscreen.print(t);
  TFTscreen.print(" C");
  delay(5000);
  
  TFTscreen.background(0, 0, 0);
  TFTscreen.setTextSize(2);
  TFTscreen.text("Temperatyra 2",1,2);
  TFTscreen.setCursor(30, 50);
  TFTscreen.setTextSize(5);
  TFTscreen.print(T);
  TFTscreen.print(" C");
  delay(5000);

  }

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ЕвгенийП, Вы - волшебник!