Problema en código para hacer una alerta sísmica

¡Hola! ¿Me pueden ayudar con mi código?
Eh tenido problemas con este código, ya que cuando empiezo a subir el código en seguida que lo detecta la placa, enciende la alarma sin ninguna razón, eh visto que tal vez puede ser el problema de un rebote pero no encuentro la falla, por favor si alguien me puede ayudar a checar donde esta el error en este código.

Es una alarma sisimica la que estoy haciendo en vez de sensores usa un péndulo que detecta movimiento, pero esta tiene un estado de vigilancia que detecta si es un movimiento improvisado a uno movimiento constante y lo que hace es que se activa (Pero no lo hace).

Datos del arduino
*Arduino UNO
*El péndulo esta hecho de un material que transmite corriente al igual que la base en la que choca.

sismo010101.txt (11 KB)

Hola buen dia, como veras no has recibido ninguna respuesta, eso pasa por no leer las normas del foro, los codigos deben ir entre etiquetas y no como tu lo hiciste en archivo de texto, ahora corrige eso y es mas probable que recibas ayuda.
Pasando a tu problema:

eh visto que tal vez puede ser el problema de un rebote

¿A que rebote te refieres?
En lo que respecta tu codigo,

1.- el primer GRAN problema es que usas muchisimos delay, ademas usas uno que dura 5 segundos, en esta parte de tu codigo:

case 0: //ESTADO SE ENCENDIDO
  
      digitalWrite(ledpin1,HIGH);
      delay(100); 
      digitalWrite(ledpin1, LOW);
      delay(5000);
       numero = 1;
     break;

Que pasa aqui? enciendes el led durante 100 milisegundos e inmediatamente despues haces una pausa de 5 segundos y nuevamente otra pausa de 100 milisegundos, eso quiere decir que tu arduino estará en pausa casi casi por siempre, por lo que practicamente nunca detectara el cambio de estado de tu sensor

2.- tienes esto:

if (estadosensor == HIGH) { 
    numero = numero + 1; 
  }

y luego usas un switch() -case, y dentro de el case:1 pones esto:

if (estadosensor == LOW){ 
numero = 1;  }
else{
 numero = 2;

estas generado conflicto en la variable numero. En el if le dices que si el estado del sensor es alto, numero sume uno, pero al mismo tiempo dentro del case 1 le dices que si el estado del sensor es alto numero es igual a 2, con eso tu codigo nunca va hacer lo que tu quieres.

3.-En el case:3 tienes repetidamente esto:

analogWrite(zumb,1235);

eso no es correcto, esta función analogWrite(); trabaja a 8 bits, eso quiere decir que solo puedes tener valores de 0 a 255 y NO 1235.

Como ves, tu código está plagado de errores, yo te recomendaría le des un vistazo a la sección de documentación ahí encontraras buenos tutoriales en texto y videos, después trata de corregir todos esos errores en tu código o mejor aun, hazlo nuevamente eliminando los delay que ocasionan muchos problemas.

Otra cosa: seria bueno que dieras datos de como tienes conectado tu sensor,porque creo que ahí también puede haber un error, de preferencia un diagrama,

Saludos

Amigo yo te sujiero que hagas una alerta sismica con sensores acelerometros ya que pueden detectar movimientos microscopicos, yo igual estoy haciendo una para mi tesis de ingeniería.