#define pulse_ip 7
int ontime,offtime,duty;
float freq,period;
int outputpin=9; /* Assign symbolic name outputpin to D9 PWM pin of Arduino */
void setup()
{
Serial.begin(9600);
pinMode(outputpin, OUTPUT); /* set as a output put */
TCCR1A=_BV(COM1A1)|_BV(COM1B1); /* set Fast PWM Mode */
TCCR1B=_BV(WGM13)|_BV(CS11); /* Activate PWM Phase, frequency correction Mode */
}
void loop()
{
float frequency=0; /* initially set frequency to zero */
float count=10000;
float count2=0;
float readinput=0;
while(1)
{
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.println("Hz");
ICR1=count;
count2=2*8*count;
frequency= int(16000000/count2);
OCR1A=int(count/2);
count=10000;//10=100,000Hz, 1000=1000Hz, 5000=200Hz, 10000=100Hz, 20000=50Hz
readinput=analogRead(A0);
///readinput=(readinput/0.0113);https://microcontrollerslab.com/arduino-pwm-tutorial-generate-fix-and-variable-frequency-signal/
readinput=(readinput*22.434);//Scale 0-1023 to 0..22950
///count=count+readinput;
if(count>=100000)
{
count=10000;
}
delay(1000);
}
}