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).