elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Se repite el mensaje de salida
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Se repite el mensaje de salida  (Leído 850 veces)
Meta


Desconectado Desconectado

Mensajes: 3.275



Ver Perfil WWW
Se repite el mensaje de salida
« en: 17 Noviembre 2015, 16:06 pm »

Hola:

Hice un código de prueba sobre encender y apagar un Led 13 con Arduino UNO r3, con un pulsador en entrada digital número 8. Este es su código.

Código:
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");
    }
}


He intentado hacer la misma función pero sigue con el mismo problema de enviar mensajes a lo loco como si fuera un bucle.

Código:
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");
}
}

Para quitar el bucle, hice esto de otra manera pero no funciona nada de nada.
Código:
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.
}

A parte de encender un Led, no hay ningún problema, si al enviar mensaje de texto como HIGH o LOW de forma muy repetitiva hasta colapsar el otro programa que tengo al recibir mensajes. El otro programa en un ordenador de sobre mesa con Visual Studio 2015.

¿Hay alguna solución?

Un cordial saludo.


En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
Meta


Desconectado Desconectado

Mensajes: 3.275



Ver Perfil WWW
Re: Se repite el mensaje de salida
« Respuesta #1 en: 20 Noviembre 2015, 07:54 am »

Hola

Me respondo a mi mismo.

Código
  1. int estadoBoton=0; // Guardará el estado del botón HIGH o LOW.
  2. char caracter;
  3. String comando;
  4. int flag = 0;
  5.  
  6. void setup()
  7. {
  8.  pinMode(13,OUTPUT); // Donde está el Led 13.
  9.  pinMode(8,INPUT); // Entrada digital donde está el pulsador.
  10.  Serial.begin(115200);
  11. }
  12.  
  13. void loop()
  14. {
  15.    estadoBoton=digitalRead(8); // Leer entrada digital número 8.
  16.    switch (estadoBoton)
  17. {
  18.  case 0:
  19.      if(flag == 1){
  20.      flag= 0;
  21.      digitalWrite(13,HIGH);
  22.      Serial.println("HIGH");
  23.      }
  24.      break;
  25.  
  26.  case 1:
  27.      if(flag == 0){
  28.      flag= 1;
  29.      digitalWrite(13,LOW);
  30.      Serial.println("LOW");
  31.    }
  32.      break;
  33.      default:
  34.      Serial.println("Error desconocido");
  35. }
  36. }

O este otro.
Código
  1. byte estadoBoton = 0; // Guardará el estado del botón HIGH o LOW.
  2. byte estadoBotonAnt = 0;
  3. long lastDebounceTime = 0;
  4. char caracter;
  5. String comando;
  6.  
  7. void setup(){
  8.  pinMode(13,OUTPUT); // Donde está el Led 13.
  9.  pinMode(8,INPUT);   //
  10.  Serial.begin(115200);
  11. }
  12. void loop() {
  13.    estadoBoton = digitalRead(8); // Leer entrada digital número 8.
  14.    // Si el pulsador está pulsado, se enciende el Led 13 y
  15.    // envía comando HIGH por el puerto serie.
  16.  if ((millis() - lastDebounceTime) > 100)
  17.  {
  18.    if (estadoBoton == HIGH && estadoBotonAnt == LOW) {
  19.        digitalWrite(13,HIGH);
  20.        Serial.println("HIGH");
  21.    }
  22.       // De lo contrario, Led 13 epagado y envía LOW al puerto serie.
  23.         if (estadoBoton == LOW && estadoBotonAnt == HIGH) {
  24.      digitalWrite(13,LOW);
  25.      Serial.println("LOW");   // sin el agregado de este if tendrian cientos de LOW en el MOnitor Serie
  26.    }
  27.    estadoBotonAnt = estadoBoton;
  28.  }
  29. }

Saludos, ;)


En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Detectar si se repite una combinacion....
Programación Visual Basic
hepy_92 4 1,644 Último mensaje 25 Junio 2007, 20:02 pm
por CeLaYa
Se repite... « 1 2 3 »
Programación Visual Basic
CAR3S? 24 4,730 Último mensaje 30 Diciembre 2010, 16:59 pm
por Novlucker
PHP, SQL y contenido aleatorio que se repite
Desarrollo Web
UNFORMAT 2 2,947 Último mensaje 20 Junio 2011, 13:06 pm
por barbieturico
¿Cómo marcar automáticamente la opción guardar mensaje en buzón de salida?
Sugerencias y dudas sobre el Foro
avesudra 4 3,865 Último mensaje 7 Julio 2012, 12:42 pm
por avesudra
repetidor no repite
Redes
virusinxs 1 899 Último mensaje 16 Octubre 2015, 23:51 pm
por Sk9ITk5Z
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines