Go Down

Topic: [conseil] projet de détéction d'obstacle, question de compréhension (Read 2 times) previous topic - next topic

Benoit1121

Merci Brabudor,

J'ai tout simplement ajouté un *2 :

Code: [Select]
void lecture_val()
{
val = analogRead(analogPin);
interval = val * 2 ;
Serial.println (interval);
}


Merci

Benoit

patg_

Tu peux aussi utiliser la fonction map(...) pour à partir de la valeur de ton capteur, calculer une autre valeur entre les bornes spécifiées.
La doc est ici: http://arduino.cc/en/Reference/map

Ca permet simplement de faire varier les bornes mini et maxi calculées tout en gardant les mêmes bornes en entrée.

Pour te donner un exemple concret de comment je l'utilise sur mon projet actuel:
J'ai un capteur de lumière qui est lu sur une entrée analogique et me fournit une valeur entre 230 et 900 selon l'éclairage de la pièce. Hors j'ai besoin en sortie d'une valeur entre 0 et 15, pour piloter l'intensité lumineuse d'un éclairage.
Je transforme donc la valeur lue comme ceci

int  brightness = analogRead(PIN_LDR); //valeur brute
int  scaledBrightness = map(brightness,230,900,0,15); //valeur transformée entre 0 et 15

J'ai constaté hier que si la valeur brute passe sous la valeur minimale indiquée on a un débordement. Pour moi ça ressemble à un bug de map() mais bon...je vais faire en sorte de détecter ce cas car mon signal d'entrée pourrait passer sous 230 dans certaines conditions je pense.

Benoit1121

@Patq_ : Merci, tu viens de m'apprendre quelque chose qui peut m'être utile pour autre chose :)
En revanche dans mon cas, je ne pense pas en avoir besoin car j'ai tout simplement multiplié la valeur de "interval" et ça fonctionne correctement !

Je ne suis pas un expert et peut être ce que je vais dire va paraitre idiot mais pour ton problème, si j'ai bien compris ton capteur te donne un plage entre 230 et 900 en fonction de la lumière mais, c'est toi qui l'a définit comme ça ? ou bien c'est tout simplement la lumière mini et maxi de ta pièce ? car la lumière peut varier suivant certains facteur donc peut être que parfois il fait plus clair que d'habitude ou moins clair ^^ donc cela peut être normal ton soucis..

Merci

Cordialement

Benoit

patg_


@Patq_ : Merci, tu viens de m'apprendre quelque chose qui peut m'être utile pour autre chose :)
En revanche dans mon cas, je ne pense pas en avoir besoin car j'ai tout simplement multiplié la valeur de "interval" et ça fonctionne correctement !

Juste un truc, mon pseudo c'est PatG_ et non PatQ_   :D
En fait si tu multiplies simplement la valeur tu ne fais que changer la pente de la droite, sans pouvoir spécifier le mini et le maxi que tu souhaites en résultat. Ca peut convenir dans certains cas.


Je ne suis pas un expert et peut être ce que je vais dire va paraitre idiot mais pour ton problème, si j'ai bien compris ton capteur te donne un plage entre 230 et 900 en fonction de la lumière mais, c'est toi qui l'a définit comme ça ? ou bien c'est tout simplement la lumière mini et maxi de ta pièce ? car la lumière peut varier suivant certains facteur donc peut être que parfois il fait plus clair que d'habitude ou moins clair ^^ donc cela peut être normal ton soucis..

En fait c'est une LDR qui forme un pont diviseur de tension avec une résistance en série.
La résistance est calculée pour obtenir la plage de variation de tension optimale en fonction des éclairements mini et maxi de la pièce où sera situé le dispositif.
De là j'ai les valeurs mini et maxi  une fois converties en digital.
Donc les valeurs sont plutôt issues d'un calcul pour optimiser la sensibilité de la mesure de l'intensité lumineuse.


Merci

Cordialement

Benoit

[/quote]

Benoit1121

Aaaah désolé ! au temps pour moi Patg_ !

Ensuite, je me répete mais je suis pas pro dans tout ceci, mais d'apres ce que tu dis, (si j'ai bien compris) la plage est définit en fonction de la valeur de la resistance? dans ce cas si c'est pas un bug de map () essais d'élargir ta plage, mais tu optimiseras moins ta sensibilité.. sinon je ne vois pas d'où peut venir ce probleme, je n'ai pas assez de recul dans ce domaine encore désolé..

Benoit

Go Up