Alternativa al método de tono () de Arduino

3

¿Hay alguna forma fácil y fácil de reproducir tonos en un zumbador piezoeléctrico con el Arduino que no sea el método incorporado en tono ()? Solo necesito llamarlo un par de veces, pero me doy cuenta de que cuando lo uso hay 1256 bytes adicionales agregados al tamaño de salida. Me doy cuenta de que en un Arduino normal esto no sería mucho del 16KB disponible, pero estoy tratando de hacer esto en la serie ATTinyX5. Actualmente estoy usando un t45, pero me gustaría poder usar el t25 si es posible y esos 1256 bytes adicionales me ponen muy por encima del límite de 2048 bytes.

¿Pensamientos?

    
pregunta Adam Haile

1 respuesta

4

Hay un Melody example en el sitio de Arduino que solo usa digitalWrite para alternar rápidamente la E / S pasadores:

void playTone(int tone, int duration) {
  for (long i = 0; i < duration * 1000L; i += tone * 2) {
    digitalWrite(speakerPin, HIGH);
    delayMicroseconds(tone);
    digitalWrite(speakerPin, LOW);
    delayMicroseconds(tone);
  }
}

La principal desventaja de esto con respecto a otros métodos, como el uso de una salida de temporizador, es que su código se detendrá mientras se reproduce el tono, y si tiene lugar una actividad de interrupción de fondo, puede terminar con algunas anomalías en el tono. .

    
respondido por el PeterJ

Lea otras preguntas en las etiquetas