Des idées, oui ça m'est arrivé au moins deux fois.
Quelqu'un à une idée du pourquoi du comment?
Pour le comment, pense que si je veux t'aider, il faut que j'imprime les deux images pour pouvoir les comparer, que j’appelle Irma ma voyante qui peut me dire comment traduire "ça part en live"...
Si tu veux de l'aide, formulé de cette façon tu va recevoir à peu près le même message: il faut que toi tu nous aide en:
lisant les messages épinglées " Bien éditer son post pour les nuls" et "Faire un Nouveau Sujet ou le corriger avec les Balises."
en donnant le code sous la forme demandée afin que l'on puisse facilement
peut être en précisant ce qu va et ce qui ne va pas; si je ne sais pas du tout ce que fait un code, je ne peux pas deviner pourquoi il ne fonctionne pas et donc trouver l'erreur.
De la part d'un utilisateur Linux il est assez lamentable d'utiliser des images pour montrer du code et les affichages console.
CTRL-A & CTRL-C & CTRL-V existent aussi sous Linux
kamill: Je ne pas déclaré le tableau en dehors de la loop à cause de la variable "interval", de plus je vois pas le rapport avec les Serial.print qui "valide" le code ou pas, où alors va falloir bien m'expliquer.....
const int analogInPin = A0;
const int led = 13;
unsigned int interval = 10;
byte derive = 1;
int sum,i;
unsigned int compteur = 0;
float moy = 0;
float med = 0;
float diff = 0;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop() {
unsigned int tab[interval];
unsigned int n = interval;
if( compteur < interval){
tab[compteur] = analogRead(analogInPin);
Serial.print (compteur); ////
Serial.print (" "); // SI JE COMMENTE CES LIGNES LE TABLEAU SE REMPLI DE VALEUR QUI NE CORRESPONDENT PLUS A analogInPin!!!
Serial.println (tab[compteur]); ////
compteur++;
moy = 0;
} else {
sort(tab,n);
Serial.print("moy ");
for (int i = 0 ; i < interval ; i++) {
moy += tab[i];
}
moy /= interval;
Serial.print(moy);
if( interval % 2 == 1){ Serial.print(" I ");
n= ((n+1)/2) -1;
med = tab[n];
Serial.print(n); Serial.print("("); Serial.print(tab[n]); Serial.print(") ");
} else { Serial.print(" P ");
n= n/2;
Serial.print(n); Serial.print("("); Serial.print(tab[n]); Serial.print(") ");
med = tab[n] ;
n -= 1;
Serial.print(n); Serial.print("("); Serial.print(tab[n]); Serial.print(") ");
med += tab[n];
med /= 2;
}
Serial.print(" med "); Serial.print(med);
compteur = 0;
diff = moy-med;
Serial.print(" Diff "); Serial.println(diff);
if( abs(diff) < derive ) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
delay(500);
}
void swap(int *p,int *q) {
int t;
t=*p;
*p=*q;
*q=t;
}
void sort(int tab[],int n) {
int i,j,temp;
for(i=0;i<n-1;i++) {
for(j=0;j<n-i-1;j++) {
if(tab[j]>tab[j+1])
swap(&tab[j],&tab[j+1]);
}
}
}
Ça y est, je sais ce qu'il faut faire: il suffit d'avoir un écran avec une résolution deux fois plus grande que l'écran de @rabillou pour analyser les images. Ou d'avoir deux écrans. Mon problème c'est que le deuxième a une résolution de 320x240!
vileroi:
Ça y est, je sais ce qu'il faut faire: il suffit d'avoir un écran avec une résolution deux fois plus grande que l'écran de @rabillou pour analyser les images. Ou d'avoir deux écrans. Mon problème c'est que le deuxième a une résolution de 320x240!
Ce n'est pas cela qui va lui enseigner ce qu'est une variable locale ...
rabillou:
kamill: Je ne pas déclaré le tableau en dehors de la loop à cause de la variable "interval", de plus je vois pas le rapport avec les Serial.print qui "valide" le code ou pas, où alors va falloir bien m'expliquer.....
Ton tableau est créé dans la pile et un nouveau tableau est créé à chaque instance d'entrée dans la loop() -> possiblement avec des valeurs différentes.
Lorsque tu fais Serial.println (tab[compteur]); tu empiles la valeur dans la pile qui est ensuite dépilée, mais dont la valeur mémoire reste et est possiblement utilisée (coup de bol elle est au bon endroit) dans les calculs suivants ou à la nouvelle définition du tableau.
Le tableau peut être local mais il faut qu'il soit défini en static pour persister à chaque entrée dans la loop. La taille d'un tableau static doit être connue, donc il faut que interval soit défini en const.