#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define pulse_ip 9
int ontime,offtime,duty;
float freq,period;
   
void setup()
{
  pinMode(pulse_ip,INPUT);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.print("Freq:");
  lcd.setCursor(0,1); 
  lcd.print("Duty:");  
}
void loop()
{
  tone(9,5000); // genere une fréquence de 5khz pour essais
  
   ontime = pulseIn(pulse_ip,HIGH);
   offtime = pulseIn(pulse_ip,LOW);
   period = ontime+offtime;
   freq = 1000000.0/period;
   duty = (ontime/period)*100; 
   if(period==0){ 
    freq=0;
    
    }
   lcd.setCursor(5,0);
   lcd.print("           ");
   lcd.setCursor(5,0);
   if(freq<1000){ 
   lcd.print(freq);
   lcd.print("Hz");
   }else if(freq>999|freq<1000000){ 
   lcd.print(freq/1000);
   lcd.print("KHz");
   }else if(freq>999999|freq<1000000000){ 
   lcd.print(freq/1000000);
   lcd.print("MHz");
   }
   lcd.setCursor(6,1);
   lcd.print("           ");
   lcd.setCursor(6,1);
   lcd.print(duty); 
   lcd.print('%'); 
   delay(1000);
}