Hola a todos
Mi pregunta es, si el uso excesivo de la función DelayMicroseconds en un sketch de arduino puede provocar fallos en un futuro en la placa arduino o es indiferente?
He leído que para valores inferiores a 4 o 5 en esta función, la exactitud puede ser menor.
Para mi proyecto, con delaymicroseconds(20) sería suficiente para enviar pulsos por un pin.
for (int i=0; i<valor; i++) {
digitalWrite(pulsePin, HIGH);
delayMicroseconds(20);
digitalWrite(pulsePin, LOW);
delayMicroseconds(20);
}
-Y otra pregunta, hay alguna otra manera de enviar pulsos de un ancho determinado, a parte de la anterior?
Gracias de antemano
Saludos
Creo que por PWM puedes hacer lo que preguntas.
Gracias
Imagino que sacando PWM a mitad 50% (127), saca un pulso alto y otro bajo dentro de cada ciclo, no?
Pero necesitaría un periodo menor pues la frecuencia por defecto es 489 hz
Lo he extraído de internet
Por omisión, la frecuencia del PWM está configurada a 489 Hz y ya es de nosotros el moverla a voluntad usando los registros
/**
TIMER 2 (Pin 9, 10)
Value Divisor Frequency
0×01 1 31.374 KHz
0×02 8 3.921 KHz
0×03 32 980.3 Hz
0×04 64 490.1 Hz // default
0×05 128 245 hz
0×06 256 122.5 hz
0×07 1024 30.63 hz
Code: TCCR2B = (TCCR2B & 0xF8) | value ;
*
*/
Entonces sería lo mismo hacer esto (si valor de tren de pulsos que quiero mandar es 200 por ejemplo
y con la frecuencia por defecto a 490 hz. / con periodo 2mms)
for (int i=0; i<200; i++) {
digitalWrite(pulsePin, HIGH);
delayMicroseconds(1000); o delay(1)
digitalWrite(pulsePin, LOW);
delayMicroseconds(1000); o delay(1)
}
que esto
analogWrite(pulsePin, 127);
delay(400); (2 mms cada periodo * 200)
analogWrite(pulsePin, 0);
}