Go Down

Topic: [SOLUCIONADO] Regresar una cadena a cero, iniciar cadena (Read 122 times) previous topic - next topic

magg58

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:

Code: [Select]

#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!!!

Dystrom

Para inicializar una cadena puedes hacerlo con un IF que recorra la matiz y vaya cargando un 0.


magg58

Hola Dystrom, muchas gracias por responder, disculpa mi ignorancia pero me podrías ayudar con un ejemplo por favor?

De antemano Muchas gracias

Saludos !!!

noter

Para un string, creo que sencillamente así:

teclas="";


magg58

Hola  Noter, woooowwww muchisisimas gracias por responder, me funciono perfectamente, te agradezco mucho, muchas gracais!!!

Gracias a todos por resolver mis dudas, muchas gracias,

saludos!!!

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy