Go Down

Topic: Ayuda novato, problema contaje  (Read 63 times) previous topic - next topic

clotet

buenas tardes, soy novato en programación con arduino y tengo problemas para conseguir incrementar o restar un valor a una variable guardada.

En pocas palabras, el proyecto se trata de realizar un TRIP (odometro programable). El tema esta en que he podido conseguir obtener la distancia recorrida (actualmente con un pulsador, pero más adelante mediante un sensor estilo bici), pero la segunda parte y lo que es importante en un TRIP es poder ajustar la distancia mediante pulsadores.
En esta parte es donde tengo los problemas y me gustaría si pudierais ayudarme. He estado buscando ejemplos pero no he conseguido sacar conclusiones.

El problema esta en que tengo una variable en que se acumula la distancia recorrida y es sobre esta (en mi opinión) sobre la que tendría que, mediante 2 pulsadores (uno de suma y otro de resta) poder modificar la distancia a mi medida.

Adjunto el sketch que he realizado:
const int SensorPin = 2; //Pin donde se conecta el sensor de la rueda
const int LedPin = 8;  //Pin donde se conecta el LED de verificación
int LecturaSensor = 0; //Variable que contiene el valor del sensor
int Pulsos=0; //Variable para contar el numero de pulsos
float radioEnCm=30.0;   //ingresar radio de la rueda en cm
float pi=3.14;
float perimetroRueda=2*pi*(radioEnCm/100);  //Calcular Perimetro en metros
float distRecorreguda=0;
float distKM=0;
const int BotoRecalatSuma = 4; //Pin donde se connecta el botón de suma del recalat del trip
const int  BotoRecalatResta = 7; //Pin donde se connecta el botó de resta del recalat del trip
int LecturaRecalatSuma = 0; //Variable que contiene el estado del botón suma
int LecturaRecalatResta = 0; //Variable que contiene el estado del botón resta

void setup()
{
Serial.begin(9600);
pinMode(SensorPin, INPUT);  //el pin 2 como a entrada
pinMode(BotoRecalatSuma, INPUT); // el pin 4 como a entrada
pinMode(BotoRecalatResta, INPUT); // el pin 7 como a entrada   
pinMode(LedPin, OUTPUT);  // el pin 10 como a salida
}

void loop()
{
LecturaRecalatSuma = digitalRead (BotoRecalatSuma); //Lee la entrada del pulsador suma  y lo guarda en la variable
LecturaRecalatResta = digitalRead (BotoRecalatResta); //Lee la entrada del pulsador resta  y lo guarda en la variable
 
  if (LecturaRecalatSuma ==HIGH) //Si se pulsa el pulsador suma del recalat
   {
   distRecorreguda++; //Incrementa el valor de la distancia recorrida
   delay (300);
   }

if (LecturaRecalatResta ==HIGH) //Si es pulsa el pulsador suma del recalat
   {
   distRecorreguda--; //decrementa el valor de la distancia recorrida
   delay (300);
   } 

LecturaSensor = digitalRead(SensorPin); //Lee la entrada del sensor y el guarda en la variable
if(LecturaSensor == HIGH) //si se presiona el pulsador
   {
   digitalWrite(LedPin, HIGH); // enciende el LED
   Pulsos++;  //incrementa el número de pulsos
   Serial.print ("Volta ");
   Serial.println(Pulsos);  //lo muestra por el Monitor Serial
   distancia();
   delay(300); 
   /*este retraso es para evitar los posibles rebotes del pulsador.
   El valor tiene que ser no muy pequeño (porque si no contaría más
   de una pulsación al pulsar), ni muy grande (porque si no podría
   no detectar pulsaciones en esos tiempos de espera)
   */
   }
else
   {
   digitalWrite(LedPin, LOW); // apaga el LED
   }

}
void distancia(){
                        distRecorreguda=perimetroRueda*Pulsos;
                        distKM=distRecorreguda/1000;
                        if(distRecorreguda<=999){
                                Serial.print("Distancia recorreguda en m= ");
                                Serial.println(distRecorreguda);
                        }
                        else{
                                Serial.print("Distancia recorreguda en Km= ");
                                Serial.println(distKM);
                        }

   
}



Espero que puedan ayudarme, muchas gracias!!

surbyte

Lee las Normas del foro
Luego ve a More (abajo a la derecha), click, luego Modify y estas en modo EDICION.
Selecciona todo el código y click en </> arriba del emoticon 



También edita el título "Ayuda novato, problema contaje! " x algo como "Problema con contador"
En las normas esta la explicación de pq ese titulo se considera INUTIL.

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