neoff
October 5, 2015, 9:00pm
1
Hola, me presento soy Alfonso.
Llevo tiempo leyendo, he aprendido un poco de C y ahora estoy empezando a programar un Arduino para un control simple de riego.
Tengo una pregunta (bueno muchas pero ahora mismo solo una ^^)
Me gustaría saber como escribir en una variable a través del teclado, no encuentro nada en la red que me oriente, se escribir al pulsar una tecla, pero lo que yo quiero es introducir un valor. Algo así como el scanf en C
Por ejemplo:
Introduzca el porcentaje de humedad al que quiera regar.
---Y aquí introducir el valor----
Bueno gracias por vuestro tiempo un saludo.
Jopapa
October 6, 2015, 5:19pm
2
Bienvenido Alfonso
Te pongo un código de un programa mio que lee un teclado 4x4 y va almacenando las pulsaciones en la variable "teclas"
Espero te sirva de orientación cogiendo las partes que necesites.
#include "Keypad.h"
#include <AH_AD9850.h>
AH_AD9850 AD9850(10, 11, 12, 13);
const byte ROWS = 4; //cuatro rows
const byte COLS = 4; //cuatro columnas
char keys[ROWS][COLS] =
{{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}};
byte rowPins[ROWS] = { 2, 3, 4, 5}; //connectar filas a pin del Arduino
byte colPins[COLS] = { 6, 7, 8, 9}; //connectar columnas a pin del Arduino
//byte rowPins[ROWS] = { 0, 1, 2, 3}; //connectar filas a pin del Arduino
//byte colPins[COLS] = { 4, 5, 6, 7}; //connectar columnas a pin del Arduino
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int NuMax; //limitar a 8 digitos la frecuencia
String teclas; //tecla que se va pulsando y su concatenación
char cadena[9]; //para poder hacer la conversion a número
long frecuencia; //f a mostrar
char key[1]; //captura tecla
void setup()
{
Serial.begin(9600) ;
NuMax = 0;
}
void loop()
{
// AD9850.set_frequency(0,0,1000);
leerKeypad();
}
void leerKeypad()
{
char key = keypad.getKey();
if (key != NO_KEY){
if (NuMax < 9) {
switch (key) {
case '1':
teclas = (teclas + "1");
NuMax ++;
delay(150);
break;
case '2':
teclas = (teclas + "2");
NuMax ++;
delay(150);
break;
case '3':
teclas = (teclas + "3");
NuMax ++;
delay(150);
break;
case '4':
teclas = (teclas + "4");
NuMax ++;
delay(150);
break;
case '5':
teclas = (teclas + "5");
NuMax ++;
delay(150);
break;
case '6':
teclas = (teclas + "6");
NuMax ++;
delay(150);
break;
case '7':
teclas = (teclas + "7");
NuMax ++;
delay(150);
break;
case '8':
teclas = (teclas + "8");
NuMax ++;
delay(150);
break;
case '9':
teclas = (teclas + "9");
NuMax ++;
delay(1500);
break;
case '0':
teclas = (teclas + "0");
NuMax ++;
delay(150);
break;
}
}
switch (key) {
case '*':
teclas = "";
NuMax = 0;
teclas = "";
delay(200);
break;
case '#':
delay(200); // for extra debounce
teclas.toCharArray(cadena,9);
frecuencia=atol (cadena); // convierte cadenas tipo string a numero
Serial.println (frecuencia);
AD9850.set_frequency(frecuencia);
teclas = "";
NuMax = 0;
break;
case 'A':
delay(200); // debounce
Serial.println (1000);
AD9850.set_frequency(1000);
teclas = "";
NuMax = 0;
break;
case 'B':
delay(200); // debounce
Serial.println (10000);
AD9850.set_frequency(10000);
teclas = "";
NuMax = 0;
break;
case 'C':
delay(200); // debounce
Serial.println (100000);
AD9850.set_frequency(100000);
teclas = "";
NuMax = 0;
break;
case 'D':
delay(200); // debounce
Serial.println (1000000);
AD9850.set_frequency(1000000);
teclas = "";
NuMax = 0;
break;}
}
}
neoff
October 6, 2015, 7:12pm
3
Muchas gracias. Voy a ver que saco en claro. Un saludo.
Pudiste realizarlo?? Yo quiero hacer lo mismo, modificar mediante el teclado, el valor de una temperatura a la cual se activa un relay.
Surbyte
October 21, 2018, 10:59pm
5
@waldoratti hilo del 2015!!
No revivas hilos
Lee las normas del foro
Hilo cerrado gracias a tu gentileza