Hello I have to understand a variometer program for my school. I already understood a part of it but there are still some problems for me :
First of all what is the value of toneFreqLowpass at the first loop ?
Then when I test the program on a paper sheet with some value (for example pressure = 90000 ) It doesn't work. There is something I don't understand ...
I JOIN THE PROGRAM
Thank you very much for tour help
Fabien
bonjour , je dois comprendre un programme arduino pour mon école . J'ai déjà compris une partie mais il reste quelques lignes que je ne comprends pas.
Quelle est la valeur de toneFreqLowpass lors du premier passage car aucune valeur ne lui est attribuée ?
Quand je test le programme avec une feuille et un stylo , avec par exemple une pression de 900 hPa , la sortie est incohérente . Quelle est mon erreur ?
Merci beaucoup pour votre aide
Fabien
#include <Wire.h>
const byte led = 13;
unsigned int calibrationData[7];
unsigned long time = 0;
float toneFreq, toneFreqLowpass, pressure, lowpassFast, lowpassSlow ;
int ddsAcc;
void setup()
{
Wire.begin();
Serial.begin(115200);
setupSensor();
pressure = getPressure();
lowpassFast = lowpassSlow = pressure;
}
void loop()
{
pressure = getPressure();
lowpassFast = lowpassFast + (pressure - lowpassFast) * 0.1;
lowpassSlow = lowpassSlow + (pressure - lowpassSlow) * 0.05;
toneFreq = (lowpassSlow - lowpassFast) * 50;
toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.1;
toneFreq = constrain(toneFreqLowpass, -500, 500);
ddsAcc += toneFreq * 100 + 2000;
if (toneFreq < 0 || ddsAcc > 0)
{
tone(2, toneFreq + 510);
}
else
{
noTone(2);
}
ledOff();
while (millis() < time);
time += 20;
ledOn();
}