¿Es posible agregar un zumbador piezoeléctrico a un contador?

1

¿Es posible agregar un zumbador piezoeléctrico a un contador?

mi ejemplo:

(countD < 70)

entonces 1 melodía en = 0 2ª melodía 10,20,30,40,50,60 3ra melodía 70

Esto es con lo que estaba jugando:

if (countD=0)
buzz(2, 2500, 500);
++counter;

poniendo en esto:

    if (countD<70)
    {
    if (countB<10) {
        digitalWrite(ledArray2[countB],LOW);
      }
      if (++countB>=10) countB=0; // For some reason changing this from 20 to 10 makes array not long pause
      if (countB<10) {
        digitalWrite(ledArray2[countB],HIGH);
      }
    countD++;
    }
    }
}
}

¿Alguna idea si es posible? Estoy seguro de que lo es, pero no puedo encontrar ninguna documentación que me ayude.

¿Esto se ve bien? 2500, 4000, 6000 supongo que es el tono o el tono? así que obtenemos una melodía para 0 y la segunda melodía de 10-60 melodía dif en 70

 if (countD<70)

if((countD) == 0) buzz(2, 2500, 500);
if((countD % 10) == 10 - 60) buzz(2, 4000, 500);
if((countD % 10) == 70) buzz(2, 6000, 500);
{
        if (countB<10) {

Edit 2:

void buzz()

{
if(((countD % 10) == 0)) && ((countD > 10) && (countD < 70)))
{
buzz(2, 4000, 500);
}
else if((countD % 70) == 0) 
{
buzz(2, 6000, 500);
}}
    
pregunta Mr Men

1 respuesta

1

Sí, solo escribe tu rutina buzz() y llámala en ciertos intervalos de tu variable de conteo.

Si quieres que sea cada 10 cuentas, haz algo como:

if((countD % 10) == 0) buzz(2, 2500, 500);

EDIT

El código actualizado no funcionará según lo previsto. El operador% o "módulo" devuelve el resto de la división por el número. Así por ejemplo 8% 2 = 0 ya que 2 entra en 8 exactamente. 8% 3 = 2, ya que 2 solo va dos veces a 8 con el resto 2.
Entonces, puedes ver que el resultado no puede ser más alto que el valor de módulo, por lo que countD % 10 == 70 nunca será verdadero. Si también desea que vibre en cada 70. ° conteo, use if ((countD % 70) == 0) buzz(2, 6000, 500); , esto zumbará en el 70. ° conteo, 140. °, 210. ° y así sucesivamente.

Si necesita especificar cada 10º conteo entre ciertos valores, entonces combine el mod con una comprobación lógica y así:

if(((countD % 10) == 0)) && ((countD > 10) && (countD < 70))) buzz(2, 4000, 500);

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas