Generador de señal de 5Khz y medir la misma señal

Estoy haciendo un proyecto que genera una señal digital de 5Khz y lea esta misma señal cuando el sketch
funciona la señal cambia su frecuencia parece que hay algo en el codigo que esta dandome este problema
gracias.

Este es el codigo:

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  pinMode(5,OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
   digitalWrite(5, HIGH);   
   delayMicroseconds(5); 
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.0 / 1023.0);
  // print out 
  Serial.println(voltage);                
   digitalWrite(5, LOW);  
   delay(195);

Citando a lucario te dejo esta respuesta suya que te servirá

Lucario448:
Para generar PWM con más precisión, puedes usar esta librería. El ciclo de trabajo y frecuencia son completamente ajustables:

void ajustarFrecuencia(unsigned int hz) {

Timer1.setPeriod(1000000UL / hz);
}

void ajustarCiclo(byte porcentaje) {
  if (porcentaje > 100) porcentaje = 100;
  Timer1.setPwmDuty(pin, map(porcentaje, 0, 100, 0, 1023)); // pin solo puede ser el 9 o 10
}



Para un microcontrolador que va a 16 MHz, no se recomienda una frecuencia superior a 62.5 KHz. Es posible ir hasta 1 MHz, pero la resolución del ciclo de trabajo se sacrifica (menor resolución = menor granularidad en el ajuste).

:slight_smile: Muchas Gracias