Bonjour à tous,
Je suis en cours de réalisation d'un projet assez simple pour upgrade mon imprimante 3D : Un capteur DHT11, relié à ma carte Arduino R3, déclenchant l'allumage d'une LED Verte lorsque la température est inférieure à 50°C dans l'enceinte de l'imprimante, et faisant clignoter une LED rouge, accompagnée d'un Buzzer, et un moteur permettant une ventilation, lorsque la température est supérieure à 50°C. De ce côté, pas de problèmes.
Maintenant, je souhaite afficher la valeur de cette température sur un afficher 7 segments, 4 chiffres (lien du produit ici). Mon afficheur est relié à une puce 74HC595N, qui me permet de limiter le nombre de sorties de l'Arduino à utiliser.
Du côté du câblage, tout est correct, puisque j'arrive à faire fonctionner des programmes classiques, comme le défilement de chiffres.
Mon problème est le suivant : comment faire en sorte que ma température, relevée par mon capteur DHT11, soit affichée sur les 4 caractères à 7 segments ?
Je vous joins le code dans son intégralité, avec toute la partie concernant les LED, le buzzer, et le moteur, même si sur ce point, il fonctionne. J'ai déjà assigné des broches de ma carte aux 3 paramètres de l'afficheur, qui sont "latch", "clock", et "data". Je les ai également assignés en tant que sorties.
// Partie Capteur Température
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Partie Moteur
#define ALLUMER 9
#define DIRA 10
#define DIRB 11
// Partie LED
int LEDR = 3;
int LEDV = 4;
// Partie Buzzer
int BUZZER = 5;
// Partie écran
int latch=7;
int clock=8;
int data =6;
void setup()
{
dht.begin();
pinMode(LEDR,OUTPUT);
pinMode(LEDV,OUTPUT);
pinMode(BUZZER,OUTPUT);
pinMode(ALLUMER,OUTPUT);
pinMode(DIRA,OUTPUT);
pinMode(DIRB,OUTPUT);
pinMode(latch,OUTPUT);
pinMode(clock,OUTPUT);
pinMode(data,OUTPUT);
}
void loop()
{
float t = dht.readTemperature(); // Lecture de la température
if(t>=50) // Si la température est supérieure à 50°C
{
digitalWrite(LEDV,LOW); // Extinction de la LED Verte
digitalWrite(LEDR,HIGH); // Clignotement de la LED Rouge (10 ms/10 ms)
delay(10);
digitalWrite(LEDR,LOW);
delay(10);
digitalWrite(BUZZER,HIGH); // Activation et Extinction du Buzzer (10 ms/10 ms)
delay(10);
digitalWrite(BUZZER,LOW);
delay(10);
delay(1000);
digitalWrite(ALLUMER,HIGH); // Déclenchement de la ventilation
digitalWrite(DIRA,HIGH);
digitalWrite(DIRB,LOW);
digitalWrite(ALLUMER,LOW);
digitalWrite(ALLUMER,HIGH);
digitalWrite(DIRA,LOW);
digitalWrite(DIRB,HIGH);
}
else // Si la température n'est pas supérieure à 50°C
{
digitalWrite(LEDV,HIGH); // Allumage de la LED Verte
delay(1000);
}
}
Ceci étant mon premier post sur ce forum, et n'ayant pas l'habitude de demander de l'aide, je vous prie de m'excuser si des données sont manquantes, et je me tiens à votre disposition pour vous fournir des informations supplémentaires nécessaires à la résolution de mon problème.
En vous remerciant d'avance et en vous souhaitant bon courage dans vos projets.
Clément
