Bonjour,
Je réalise actuellement un bain-marie à chocolat grâce à un arduino je précise que c’est mon premier projet et j’apprend au fur et à mesure de sa conception.
Voila la bain-marie est presque prêt voici la liste des composant:
-Potentiomètre il me sert a régler la temperature du désiré du bain-marie
-Led elle m’indique si la résistance est en chauffe
-Bouton de marche/arrêt de l’arduino
-Bouton poussoir Permet de passer au mode réglage de température ou température du thermomètre
-Relay permet la mise en route de la résistance
-Afficheur 7 segment 4 digit gérer par le librairie sevseg
-Thermomètre DS18b20 gérer par les librairies OneWire et DallastTemperature
Voila mon problème:
Lorsque j’exécute le mon code(ci dessous) sans les commande de requête de température mon afficheur fonctionne très bien.
Si j’exécute le code en entier les segments de l’afficheur se mettent à clignoter
Voici les deux lignes de requête de température:
sensors.requestTemperatures();
temperature_thermometre = 100 * sensors.getTempCByIndex(0);
Voici le code complet:
#include "SevSeg.h"
#include "OneWire.h"
#include "DallasTemperature.h"
SevSeg sevseg;
OneWire oneWire(13);
DallasTemperature sensors(&oneWire);
DeviceAddress sensorDeviceAddress;
void setup() {
byte numDigits = 4;
byte digitPins[] = {0, 1, 2, 3};
byte segmentPins[] = {4, 5, 6, 7, 8, 9, 10, 11};
bool resistorsOnSegments = false; // 'false' means resistors are on digit pins
byte hardwareConfig = 0; // See README.md for options
bool updateWithDelays = false; // Default. Recommended
bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments, updateWithDelays, leadingZeros);
sevseg.setBrightness(90);
sensors.begin();
sensors.getAddress(sensorDeviceAddress, 0);
sensors.setResolution(sensorDeviceAddress, 12);
//Serial.begin(9700); //test console
}
void loop() {
int info_afficheur;
boolean info_RelayLed;
int potentiometre ;
potentiometre = analogRead(A0);
boolean bouton (0) ;
bouton = digitalRead(A1);
int temperature_thermometre;
sensors.requestTemperatures();
temperature_thermometre = 100 * sensors.getTempCByIndex(0); //recuperation de la temperature
int temperature_demande;
temperature_demande = map(potentiometre,0,1024,0,200); //recuperation de la temperature demande sur le potentiometre affichage de de 5 en 5(0 à 95) grace a un mappping
temperature_demande = temperature_demande * (50);
if (bouton == 0) //affichage different suivant le bouton
{
info_afficheur = temperature_thermometre;
}
else if (bouton == 1)
{
info_afficheur = temperature_demande;
}
if (temperature_demande >= temperature_thermometre) //comparaison pour mise en chauffe du relay
{
digitalWrite(16, HIGH);
digitalWrite(12, HIGH);
info_RelayLed = 1;
}
else if (temperature_demande < temperature_thermometre)
{
digitalWrite(16, LOW);
digitalWrite(12, LOW);
info_RelayLed = 0;
}
sevseg.setNumber(info_afficheur, 2);
sevseg.refreshDisplay();
/*Serial.println("relay et led");
Serial.println(info_RelayLed);
Serial.println("temperature_demande");
Serial.println(temperature_demande);
Serial.println("temperature_thermometre"); // test console
Serial.println(temperature_thermometre);
Serial.println("bouton");
Serial.println(bouton);
Serial.println("potentiometre");
Serial.println(potentiometre);*/
}
Merci à ceux qui pourrons m’aider.