Galera eu queria fazer um esquema que funcionaria assim, eu coloco um valor e do #(enter) e ae ele pede outro valor e ae eu aperto novamente #(enter) e ae comece a fazer o meu que meu programa tem que fazer com esses dois numeros, mas cada um desses tem até centenas!!
Como eu faço isso?????
Tags:
Eu tenho isso até agora
#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const byte linhas = 4;
const byte colunas = 4;
char teclas[linhas][colunas] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pinlinhas[linhas] = {22, 24, 26, 28};
byte pincolunas[colunas] = {52, 50, 48, 46};
Keypad keypad = Keypad( makeKeymap(teclas), pinlinhas, pincolunas, linhas, colunas );
void setup(){
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("TECLA");
}
void loop(){
char teclas = keypad.getKey();
if (teclas != NO_KEY){
lcd.setCursor(0, 1);
lcd.print(teclas);
}
}
ae disso eu to tentando ver como vou fazer para fazer com que eu coloque um numero tipo 52 ae do enter ae coloco um numero 110 ae do enter e ae eu giro um motor de passo pra 52 passos e o outro motor de passo para 110 passos mas a parte dos passos eu tenho aqui como programar o problema vai ser essa junção de 2 ou tres numeros e o enter(#)
sim mas quando eu pressiono uma tecla ela lé só que quando eu vou pressionar a segunda tecla ela substitui a anterior!
e como eu faço isso????
O João Arthur tem razão.
Uma vez eu fiz uma função que faz exatamente o que você quer: ler um valor numérico pelo keypad até o usuário pressionar #.
Veja no meu blog abaixo e procure pelo código-fonte a função readVal
Coloque essa função no seu código e chame-a 2 vezes. guardando os valores nas variáveis que você desejar.
Não se esqueça que essa função devolve uma String. Mas aí é só convertê-la para int ou float na medida da sua necessidade. Tem um exemplo disso também no código.
Obs: O playTone é só para dar um sinal sonoro no pressionamento das teclas. Você poder retirá-lo. O lcd também é opcional
então o readVal n esta funcionando!!!
É q eu n manjo de string tipo colocar um char em cada uma das strings depois concatenar elas e depois transformar elas em numero.
n entendi essa da senha * 10
tipo eu começo
int senha = 0;
ae la em baixo eu colocaria
char teclas = keypad.getKey();
if (teclas != '#'){
senha = senha * 10 + (incomungByte - 48);
}
????????????
A função readVal já faz tudo isso pra você. Apenas coloque-a no final do seu código e depois no programa principal faça isso:
int num1 = readVal().toInt();
int num2 = readVal().toInt();
Ela vai trazer para as variáveis num1 e num2 os dois valores lidos
em qual variavel ele guarda cada um dos dois??? pq ficou assim
#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const byte linhas = 4;
const byte colunas = 4;
char teclas[linhas][colunas] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pinlinhas[linhas] = {22, 24, 26, 28};
byte pincolunas[colunas] = {52, 50, 48, 46};
Keypad keypad = Keypad( makeKeymap(teclas), pinlinhas, pincolunas, linhas, colunas );
void setup(){
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("TECLA");
}
void loop(){
lcd.clear();
lcd.setCursor(0, 0);
int hit = readVal().toInt();
lcd.setCursor(0, 1);
}
String readVal(){
String myString = "";
char keyPressed = keypad.getKey();
while (keyPressed != '#'){
keyPressed = keypad.getKey();
if ((keyPressed != NO_KEY) && (keyPressed != '#')) {
myString.concat(keyPressed);
lcd.print(keyPressed);
}
}
return(myString);
}
porque seria mais ou menos assim,
motor 1: digitar numero
motor2: digitar numero
e ae eu jogo cada uma dessas variaveis nos passos do motor!!
E esse toInt ja faz o valor lido virar numero ou eu tenho que transformar ele me numero????
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por