Arduino - Reconocer numeraciones en arduino

 
Vista:
sin imagen de perfil

Reconocer numeraciones en arduino

Publicado por jorge1011 (5 intervenciones) el 29/11/2018 04:12:05
Saludos alguien me puede ayudar en reconocer numeraciones que escriba uno con el teclado por ejemplo 400 para encender led en pin 13 y otra numeración de 3 números para apagar, alguien me puede ayudar, saludos.


Como poder modificar encendido con 400 y con otro numero apagar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
int LED = 5; // Pin digital para el LED
  char entrada; // Variable para guardar el valor del carácter enviado
 
  void setup()
  {
    pinMode(LED, OUTPUT); // Pin digital del LED como salida.
    Serial.begin(9600); // Velocidad de comunicación en baudios.
  }
 
  void loop()
  {
    if (Serial.available() > 0) // Si se recibe un carácter...
    {
      entrada = Serial.read(); // Guardamos el valor del carácter en la variable entrada.
 
      if ((entrada=='D')||(entrada=='d')) // Si el carácter recibido es "D" o "d"
      {
        digitalWrite(LED, HIGH); // Se enciende el LED
        Serial.print("Se ha enviado una "); // Mostramos valores a través del monitor serie
        Serial.write(entrada);
        Serial.print(" --> LED ENCENDIDO!!!");
        Serial.print("\n");
      }
      else if ((entrada=='I')||(entrada=='i')) // Si el carácter recibido es "I" o "i"    
      {
        digitalWrite(LED, LOW); // Se apaga el LED
        Serial.print("Se ha enviado una "); // Mostramos valores a través del monitor serie
        Serial.write(entrada);
        Serial.print(" --> LED APAGADO!!!");
        Serial.print("\n");
      }
    }
  }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 40
Ha mantenido su posición en Arduino (en relación al último mes)
Gráfica de Arduino

Reconocer numeraciones en arduino

Publicado por foroplus (18 intervenciones) el 30/11/2018 19:45:26
Te escribo una subrutina programada para leer el típico teclado de 16 teclas (4x4) de los Arduino y para una pantalla LCD. Creo que los dispositivos que se diseñen en Arduino deben ser autónomos y por tanto no emplear el recurso de Serial que sólo es para depurar la programación.
Con pequeñas variaciones se puede emplear con un módulo bluetooth HC-05 o HC-06, con lo que desde un teléfono móvil se podría emplear de teclado y mandar las órdenes a las que haces referencia.
Necesitas una rutina tipo Input de los lenguajes de programación, que te pida un dato y vaua capturando las pulsaciones de las teclas para almacenarlas en una cadena, que tras pulsar la tecla ENTER (en nuestro caso #) la devuelva.
La rutina "Input()" que te propongo es:

1
2
3
4
5
6
7
8
9
10
String Input(String pregunta)
{
String cadena="";tecla=' '; //inicializamos
lcd.print(pregunta+" ");
while (tecla!='#'){
  tecla=Teclado.getKey();
  if ((tecla>31) && (tecla!=35)) {lcd.print(tecla);cadena+=String(tecla);}
  }
return cadena;
}

De tal manera que su empleo podría ser:
String resultado=Input("Comando?"); //LLama a la rutina y en pantalla pide que se introduzca el comando, en tu caso numerico, pero podría ser cualquier otro.
// La rutina va generando una cadena de caracteres, los que se vayan pulsando, hasta que se aprieta la tecla #, que es la de finalización de la entrada y devuelve la cadena que se ha tecleado. Por ejemplo si tecleas 400#, en la cadena "resultado" se cargaría 400.
lcd.print(resultado); // Despues de la llamada a la cadena, puedes hacer lo que quieras con el contenido de resultado. Aquí simplemente se imprime.

Si quieres emplear el teclado del móvil a través del bluetooth, añade lo siguiente (esto dependerá de la librería bluetooth que utilices, ya que no es de la que trae Arduino por defecto):

En void setup:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void setup(void) {
  SerialBT.begin("Miproyectoescucha"); //Nombre que tendrá tu aparato e inicialización del Bluetooth  
......Otros códigos de inicialización de tu programación.
.....................................
.....................................
}
//***********************************************************************************************
// Añadir la siguiente rutina al código
// Rutina para capturar las entradas de teclado del móvil a través de bluetooth.
char getKey()
{
if (SerialBT.available()) {
  byte bblue=SerialBT.read();
  return char(bblue);
  }
}

A partir de aquí, podrás utilizar la rutina Input() que te puse al principio, cambiando la línea:
tecla=Teclado.getKey();
por
tecla =getKey();
para que utilice la rutina getKey() de captura de pulsaciones por bluetooth.

Y si deseas seguir probando con el puerto Serie que trae el entorno arduino como tienes en tu código, la rutina ggetKey() sería:

1
2
3
4
5
6
7
8
//***********************************************************************************************
char getKey()
{
if (Serial.available() > 0) {
  byte bblue=Serial.read();
  return char(bblue);
}
}

Espero que te valga.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar