Programme Arduino

**************************RÉSOLU****************************** *******************CODE AFFICHÉ EST CORRIGÉ**********************

Bonjour à tous,

Je me demandais si quelqu'un pourrait m'aider avec mon programme.

Je tente de changer la lecture de Fahrenheit à Celsius sur mon tmp36 quand je presse et relâche un bouton poussoir.

Mais cela fonctionne seulement en fonction de l'état logique du bouton: (quand je presse le bouton j'ai des Celsius et quand je le relâche j'ai des Fahrenheit).

Est-ce que quelqu'un pourrait m'aider avec ce problème?

// TMP36 Nom de la variable de la broche 1.
int TMP36 = 1; // Broche analogique analog 1 pour le capteur TMP36.
int brocheBouton = 2;    //Sa sensibilité est 10 mV / degrée centigrade 
boolean etatBouton = false;                        //(500 mV offset) à 0 C pour une température négative.
int temperatureCelsius;
int temperatureFarenheit;
int voltage = TMP36;

void setup() {
  Serial.begin(19200);  //Démarre la connexion série avec l'ordinateur
  pinMode(brocheBouton, INPUT_PULLUP);   // le résultat est affiché par l'option outil/moniteur série 
}

void loop(){
 if(digitalRead(brocheBouton)==HIGH){
 int lecture = analogRead(TMP36);//lit le voltage dasn le montage

 float voltage = lecture * 5.0; 
 voltage /= 1024.0; // float voltage * 5 Volt / 1024 echellons

 Serial.print(voltage); Serial.println(" Volts");//affiche le voltage au moniteur.
 delay(500);
etatBouton =!etatBouton;
}
    if(etatBouton == false){
   
                 float temperatureCelsius = (voltage - 0.5) * 100 ;//Obtiens la tension de la température.  
                 Serial.print(temperatureCelsius); Serial.print(" degres C   ");//affiche cette valeur au moniteur.
                 delay(500);
                 Serial.println();
    }
         if(etatBouton == true){
   
                float temperatureFarenheit = (((voltage - 0.5)* 100)*1.8)+ 32.0; //conversion au farenheit
               Serial.print(temperatureFarenheit); Serial.println(" degres F");//affichage au moniteur
              delay(500);
         }
}
int TMP36 = 1; 
int brocheBouton = 2;    
int etatBouton; 
int etat = 0;   
                
void setup() {
  Serial.begin(19200);  
  pinMode(brocheBouton, INPUT);   
}

void loop(){
 etatBouton = digitalRead(brocheBouton);
 int lecture = analogRead(TMP36);

 float voltage = lecture * 5.0; 
 voltage /= 1024.0; // float voltage * 5 Volt / 1024 echellons

 Serial.print(voltage); Serial.println(" Volts");

 if(etatBouton == HIGH){

 etat = 1;
   
 }
 if (etatBouton == LOW){

etat = 0;
    
}

}

if(etat == 1){
   
 float temperatureCelsius = (voltage - 0.5) * 100 ;  
 Serial.print(temperatureCelsius); Serial.print(" degres C   ");
 delay(300);  
 }
 if (etat == 0){

 float temperatureFarenheit = (((voltage - 0.5)* 100)*1.8)+ 32.0;

 Serial.print(temperatureFarenheit); Serial.println(" degres F");
 delay(300); 
}

}

Essaye comme ca, pas sur que ca marche :/

Non ça l'air à faire la même chose...

C'est tu faisable de pressé et relâche le même bouton poussoir pour faire cette fonction la?

Je pense que je suis obligé dans avoir deux non?

On peut utiliser 2 boutons, mais c’est possible avec un seul, essaye avec ca :

int TMP36 = 1; 
int brocheBouton = 2;    
int etatBouton; 
int etat = 0;   
                
void setup() {
  Serial.begin(19200);  
  pinMode(brocheBouton, INPUT);   
}
 
void loop(){
 etatBouton = digitalRead(brocheBouton);
 int lecture = analogRead(TMP36);
 
 float voltage = lecture * 5.0; 
 voltage /= 1024.0; // float voltage * 5 Volt / 1024 echellons
 
 Serial.print(voltage); Serial.println(" Volts");
 


if(etatBouton == HIGH){
	if(etat <= 0) {

	etat++;
	
	}
	if(etat >= 1) {

	etat--;

	}   
}

if(etat == 1){
   
 float temperatureCelsius = (voltage - 0.5) * 100 ;  
 Serial.print(temperatureCelsius); Serial.print(" degres C   ");
 delay(300);  
 }
 if (etat == 0){

 float temperatureFarenheit = (((voltage - 0.5)* 100)*1.8)+ 32.0;

 Serial.print(temperatureFarenheit); Serial.println(" degres F");
 delay(300); 
}

}

bonjour,
fonction boolean
http://arduino.cc/en/Reference/BooleanVariables

