Bonjour,
Je souhaite pouvoir lire une fréquence de 20hz et son duty qui va avec. (le but avoué étant de ressortir en 100hz avec le même duty, convertisseur 20->100hz)
J'utilise le bout de code suivant:
#define pulse_ip 9
int ontime,offtime,duty;
float freq,period;
void setup()
{
Serial.begin(9600);
pinMode(pulse_ip,INPUT);
Serial.print("#########start#");
}
void loop()
{
ontime = pulseIn(pulse_ip,HIGH);
offtime = pulseIn(pulse_ip,LOW);
period = ontime+offtime;
freq = 1000000.0/period;
duty = (ontime/period)*100;
Serial.print("Freq: ");
Serial.print(freq);
Serial.println(" Hz");
Serial.print("Duty: ");
Serial.print(duty);
Serial.print(" ");
Serial.println('%');
Serial.println("");
delay(500);
}
Ca marche très bien au dessus de 30hz. En dessous, patatra.
Alors j'ai lu un tas de sujet là dessus et essayé plusieurs trucs en jouant avec la librairie timerone, sans succès.
Si quelqu'un a un avis éclairé là-dessus ?
Matériel utilisé: Atmega2560