I much repeated messages from the serial port

Hello:

I did a test code to turn on and off a LED 13 with Arduino Uno R3, with a button on digital input number 8. This is your code.

int estadoBoton=0; // Guardará el estado del botón HIGH o LOW.
char caracter;
String comando;

void setup()
{
  pinMode(13,OUTPUT); // Donde está el Led 13.
  pinMode(8,INPUT); // Entrada digital donde está el pulsador.
  Serial.begin(115200);
}

void loop()
{
    estadoBoton=digitalRead(8); // Leer entrada digital número 8.
    // Si el pulsador está pulsado, se enciende el Led 13 y
    // envía comando HIGH por el puerto serie.
 if (estadoBoton == HIGH)
    {
      digitalWrite(13,HIGH);
      Serial.println("HIGH");
    }
 // De lo contrario, Led 13 epagado y envía LOW al puerto serie.
 else
    {
      digitalWrite(13,LOW);
      Serial.println("LOW");
    }
}

I tried to do the same function but still with the same problem to send messages like crazy like a loop.

int estadoBoton=0; // Guardará el estado del botón HIGH o LOW.
char caracter;
String comando;

void setup()
{
  pinMode(13,OUTPUT); // Donde está el Led 13.
  pinMode(8,INPUT); // Entrada digital donde está el pulsador.
  Serial.begin(115200);
}

void loop()
{
    estadoBoton=digitalRead(8); // Leer entrada digital número 8.
    // Si el pulsador está pulsado, se enciende el Led 13 y
    // envía comando HIGH por el puerto serie.
      
    switch (estadoBoton)
{
  case 0:
      digitalWrite(13,HIGH);
      Serial.println("HIGH");
      break;
      
  case 1:
      digitalWrite(13,LOW);
      Serial.println("LOW");    
      break;
      default:
      Serial.println("Error desconocido");
}
}

To remove the loop, otherwise it did not work but nothing.

int estadoBoton=0; // Guardará el estado del botón HIGH o LOW.
char caracter;
String comando;

void setup()
{
  pinMode(13,OUTPUT); // Donde está el Led 13.
  pinMode(8,INPUT); // Entrada digital donde está el pulsador.
  Serial.begin(115200);


     
    switch (estadoBoton)
{
  case 0:
      digitalWrite(13,HIGH);
      Serial.println("HIGH");
      break;
     
  case 1:
      digitalWrite(13,LOW);
      Serial.println("LOW");     
      break;
      default:
      Serial.println("Error desconocido");
}
}

void loop()
{
        estadoBoton=digitalRead(8); // Leer entrada digital número 8.
    // Si el pulsador está pulsado, se enciende el Led 13 y
    // envía comando HIGH por el puerto serie.
}

In addition to light a LED, there is no problem, whether by sending a text message as HIGH or LOW very repetitive way to collapse the other program that I have to receive messages. The other program on a computer on table with Visual Studio 2015.

Is there any solution?

Best regards.

If you want something to happen over and over, you have to put it in loop().

I suspect that your problem is that the first sketch is sending data when the switch IS pressed, not when the switch BECOMES pressed. Look at the state change detection example, to see how to turn the LED on/send the message when the switch BECOMES pressed, and to turn the LED off/send the message when the switch BECOMES released.

Hello:

Can you give an example?

Thanks for answering.

Can you give an example?

An example of you looking at an example? No, I can't.

Hello:

int estadoBoton=0; // Guardará el estado del botón HIGH o LOW.
char caracter;
String comando;
int flag = 0;

void setup()
{
  pinMode(13,OUTPUT); // Donde está el Led 13.
  pinMode(8,INPUT); // Entrada digital donde está el pulsador.
  Serial.begin(115200);
}

 void loop()
{
    estadoBoton=digitalRead(8); // Leer entrada digital número 8.
    switch (estadoBoton)
{
  case 0:
      if(flag == 1){
      flag= 0;
      digitalWrite(13,HIGH);
      Serial.println("HIGH");
      }
      break;

  case 1:
      if(flag == 0){
      flag= 1;
      digitalWrite(13,LOW);
      Serial.println("LOW");
    }
      break;
      default:
      Serial.println("Error desconocido");
}
}

;)

I think you are not allowing for the speed of an Arduino. The code in loop() will repeat hundreds or thousands of times per second. As a crude solution try adding delay(200); as the last line inside loop()

...R

byte estadoBoton = 0; // Guardará el estado del botón HIGH o LOW.
byte estadoBotonAnt = 0;
long lastDebounceTime = 0;
char caracter;
String comando;

void setup(){
  pinMode(13,OUTPUT); // Donde está el Led 13.
  pinMode(8,INPUT);   //
  Serial.begin(115200);
}
void loop() {
    estadoBoton = digitalRead(8); // Leer entrada digital número 8.
    // Si el pulsador está pulsado, se enciende el Led 13 y
    // envía comando HIGH por el puerto serie.
  if ((millis() - lastDebounceTime) > 100)
  {
    if (estadoBoton == HIGH && estadoBotonAnt == LOW) {
        digitalWrite(13,HIGH);
        Serial.println("HIGH");
    }
       // De lo contrario, Led 13 epagado y envía LOW al puerto serie.
         if (estadoBoton == LOW && estadoBotonAnt == HIGH) {
      digitalWrite(13,LOW);
      Serial.println("LOW");   // sin el agregado de este if tendrian cientos de LOW en el MOnitor Serie
    }
    estadoBotonAnt = estadoBoton;
  }
}

@Metaconta, you have posted code in Reply #6 without adding any comment.

Does that mean it is now working properly?

...R

Hi:

No code works 100%. I have to improve the anti-kickback.

;)

Does that mean it is now working properly?

Metaconta: No code works 100%.

I have not seen a better example of an incomprehensible reply.

...R

Hello:

Me and works very well. We must put delay (100); at the end of the instruction as shown below.

byte estadoBoton = 0; // Guardará el estado del botón HIGH o LOW.
byte estadoBotonAnt = 0;
char caracter;
String comando;

void setup()
{
  pinMode(13,OUTPUT); // Donde está el Led 13.
  pinMode(8,INPUT);   //
  Serial.begin(115200);
}

void loop() {
    
    estadoBoton = digitalRead(8); // Leer entrada digital número 8.
    
    // Si el pulsador está pulsado, se enciende el Led 13 y
    // envía comando HIGH por el puerto serie.
    if (estadoBoton == HIGH && estadoBotonAnt == LOW)
    {
        digitalWrite(13,HIGH);
        Serial.println("HIGH");
        delay(100);
    }
    
    // De lo contrario, Led 13 epagado y envía LOW al puerto serie.
    if (estadoBoton == LOW && estadoBotonAnt == HIGH) {
        digitalWrite(13,LOW);
        Serial.println("LOW");   // sin el agregado de este if tendrian cientos de LOW en el Monitor Serie.
        delay(100);
    }
     estadoBotonAnt = estadoBoton;
}

Best regards.

PS: I'm using translate.google.com because not English, so difficult to understand.

PS: I'm using translate.google.com because not English, so difficult to understand.

What language do you speak? There are other languages available on the forum, or perhaps someone else here that speaks the same language.