Le forum a migré vers l'adresse suivante:

Forum

Masquer ce message

Simple-Duino Index du Forum



[Resolu]Trouver la valeur la plus élevée dans une série de variable.


 
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Arduino & Électronique -> Questions
Sujet précédent :: Sujet suivant  
Auteur Message
Arduibob
Débutant

Hors ligne

Inscrit le: 19 Juin 2013
Messages: 3
Masculin
Niveau d'éléctronique: Intermédiaire

MessagePosté le: Mer 19 Juin - 19:55 (2013)    Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. Répondre en citant

Bonjour à Toutes et tous,

je suis entrain de faire une maquette de station météo à base d'un Arduino Uno. Une interruption me permet de compter des impulsions provenant d'un anémomètre, à intervalle régulier et stocker ces valeurs dans 10 variables. Je souhaiterai trouver quelle est la variable la plus grande ( Vent en rafale). J'ai bien essayé la fonction MAX(), mais cette fonction ne compare que 2 valeurs en elles à chaque fois, pas très pratique!

Qui aurait une bonne idée de code, pas trop long, pour me venir en aide?
Merci d'avance
____________________________
Enrichir ses connaissances et en faire profiter ceux
qui veulent enrichir leurs connaissances.
Revenir en haut
oneill
Débutant

Hors ligne

Inscrit le: 03 Juin 2013
Messages: 60
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Jeu 20 Juin - 14:14 (2013)    Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. Répondre en citant

Bonjour, voilà un petit code qui pourrais t'aider, je l'espère.

float V[10];  //Déclaration du tableau où ce trouverons nos 10 valeurs

void setup() //Fonction setup()
{
  Serial.begin(9600); //Initialisation du port série pour avoir un retour sur le serial monitor
}

void loop() //Fonction loop()
{
  V[0] = 1;  //Je met la valeur 1 dans la première case de mon tableau
  V[1] = 20;  //Idem avec la valeur 20 dans la seconde case de mon tableau
  V[2] = 5;  //Idem
  V[3] = 50;  //Idem
  V[4] = 0;  //Idem
  V[5] = 33;  //Idem
  V[6] = 15;  //Idem
  V[7] = 2;  //Idem
  V[8] = 100;  //Idem
  V[9] = 500;  //Idem


  for(int i = 0; i <= 9; i++){  //Je cré une boucle
    V[0] = max(V[0],V);  //Je compare la valeur de V[0] et V puis met la valeur la plus grande dans V[0]
  }

  Serial.println(V[0]);  //Affiche la valeur de V[0]
  delay(1000);
}

Tu n'a plus cas adapter pour que sa marche chez toi music .
Revenir en haut
Arduibob
Débutant

Hors ligne

Inscrit le: 19 Juin 2013
Messages: 3
Masculin
Niveau d'éléctronique: Intermédiaire

MessagePosté le: Jeu 20 Juin - 17:41 (2013)    Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. Répondre en citant

Bonjour,
Et bien ça ma l'air parfait, court et efficace. Je n'avais pas du tout pensé à utiliser un tableau.
Merci beaucoup pour l'aide.
A la prochaine.

Bravo
____________________________
Enrichir ses connaissances et en faire profiter ceux
qui veulent enrichir leurs connaissances.
Revenir en haut
oneill
Débutant

Hors ligne

Inscrit le: 03 Juin 2013
Messages: 60
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Jeu 20 Juin - 18:34 (2013)    Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. Répondre en citant

De rien.  Very Happy
Revenir en haut
arnaud39
Débutant

Hors ligne

Inscrit le: 01 Avr 2013
Messages: 378
Masculin
Niveau d'éléctronique: Dieu vivant

MessagePosté le: Ven 21 Juin - 15:51 (2013)    Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. Répondre en citant

Merci oneill pour ton efficacité. Tu devrais regarder mon post sur ta présentation
____________________________
Ancien admin du forum, co-fondateur tutoarduino.com
Revenir en haut
Arduibob
Débutant

