Pages: 1
Salut tout le monde, j'ai un bug dans mon programme.
Celui ci a pour but de récupérer la valeur de tension d'une sonde à oxygène : 0-5V et de retranscrire cette tension en valeur lambda air / essence. J'ai affecté des valeurs de tension à une valeur Lambda.
Voici les premières esquisses de mon code. En théorie il devrait m'afficher le message sur le port série de mon arduino UNO. Le probleme c'est qu'il affiche le message que pour les valeurs de tension inférieur a 45mV.
J'ai effectué des tests avec un potentiomètre afin d'avoir des valeurs de tension.
// These constants won't change. They're used to give names
// to the pins used:
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin
int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
void setup()
{
// initialize serial communications at 9600 bps:
Serial.begin(9600);
}
void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
// map it to the range of the analog out:
outputValue = map(sensorValue, 0, 1023, 0, 1023);
// change the analog out value:
switch (1,11) // sélection du cas en fonction de la valeur de sortie
{
case 1:
if(945 < outputValue) // Si outputValue est supérieur a 945
Serial.print("Facteur Lambda = 0.8 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 2:
if(900 < outputValue < 945) // Si outputValue est entre : 900 et 945
Serial.print("Facteur Lambda = 0.85 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 3:
if(855 < outputValue < 900) // Si outputValue est entre : 855 et 900
Serial.print("Facteur Lambda = 0.9 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 4:
if(810 < outputValue < 855) // Si outputValue est entre : 810 et 855
Serial.print("Facteur Lambda = 0.93 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 5:
if(540 < outputValue < 810) // Si outputValue est entre : 540 et 810
Serial.print("Facteur Lambda = 0.97 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 6:
if(255 < outputValue < 540) // Si outputValue est entre : 255 et 540
Serial.print("Facteur Lambda = 0.98 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 7:
if(180 < outputValue < 225) // Si outputValue est entre : 180 et 225
Serial.print("Facteur Lambda = 1.0 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 8:
if(135 < outputValue < 180) // Si outputValue est entre : 135 et 180
Serial.print("Facteur Lambda = 1.02 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 9:
if(90 < outputValue < 135) // Si outputValue est entre : 90 et 135
Serial.print("Facteur Lambda = 1.04 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 10:
if(45 < outputValue < 90) // Si outputValue est entre : 45 et 90
Serial.print("Facteur Lambda = 1.15 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
case 11:
if(outputValue < 45) // Si outputValue inférieur à 45
Serial.print("Facteur Lambda = 1.25 car la tention vaut (mV): "); // Afficher le méssage suivant.
Serial.println(outputValue); // Afficher la valeur de sortie.
}
// wait 2 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
delay(200);
}
Si vous avez des questions, des pistes, ou des solutions à me proposé, je suis preneur. Ce projet est à faire dans le cadre scolaire.
Hors ligne
bonjour
Si tu veux lire une tension via un potar il faut changer tes valeurs dans ta fonction map tu mets 0,1024,0,1024,il
faut mettre 0,1024,0,5 et tu auras une tension de 0 à 5 votls.
Hors ligne
Bonjour,
Ton instruction switch() case ne sert à rien si ensuite tu refais des tests. J'ai laissé ta suite de test d'intervalle afin de changer une variable, le code est ainsi plus lisible.
N'ayant pas d'arduino sous la main je ne peux tester ce code.
Hors ligne
Pages: 1