Tinker01223: Bonjour à tous,

Je me demandais si quelqu'un pourrait m'aider avec mon programme.

Je tente de changer la lecture de Fahrenheit à Celsius sur mon tmp36 quand je presse et relâche un bouton poussoir.

Mais cela fonctionne seulement en fonction de l'état logique du bouton: (quand je presse le bouton j'ai des Celsius et quand je le relâche j'ai des Fahrenheit).

bonjour une solution simple et souple est d’incrémenter une variable à chaque appui sur le BP et ensuite de récupérer le modulo (fonction du nombre de possibilités souhaitées) pour utilisation avec un switch...case

si 2 cas possibles utiliser un modulo 2 si 3 " " 3 si x " " x

Méthode radicale : tu peux aussi virer les Fahrenheit :grin: ça sert pas à grand chose.

Non clementvi, ce programme à l’air à faire la même chose que ce qu’on faisait avant. Merci quand même pour l’essai.

Pour les autres j’ai pas été capable avec le switch case, Ça ne m’a pas donner le résultat escompté.

Pour Boolean par contre je suis arrivé à quelque chose mais rien de définitif.

Voila mon programme plus boolean: qu’est-ce que je fais de mal??

// TMP36 Nom de la variable de la broche 1.
int TMP36 = 1; // Broche analogique analog 1 pour le capteur TMP36.
int brocheBouton = 2;    //Sa sensibilité est 10 mV / degrée centigrade 
int etatBouton = 0;                        //(500 mV offset) à 0 C pour une température négative.
int temperatureCelsius;
int temperatureFarenheit;

void setup() {
  Serial.begin(19200);  //Démarre la connexion série avec l'ordinateur
  pinMode(brocheBouton, INPUT);   // le résultat est affiché par l'option outil/moniteur série 
}
 
void loop(){
 etatBouton = digitalRead(brocheBouton); 
 int lecture = analogRead(TMP36);//lit le voltage dasn le montage
 
 float voltage = lecture * 5.0; 
 voltage /= 1024.0; // float voltage * 5 Volt / 1024 echellons
 
 Serial.print(voltage); Serial.println(" Volts");//affiche le voltage au moniteur.
 delay(500);
 if(etatBouton == HIGH && temperatureFarenheit == LOW){
   
 float temperatureCelsius = (voltage - 0.5) * 100 ;//Obtiens la tension de la température.  
 Serial.print(temperatureCelsius); Serial.print(" degres C   ");//affiche cette valeur au moniteur.
 delay(500);
 }
 if(etatBouton == HIGH && temperatureCelsius == LOW){
   
 float temperatureFarenheit = (((voltage - 0.5)* 100)*1.8)+ 32.0; //conversion au farenheit
 Serial.print(temperatureFarenheit); Serial.println(" degres F");//affichage au moniteur
 delay(500);
}
}

il est ou le boolean? sans tester ca pourrait donner ca

// TMP36 Nom de la variable de la broche 1.
int TMP36 = 1; // Broche analogique analog 1 pour le capteur TMP36.
int brocheBouton = 2;    //Sa sensibilité est 10 mV / degrée centigrade 
boolean etatBouton = FALSE;                        //(500 mV offset) à 0 C pour une température négative.
int temperatureCelsius;
int temperatureFarenheit;

void setup() {
  Serial.begin(19200);  //Démarre la connexion série avec l'ordinateur
  pinMode(brocheBouton, INPUT_PULLUP);   // le résultat est affiché par l'option outil/moniteur série 
}

void loop(){
 if(digitalRead(brocheBouton)==HIGH){
 int lecture = analogRead(TMP36);//lit le voltage dasn le montage

 float voltage = lecture * 5.0; 
 voltage /= 1024.0; // float voltage * 5 Volt / 1024 echellons

 Serial.print(voltage); Serial.println(" Volts");//affiche le voltage au moniteur.
 delay(500);
etatBouton =!etatBouton;
}
    if(etatBouton == FALSE){
   
                 float temperatureCelsius = (voltage - 0.5) * 100 ;//Obtiens la tension de la température.  
                 Serial.print(temperatureCelsius); Serial.print(" degres C   ");//affiche cette valeur au moniteur.
                 delay(500);
    }
         if(etatBouton == TRUE){
   
                float temperatureFarenheit = (((voltage - 0.5)* 100)*1.8)+ 32.0; //conversion au farenheit
               Serial.print(temperatureFarenheit); Serial.println(" degres F");//affichage au moniteur
              delay(500);
         }
}

Ça marche!!

Merci beaucoup pour le coup de main j'aurais jamais deviné par moi même que boolean m'aurait aussi bien servi.

Merci Beaucoup!

tant mieux car j'ai vraiment fait ca rapidos. comme quoi il faut se documenter un peu, après ca roule mieux pour des trucs basics passe ton sujet en résolu dans ce cas en éditant ton premier post ;)