Bonjour,
je souhaite utiliser un uno pour piloter un ventilateur avec un capteur DHT22 et un écran 1.8 TFT SPI.
J'ai trouvé mon bonheur dans la personne de Ookpik, mais l'écran utilisé est un ST7735 1.8 TFT, donc je n'ai rien qui s'affiche sur l'écran. (normal) Son tuto date de 2016 et il ne réponds plus malheureusement.
Voici le code utilisé sans la modification de l'écran. (je n'y arrive pas, avec la doc de l'écran j'arrive à écrire des choses mais pas à mettre les informations de la sonde DHT22).
Si quelqu'un pouvait m'aider ?
Documentation écran : Guide to 1.8 TFT Display with Arduino | Random Nerd Tutorials
LED/SCK/SDA/AO/RESET/CS/GND/VCC
3.3v/13/11/10/9/8/GND/5V
/*
Hygrométrie et température
Contrôle de ventilation/chauffage (fonction thermostat)
Librairies à télécharger et à décompresser dans le répertoire arduino/libraries :
*Librairie Adafruit pour le DHT22 https://github.com/adafruit/DHT-sensor-library
*Librairie Adafruit pour l'afficheur TFT 1.8" https://github.com/adafruit/Adafruit-ST7735-Library/archive/master.zip
*Librairie Adafruit pour la gestion des opérations graphiques https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip
Pour utiliser la fonction "radiateur" (second relai IN2, pin Arduino #3), décommentez toutes les lignes correspondantes pour activer la fonction.
Écrit par Ookpik (www.epingle.info) - 2016-02-06
*/
#include "DHT.h"
#include <Adafruit_GFX.h> // Bibliothèque graphique de base
#include <Adafruit_ST7735.h> // bibliothèque spécifique à la puce ST7735
#include <SPI.h>
#include "Wire.h"
// Définition des pin SainSmart
#define sclk 13 // SainSmart: SCL
#define mosi 11 // SainSmart: SDA
#define cs 10 // SainSmart: CS
#define dc 9 // SainSmart: RS/DC
#define rst 8 // SainSmart: RES // peut être connecté a la RAZ arduino
Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst);
// Définition des pin DHT22
// Pin 1 (a gauche) +5V
// Pin 2 data DHTPIN -> pin 4 Arduino
// Placer une résistance de 10K entre les Pins 1 et 2
// Pin 4 Masse
#define DHTPIN 4
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE);
// Définition des consignes :
const int intTimePause = 3000; // Actualisation des valeurs toutes les 3 secondes
int relai_humi = 7; // Relier le pin IN1 du relai au pin 7 de l'Arduino
int cons_humi = 53; // Consigne d'humidité
int relai_temp = 3; // Si installation d'un radiateur, relier le pin IN2 du relai au pin 3 de l'Arduino
int cons_temp = 20; // Consigne température
void setup(void) {
Serial.begin(9600);
Serial.print("Hello! ST7735 TFT Test");
Serial.println("DHTxx test!");
pinMode (relai_humi,OUTPUT);
//pinMode (relai_temp,OUTPUT); // À décommenter pour activer le relai radiateur
Serial.begin(9600);
// Utilisez ce code pour un 1.8" TFT
tft.initR(INITR_BLACKTAB); // initialise le ST7735S chip, black tab
// Utilisez ce code pour un 1.44" TFT
//tft.initR(INITR_144GREENTAB); // initialise le ST7735S chip, black tab
Serial.println("Initialized");
tft.setRotation(45);
uint16_t time = millis();
tft.fillScreen(ST7735_BLACK);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
// Paramètres de l'affichage
tft.setTextSize(2);
tft.setCursor(10, 10);
tft.setTextColor(ST7735_MAGENTA);
tft.print("Temperature ");
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(2);
tft.setCursor(30, 30);
tft.fillRect (0,30,100,20,0x0000);
tft.print(t);
tft.print("C");
tft.setTextSize(2);
tft.setTextColor(ST7735_YELLOW);
tft.setCursor(20,60);
tft.print("Humidite");
tft.setCursor(30,80);
tft.setTextColor(ST7735_CYAN);
tft.fillRect (0,80,100,20,0x0000);
tft.print(h);
tft.print("%");
tft.setTextSize(1);
tft.setTextColor(ST7735_GREEN);
tft.setCursor(30,110);
tft.print("Salle de bain");
// Affichage sur moniteur série Arduino ou par BlueTooth
Serial.print ("Humidité : ");
Serial.println (h);
Serial.print ("Température : ");
Serial.println (t);
Serial.println(" ");
if (digitalRead(relai_humi)==HIGH)
{
Serial.println ("Ventilateur arret");
}
else
{
Serial.println ("Ventilateur en marche");
}
Serial.println(" ");
if (digitalRead(relai_temp)==HIGH)
{
Serial.println ("Chauffage en marche");
}
else
{
Serial.println ("Chauffage arret");
Serial.println(" ");
}
Serial.println(" ");
Serial.println(" ");
// Commande des relais
// Humidité : mise en marche/arrêt de la ventilation
if (h >= (cons_humi + 2.00)) // Si la mesure h est > ou + à la consigne +2.00 : allumage extracteur
{
digitalWrite (relai_humi,LOW); // Si la mesure h est < à la consigne +1.00 : arrêt extracteur
}
else
if (h < (cons_humi - 1))
{
digitalWrite (relai_humi,HIGH);
}
delay (intTimePause);
// Température : mise en marche/arrêt du radiateur // Décommenter toutes les lignes ci dessous
//if (t >= (cons_temp + 2)) // Si la mesure t est > ou = à la consigne +2.00 : allumage chauffage
//{
// digitalWrite (relai_temp,LOW);
//}
//else
//if (t < (cons_temp - 1)) // Si la mesure t est < à la consigne -1.00 : arrêt chauffage
//{
// digitalWrite (relai_temp,HIGH);
//}
//delay (intTimePause);
//}
}