Hors ligne

Inscrit le: 19 Juin 2013
Messages: 3
Masculin
Niveau d'éléctronique: Intermédiaire

MessagePosté le: Sam 22 Juin - 16:41 (2013)    Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. Répondre en citant

Bonjour à Tous,
J'ai bossé un peu sur l'idée de code de oneill,
voici donc la partie du code permettant de compter des impulsions de calculer la moyenne et la valeur max:

#include <FlexiTimer2.h>
#include <digitalWriteFast.h>
// Codeur Hall effect
#define codeurInterruptionA 0
#define codeurPinA 2

#define CADENCE_MS 2000// Cadence d'échantillonnage en ms

volatile long ticksCodeur = 0;
//unsigned long tempsDernierEnvoi = 0;
//unsigned long tempsCourant = 0;
//volatile double omega;

int V[10];  //Déclaration du tableau où ce trouverons nos 10 valeurs
int i = 0;
int moyenne;
 
// Initialisations
void setup(void) {
  // Codeur incrémental
  pinMode(codeurPinA, INPUT);      // entrée digitale pin A codeur
  digitalWrite(codeurPinA, HIGH);  // activation de la résistance de pullup
  attachInterrupt(codeurInterruptionA, GestionInterruptionCodeurPinA, FALLING);
  // mode déclenchement possibles = LOW, CHANGE, RISING, FALLING
 
  Serial.begin(9600);// Liaison série
  Serial.flush();

  ticksCodeur = 0;// Compteur d'impulsions de l'encodeur

  // La routine isrt est exécutée à cadence fixe
  FlexiTimer2::set(CADENCE_MS, isrt); // résolution timer = 1 ms
  FlexiTimer2::start();
}
// Boucle principale
void loop() {
  //ecritureData();// Ecriture des données sur la liaison série
}

void isrt(){
  int tamponImpulse;
  tamponImpulse = ticksCodeur;// transfer du nombre d'impulsions dans variable tampon.
  ticksCodeur = 0;// RAZ de la variable comptage impulse.
  V[i] = tamponImpulse;// stockage du nb impulse dans le tableau V[i]
  /* //Ecriture de la valeur de V[0] à V[9], utile pour la mise au point du sketch.
  Serial.print("V");
  Serial.print(i);
  Serial.print(" : ");
  Serial.println(V[i]);  //Affiche la valeur de V[0]
  */
  if (i == 9)
  {
     for(int k = 0; k <= 9; k++){  //Je cré une boucle
     moyenne = (moyenne + V[k]); // j'additionne toutes les valeurs dans moyenne
    }
    for(int j = 0; j <= 9; j++){  //Je cré une boucle
      V[0] = max(V[0],V[j]); //Je compare la valeur de V[0] et V puis met la valeur la plus grande dans V[0]
    }
    moyenne = (moyenne /10);
   
      Serial.print("Val Moyenne  :"); 
      Serial.println(moyenne);  //Affiche la variablemoyenne
      Serial.print("Val Max  :"); 
      Serial.println(V[0]);  //Affiche la valeur de V[0]
      i=0;
  }
  else
  {  i = i + 1 ;}
}

// Routine de service d'interruption attachée à la voie A du codeur incrémental
void GestionInterruptionCodeurPinA()
{
  ticksCodeur++;
}

Encore merci .... Very Happy
____________________________
Enrichir ses connaissances et en faire profiter ceux
qui veulent enrichir leurs connaissances.
Revenir en haut
arnaud39
Débutant

Hors ligne

Inscrit le: 01 Avr 2013
Messages: 378
Masculin
Niveau d'éléctronique: Dieu vivant

MessagePosté le: Ven 12 Juil - 16:18 (2013)    Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. Répondre en citant

Merci pour ce partage :-)
____________________________
Ancien admin du forum, co-fondateur tutoarduino.com
Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Arduino & Électronique -> Questions Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB
Propulsé par Simple-Duino