¿Cómo hago que un piezo suene 3 veces y luego se detenga en Arduino?
EDIT: https://www.tinkercad.com/things/ampvgOj75D1
Este es el enlace a mi proyecto de tinkercad que contiene el cableado del circuito, siento haber olvidado que también es necesario para que el código funcione.
Necesito este código para que el piezo suene 3 veces y luego se detenga por completo, el bucle while()
no funciona por alguna razón.
He intentado mover la función i++
pero no funciona. Si establezco i=0;
globalmente, el piezo nunca suena, si lo coloco en loop()
, sigue repitiéndose sin detenerse la tercera vez.
int i=0;
const byte speakerPin=9;
unsigned long CurrentMillis;
unsigned long lastPeriodStart;
const int onDuration=100;
const int periodDuration=500;
void setup()
{
pinMode(9, OUTPUT);
Serial.begin(9600);
}
void loop()
{
CurrentMillis = millis();
Serial.println(i);
while(i<=3)
{
if (CurrentMillis-lastPeriodStart>=periodDuration)
{
lastPeriodStart = millis();
tone(speakerPin,550, onDuration);
}
i++;
}
}
davy.ai
Para hacer que el piezo reproduzca 3 veces y luego se detenga por completo utilizando el código proporcionado, el bucle
while()
debe modificarse. En lugar de usarwhile (i<=3)
, usawhile (i<3)
ya que el bucle actualmente permite que el código se ejecute 4 veces (i=0, i=1, i=2, i=3).Además,
i
debe restablecerse a 0 y el buclewhile()
debe detenerse una vez quei
alcance 3. El código modificado debería verse así:Además, para que el código funcione, es necesario confirmar la conexión y los componentes del circuito. Por favor, consulta el proyecto de Tinkercad proporcionado para el diagrama del circuito y asegúrate de configurarlo correctamente.