Que tal
buen dia, un gusto saludarles, gracias por sus atenciones, les comento que soy principiante en arduino, sin embago me ha fascinado todo lo que se puede hacer, por lo que les agradezco todos sus comentarios,
en este caso lo que he intentado realizar es que a traves de un teclado matricial se ingresen datos a una cadena de valores y que al presionar la tecla # se pueda inicializar un contador, cosa que ya he realizado, sin embargo al momento de que el contador termina, la cadena sigue guardando los valores tecleados, cosa que quisiera que se borrara para que pueda regresar a cero y se incialize todo de nuevo,
sera posible me pudieran ayudar por favor?
les agrego mi codigo, para ver si surge alguna idea:
#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const byte rows=4;
const byte cols=4;
byte rowPins[rows] = {14,15,16,17};
byte colPins [cols] = {18,19,20,21};
int redPin=10;
int greenPin=9;
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
int posicion = 0; //variable que se incrementara al presionar las teclas presionadas
long frecuencia; //f a mostrar
char keys[rows][cols]= {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
Keypad teclado= Keypad(makeKeymap (keys),rowPins,colPins,rows,cols);
char digito;//captura tecla
//VARIABLES DEL CONTADOR
int estado;// variable utilizada para revisar el estado del sensor
int contador=0; // ESTA ES LA VARIABLE QUE CONTABILIZARA
int contadoracumulado=0;
const int buzzer=7;
int sensorPin = 8; //pin para recibir la señal del transisto
long hojas;
void setup()
{
lcd.begin(16, 2);// "PONE AL LCD HOLA"
lcd.print("HOLA!");
delay (2000);
lcd.clear ();
lcd.setCursor (0,0);
lcd.print("CANTIDAD HOJAS?");
pinMode (redPin,OUTPUT);
pinMode (greenPin, OUTPUT);
pinMode(sensorPin,INPUT); //DEFINIENDO EL PIN DEL SENSOR, ES DECIR EL SENSOR 8 COMO PIN DE ENTRADA
pinMode (buzzer, OUTPUT);
Serial.begin (9600); //inicia el seria para poder leer datos
} // FIN DEL VOID SETUP
void loop()
{
NuMax ==0;
digito= teclado.getKey();
if( digito != NO_KEY ) //SI EL DIGITO NO TIENE TECLA PRESIONADA,
// ES DECIR, SI, SI SE PRESIONO ALGO HAZ...
{//INICIA IF DIGITO!= NO KEY
if (digito!='#')
{
if (NuMax < 9) {
switch (digito) {
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;
}
teclas.toCharArray(cadena,9);
frecuencia=atol (cadena); // convierte cadenas tipo string a numero
// Serial.println (frecuencia);
hojas=frecuencia;
Serial.println (hojas);
}//FIN DEL IF NUMAX
}// FIN DEL IF !=#
else
{
hojas=frecuencia;
contadorhojas();
}//FIN DEL ELSE !#
} // FIN DEL IF KEY!=NOKEY
}//FIN DE VOID LOOP
//INICIA CONTADOR
void contadorhojas()
{
hojas=frecuencia;
contador=0;
while (contador<=hojas)
{
estado = digitalRead(sensorPin); //LEE LA SEÑAL DEL SENSOR ALTO O BAJO
if (contadoracumulado != estado)
{
if (estado == HIGH)
{ // SI EL SENSOR DETECTA UN OBJETO
digitalWrite(greenPin,HIGH); //APAGA EL LED
digitalWrite(redPin,LOW); //APAGA EL LED
contador++;
lcd.print(contador);
Serial.println (contador);
//Serial.println (contador);
analogWrite(7,0);
}
else
{
digitalWrite(greenPin,LOW); //PRENDE EL LED CUANDO EL OBJETO ESTE PRESENTE
digitalWrite(redPin,HIGH); //PRENDE EL LED CUANDO EL OBJETO ESTE PRESENTE
analogWrite(7,20);
delay (100);
analogWrite(7,0);
}
contadoracumulado=estado;
}//fin del if CONTADOR
}//fin del if contador=hojas
Serial.print ("CONTADO=HOJAS");
analogWrite(7,20);
delay (100);
analogWrite(7,0);
analogWrite(7,20);
delay (100);
analogWrite(7,0);
}// fin de VOID CONTADORHOJAS
de antemano les agradezco toda su ayuda, y su paciencia para este tema
Muchas gracias por todo
saludos
gracias!!!
TECLADOVARIABLE4.ino (4.29 KB)