Go Down

Topic: [resolu]Problème pour delimiter port analogique (Read 648 times) previous topic - next topic

voodou

May 31, 2011, 09:42 pm Last Edit: May 31, 2011, 11:47 pm by voodou Reason: 1
Bonjour. J'ai un petit problème avec une tension qui varie mais pas de 0 a 5v mais de 0,.. À 4,...
J'utilise l'entrée analogue 0. Je n'ai donc pas la possibilité de pouvoir faire un pourcentage en divisant la valeur.
mon Max est de 880 sur 1023 et mon min est de 30 sur 1023.
Est ce possible de délimiter ou une autre solution?
Merci d'avance.

Salut,

la fonction map() est faite pour ça...

Gromain
"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

voodou

#2
May 31, 2011, 11:29 pm Last Edit: May 31, 2011, 11:38 pm by voodou Reason: 1
Merci pour l'info, est ce que ma syntaxe est bonne? J'ai donné mes limites hautes et basses. Est il possible d'inverser les valeurs c'est à dire que la valeur  pourcent est inversée. Si j'ai 5v j'ai 0% et si j'ai 0V j'ai 100%.(enfin plus du 0,... et du 80-90%).

float sensorValue;
float pourcent;

void setup() {
 Serial.begin(9600);
 Serial.println("Video RSSI meter");
}

void loop() {
 sensorValue = analogRead(A0);
sensorValue= map(sensorValue, 130, 750, 750, 130);
pourcent = ((sensorValue /750)*100);

 Serial.println("Reception: ");
 Serial.println(pourcent);
 delay (1000);
}

zoroastre

#3
May 31, 2011, 11:36 pm Last Edit: May 31, 2011, 11:38 pm by zoroastre Reason: 1
Yep!

Plus simplement en faisant :

pourcent = map(sensorValue, 130, 750, 0, 100);

Les valeurs receptionnées entre 130 et 750 seront ramenées directement à un pourcentage (entre 0 et 100)

Pour l'inversion faut tester ou prendre des valeurs négatives genre -100 à 0.

@+

Zoroastre.
Gné! ;)

voodou


zoroastre

Yep!

Tu as réussi l'inversion avec des valeurs positives ? Donnes nous la ligne de commande please ?

@+

Zoroastre.
Gné! ;)

voodou

Pas eu besoins d'inverser quoi que ce soit et ça fonctionne nickel:

float sensorValue;
float pourcent;

void setup() {
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(A0);
pourcent = map(sensorValue, 180, 875, 0, 100);

  Serial.println("Reception: ");
  Serial.println(pourcent);
  delay (1000);
}

Go Up