Hola soy nuevo en esto y necesito ayuda. Me hace la función que quiero pero al momento de hacer el print hacer varios ala vez sin presionar el botón

byte conteo;
bool estadoPrevio;

void setup()
{
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(7, INPUT);
digitalWrite(8, HIGH); // Asegurar led apagado al iniciar
}

void loop()
{
bool estadoPulsador = digitalRead(7);
if (estadoPulsador != estadoPrevio) {
if (estadoPulsador == HIGH) {
conteo++;
}
delay(100);
}
estadoPrevio = estadoPulsador;
if (conteo % 2 == 0) {
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
Serial.println("OCUPADO");
}
else {
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
Serial.println("DESOCUPADO");

}
}

:warning:
Código corregido

Tu publicación fue ** MOVIDA ** a su ubicación actual ya que es más adecuada.

¿Podría también tomarse unos minutos para Aprenda a usar el foro .

Normal, fijate que si no pulsas el boton siempre se esta ejecutando el " else ". tendras que usar una variable tipo bool para gestionar si ya has hecho una impresion o no.
Algo parecido a esto:

byte conteo;
bool estadoPrevio;
bool flag;

void setup(){
  Serial.begin(9600);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(7, INPUT);
  digitalWrite(8, HIGH); // Asegurar led apagado al iniciar
}

void loop() {
  bool estadoPulsador = digitalRead(7);
  if (estadoPulsador != estadoPrevio) {
    if (estadoPulsador == HIGH) {
    conteo++;
    }
    delay(200);
  }
  estadoPrevio = estadoPulsador;
  if (conteo % 2 > 0 && flag == 1) {
    digitalWrite(8, LOW);
    digitalWrite(9, HIGH);
    Serial.println("OCUPADO");
    flag = 0;
  }
  if (conteo % 2 == 0 && flag == 0) {
    digitalWrite(8, HIGH);
    digitalWrite(9, LOW);
    Serial.println("DESOCUPADO");
    flag = 1;
  }
  if (conteo > 1) {conteo = 0;}
}
1 Like

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.
No se puede entrar a un foro y no observar que todos hablan en inglés, simplemente me llama la atención que todos los días 3 o 4 nuevos foreros cometan este error.
Por eso movieron tu publicación al Foro en español.
Has puesto un titulo inmenso, para empezar. Todos los que postean necesitan ayuda asi que pedirla está de mas.
Te dejo cómo debe ser un título en este foro:
5. Piensa un título y descriptivo
Trata de resumir tu problema con un título inteligente, útil e informativo.
Un título útil salta a la vista de las personas que podrían conocer la respuesta. Los títulos inútiles son los que deberías evitar.
Ejemplos de títulos inútiles que deberías evitar:
• ERROR EN CODIGO, AYDUA URGENTE
• Problema al programar
• Tengo un error
• Error
• Tendré problemas?
• Novato en apuros
• POR FAVOR NECESITO AYUDA RAPIDO!!!!
Ejemplo de un buen título:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.