bonjours je suis étudiant en électromécanique et je dois réaliser un projet de régulation de température
avec un arduino uno et j'aimerais réaliser un "compteur" pour pouvoir réglé ma température max et min a l'aide de 2 bouton poussoir un switch et un LCD en gros j'aimerais que lorsque je met le switch en position 1 l'LCD affiche Tmax et qu'avec un impulsion d'un BP la température max admise augmente et qu'avec l'autre BP la température max admise diminue et que lorsque je met le switch en position 2 il se passe la même chose pour la température min et que lorsque mon switch est en position 3 il m'affiche juste la température max et min merci de votre aide
bonjours je suis étudiant en électromécanique et je dois réaliser un projet de régulation de température
avec un arduino uno et j'aimerais réaliser un "compteur" pour pouvoir réglé ma température max et min a l'aide de 2 bouton poussoir un switch et un LCD en gros j'aimerais que lorsque je met le switch en position 1 l'LCD affiche Tmax et qu'avec un impulsion d'un BP la température max admise augmente et qu'avec l'autre BP la température max admise diminue et que lorsque je met le switch en position 2 il se passe la même chose pour la température min et que lorsque mon switch est en position 3 il m'affiche juste la température max et min j'ai un début de programme que j'ai commencer moi même si vous saviez me dire ce qui n'irais pas
const int pinBP1 = 0;// crée un identifiant pour la broche utilisée avec le bouton poussoir
const int pinBP2 = 1;// crée un identifiant pour la broche utilisée avec le bouton poussoir
// Les variables sont modifiées au cours du programme
#include <LiquidCrystal.h> // on importe la bibliothèque
LiquidCrystal monEcran(13,12,11,10,9,8); // on crée l'objet écran
int buttonPushCounter = 0; // variable pour le comptage du nombre d'appuis sur le bouton poussoir
int buttonState = 0; //Variable pour l'état actuel du bouton poussoir
int lastButtonState = 0; // Variable pour l'état précédent du bouton poussoir
int pin 2=0;
int pin 3=0;
void setup(){
pinMode(pinBP1,INPUT);// met la broche en entrée
pinMode(pinBP2,INPUT);// met la broche en entrée
pinMode(pin 2,INPUT);//selection du mode
pinMode(pin 3,INPUT);//selection du mode
monEcran.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
monEcran.clear(); // on efface l'écran
monEcran.print("teste 1"); // on écrit Bonjour
monEcran.setCursor(0,1); //on passe à la ligne suivante
monEcran.print("teste2"); // on finit d'écrire
}
void loop(){
if (pin 2 ==HIGH){
buttonState = digitalRead(pinBP1); // lit l'état actuel du bouton poussoir et le mémorise dans la variable
// compare l'état actuel du bouton poussoir à l'état précédent mémorisé
if (buttonState != lastButtonState) {
// si l'état du bouton poussoir a changé et est HAUT, on incrémente la variable de comptage
}
}
hello
ton code est insuffisant
je viens de t'en faire un que j'ai beaucoup commenté mais pas testé
#include <LiquidCrystal.h> // on importe la bibliothèque
LiquidCrystal monEcran(13,12,11,10,9,8); // on crée l'objet écran
// Les constantes
const int BPplus = 4;// cree un identifiant pour la broche utilisée avec le bouton poussoir plus
const int BPmoins = 5;// cree un identifiant pour la broche utilisée avec le bouton poussoir moins
//les inters peuvent etre un inverseur avec point milieu
const int intermax = 6;// cree un identifiant pour la broche utilisée avec l inter max
const int intermin = 7;// cree un identifiant pour la broche utilisée avec l inter min
// Les variables sont modifiées au cours du programme
int temperature_max = 20;//par defaut. a voir pour float
int temperature_min = 10;//par defaut. a voir pour float
int temperature = 15;//par defaut. a voir pour float
void setup(){
pinMode(BPplus, INPUT_PULLUP);// met la broche BPplus en entrée avec validation de la résistence de pullup
pinMode(BPmoins, INPUT_PULLUP);// met la broche BPplus en entrée avec validation de la résistence de pullup
pinMode(intermax,INPUT_PULLUP);// met la broche BPplus en entrée avec validation de la résistence de pullup
pinMode(intermin,INPUT_PULLUP);//met la broche BPplus en entrée avec validation de la résistence de pullup
monEcran.begin(16,2); //on initialise le LCD 16x2
//monEcran.clear(); // on efface l'écran
}
//on suppose qu'un appui sur un BP, ou un inter établit un contact entre GND et l'entrée concernée
//et on ne sait pas comment tu as lu la température reelle (mise par defaut a 15)
void loop()
{
if(digitalRead(intermax)==0)//inter max etablit un contact avec GND
{
delay(200); //on attends la fin des rebonds
monEcran.setCursor(0,1);
monEcran.print(temperature_max);
if(digitalRead(BPplus)==0)//BPplus etablit un contact avec GND
{
delay(200);//on attends la fin des rebonds
temperature_max++;//on incremente la temperature maxi
}
if(digitalRead(BPmoins)==0)//BPmoins etablit un contact avec GND
{
delay(200);//on attends la fin des rebonds
temperature_max--;//on decremente la temperature maxi
}
}
if(digitalRead(intermin)==0)//inter mini etablit un contact avec GND
{
delay(200); //on attends la fin des rebonds
monEcran.setCursor(0,1);
monEcran.print(temperature_min);
if(digitalRead(BPplus)==0)//BPplus etablit un contact avec GND
{
delay(200);//on attends la fin des rebonds
temperature_min++;//on incremente la temperature mini
}
if(digitalRead(BPmoins)==0)//BPmoins etablit un contact avec GND
{
delay(200);//on attends la fin des rebonds
temperature_min--;//on decremente la temperature mini
}
}
monEcran.setCursor(0,0); //colonne 0, ligne 0
monEcran.print("mini reelle maxi");
monEcran.setCursor(0,1); //colonne 0, ligne 1
monEcran.print(temperature_min);
monEcran.setCursor(6,1); //colonne 6, ligne 1
monEcran.print(temperature);
monEcran.setCursor(13,1); //colonne 13,ligne 1
monEcran.print(temperature_max);
}
super merci beaucoup je vais le tester maintenant je te renvois un msg quand je l'aurais tester pour te dire quoi
et encore merci
j'ai une erreur de compilation quand je veux téléverser dans la carte ca me met
collect2.exe: error: ld returned 5 exit status
exit status 1
Erreur de compilation pour la carte Arduino/Genuino Uno
et je capte ma température avec un capteur de température LM35DZ que je viens seulement de câbler
hello
chez moi ca compile sans problème
dans l'IDE arduino, en haut à gauche
fichier
preferences
afficher les résultats détaillés pendant la compilation , le téléversement
il faut cocher ces deux cases pour avoir des infos sur les erreurs
Pourquoi poster 2 fois le même sujet - c'est nul
c'est bon maintenant merci mais le soucis maintenant c'est que l'augmentation et la diminution des valeur ne se fait pas et j'ai intégré au programme le capteur de température qui semble fonctionner j'entent le relais basculer l'or du passage a une certaine température après pour en revenir au bouton poussoir ça vient peut être d'un mauvais câblage de ma part j'y amène le 5V et repart sur mon arduino directe c'est bien comme cela qu'il faut procédé ?
#include <LiquidCrystal.h> // on importe la bibliothèque
LiquidCrystal monEcran(13,12,11,10,9,8); // on crée l'objet écran
// Les constantes
const int BPplus = 0;// cree un identifiant pour la broche utilisée avec le bouton poussoir plus
const int BPmoins = 1;// cree un identifiant pour la broche utilisée avec le bouton poussoir moins
//les inters peuvent etre un inverseur avec point milieu
const int intermax = 2;// cree un identifiant pour la broche utilisée avec l inter max
const int intermin = 3;// cree un identifiant pour la broche utilisée avec l inter min
// Les variables sont modifiées au cours du programme
int temperature_max = 20;//par defaut. a voir pour float
int temperature_min = 10;//par defaut. a voir pour float
int temperature = 15;//par defaut. a voir pour float
int capteur = 5;
void setup(){
pinMode(BPplus, INPUT_PULLUP);// met la broche BPplus en entrée avec validation de la résistence de pullup
pinMode(BPmoins, INPUT_PULLUP);// met la broche BPplus en entrée avec validation de la résistence de pullup
pinMode(intermax,INPUT_PULLUP);// met la broche BPplus en entrée avec validation de la résistence de pullup
pinMode(intermin,INPUT_PULLUP);// met la broche BPplus en entrée avec validation de la résistence de pullup
monEcran.begin(16,2); //on initialise le LCD 16x2
//monEcran.clear(); // on efface l'écran
pinMode(4,OUTPUT);// commande de la resistance chauffante
pinMode(5,OUTPUT);// commande des ventilateur pour refroidire piece
}
//on suppose qu'un appui sur un BP, ou un inter établit un contact entre GND et l'entrée concernée
//et on ne sait pas comment tu as lu la température reelle (mise par defaut a 15)
void loop()
{
int valcapt = analogRead (capteur);
float temperature =valcapt/10;
if(digitalRead(intermax)==0)//inter max etablit un contact avec GND
{
delay(200); //on attends la fin des rebonds
monEcran.setCursor(0,1);
monEcran.print(temperature_max);
if(digitalRead(BPplus)==0)//BPplus etablit un contact avec GND
{
delay(200);//on attends la fin des rebonds
temperature_max++;//on incremente la temperature maxi
}
if(digitalRead(BPmoins)==0)//BPmoins etablit un contact avec GND
{
delay(200);//on attends la fin des rebonds
temperature_max--;//on decremente la temperature maxi
}
}
if(digitalRead(intermin)==0)//inter mini etablit un contact avec GND
{
delay(200); //on attends la fin des rebonds
monEcran.setCursor(0,1);
monEcran.print(temperature_min);
if(digitalRead(BPplus)==0)//BPplus etablit un contact avec GND
{
delay(200);//on attends la fin des rebonds
temperature_min++;//on incremente la temperature mini
}
if(digitalRead(BPmoins)==0)//BPmoins etablit un contact avec GND
{
delay(200);//on attends la fin des rebonds
temperature_min--;//on decremente la temperature mini
}
}
if(temperature > 20){
digitalWrite(4,LOW);//on arrete la resistance
digitalWrite(5,HIGH);//on met en route les ventilo
}
if (temperature<10){
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
}
monEcran.setCursor(0,0); //colonne 0, ligne 0
monEcran.print("mini reelle maxi");
monEcran.setCursor(0,1); //colonne 0, ligne 1
monEcran.print(temperature_min);
monEcran.setCursor(6,1); //colonne 6, ligne 1
monEcran.print(temperature);
monEcran.setCursor(13,1); //colonne 13,ligne 1
monEcran.print(temperature_max);
}
Bonjour,
Il ne faut pas que tu essaies de traiter les boutons plus/moins à l’intérieur du test des boutons min/max
Il faut positionner un indicateur avec les boutons min/max et ensuite incrémenter/décrémenter avec les boutons plus/moins.