Sujet précédent :: Sujet suivant |
Auteur |
Message |
Arduibob Débutant
Hors ligne
Inscrit le: 19 Juin 2013 Messages: 3 Niveau d'éléctronique: Intermédiaire
|
Posté le: Mer 19 Juin - 19:55 (2013) Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. |
|
|
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 Niveau d'éléctronique: Débutant
|
Posté le: Jeu 20 Juin - 14:14 (2013) Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. |
|
|
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 .
|
|
Revenir en haut |
|
|
Arduibob Débutant
Hors ligne
Inscrit le: 19 Juin 2013 Messages: 3 Niveau d'éléctronique: Intermédiaire
|
Posté le: Jeu 20 Juin - 17:41 (2013) Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. |
|
|
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.
____________________________ 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 Niveau d'éléctronique: Débutant
|
Posté le: Jeu 20 Juin - 18:34 (2013) Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. |
|
|
De rien. |
|
Revenir en haut |
|
|
arnaud39 Débutant
Hors ligne
Inscrit le: 01 Avr 2013 Messages: 378 Niveau d'éléctronique: Dieu vivant
|
Posté le: Ven 21 Juin - 15:51 (2013) Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. |
|
|
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 Niveau d'éléctronique: Intermédiaire
|
Posté le: Sam 22 Juin - 16:41 (2013) Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. |
|
|
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 .... ____________________________ 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 Niveau d'éléctronique: Dieu vivant
|
Posté le: Ven 12 Juil - 16:18 (2013) Sujet du message: [Resolu]Trouver la valeur la plus élevée dans une série de variable. |
|
|
Merci pour ce partage :-) ____________________________ Ancien admin du forum, co-fondateur tutoarduino.com |
|
Revenir en haut |
|
|
|