Buenas a todos:
Me llamo Jose y soy nuevo con Arduino.
Me he metido a fondo con este proyecto, pero no me sale bien del todo.
Estoy haciendo un cuentakilometros con 2 parciales y 3 pulsadores:
1- aumenta parcial 2.
2 - disminuye parcial 2.
3 - puesta a 0 de los 2 parciales (parcial 1 con pulsación y parcial 2 pulsación de mas de 2 segundos).
Problemas:
1- He conseguido que cuente distancia pero cuando llega a 72.06 km, me pasa a -72.06 km (cualquiera de los 2).
2 - No consigo encontrar el codigo que haga resetear el parcial 2 despues de 2 segundos. Tal vez no sea la codificación mas correcta que estoy usando para hacer esto.
Os pongo mi codigo para que lo echeis un vistazo
Muchas gracias de antemano
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
int estadoActual1=0; //Km Trip 1
int estadoActual2=0; //Km Trip 2
int estadoActual3=0; //Aumenta
int estadoActual4=0; //Disminuye
int estadoActual5=0; //Resetear Trip 1
int estadoActual6=0; //Resetear Trip 2
int estadoUltimo=0;
int estadoUltimo1=0;
int contador=0;
int contador1=0;
float radioEnM=0.35; //INGRESAR radio de la rueda en cm
float pi=3.141592;
float perimetroRueda=2*pi*radioEnM; //Calcula Perimetro en metros
float perimetroRueda1=2*pi*radioEnM; //Calcula Perimetro en metros
float distRecorrida=0;
float distRecorrida1=0;
float distKM=0;
float distKM1=0;
void setup(){
pinMode(3,INPUT);
Serial.begin(57600);
lcd.begin(16,2);
Serial.println(estadoActual5);
Serial.println(estadoActual6);
}
void loop(){
// Trip 1
estadoActual1=digitalRead(3);{
if (estadoActual1 != estadoUltimo){
if (estadoActual1 == HIGH) {
contador = contador + 1;
Serial.print ("Vueltas ");
Serial.println(contador);
distancia();
}
}
}
estadoUltimo= estadoActual1;
// Trip 2
estadoActual2=digitalRead(3);{
if (estadoActual2 != estadoUltimo1){
if (estadoActual2 == HIGH) {
contador1 = contador1 + 1;
Serial.print ("Vueltas ");
Serial.println(contador1);
distancia1();
}
}
}
estadoUltimo1= estadoActual2;
//Boton Aumentar Trip 2
estadoActual3=digitalRead(4);
delay(10);{
if (estadoActual3 != estadoUltimo1){
if (estadoActual3 == HIGH) {
contador1 = contador1 + 1;
Serial.print ("Vueltas ");
Serial.println(contador1);
distancia1();
}
}
}
// Boton Dismiunir Trip 2
estadoActual4=digitalRead(5);
delay(10);{
if (estadoActual4 != estadoUltimo1){
if (estadoActual4 == HIGH) {
contador1 = contador1 - 1;
Serial.print ("Vueltas ");
Serial.println(contador1);
distancia1();
if (distKM1<=0){
distKM1 = distKM1 = 0;
contador1 = contador1 = 0;}
}
}
}
//Boton Reset Trip 1
estadoActual5=digitalRead(6);{
if (estadoActual5 == HIGH) {
if(distKM=0);
contador = contador = 0;
Serial.print ("Vueltas ");
Serial.println(contador);
distancia();
}
}
PantallaLCD();
}
void distancia(){
distRecorrida=perimetroRueda*contador;
distKM=distRecorrida/1000;
if(distRecorrida<=0){
Serial.print("Distancia recorrida en km= ");
Serial.println(distKM);
}
}
void distancia1(){
distRecorrida1=perimetroRueda1*contador1;
distKM1=distRecorrida1/1000;
if(distRecorrida1<=0){
}
Serial.print("Distancia recorrida en Km= ");
Serial.println(distKM1);
}
void PantallaLCD(){
lcd.clear();
lcd.setCursor(0,0);
lcd.write("Trip 1 ");
lcd.print(distKM);
lcd.write(" Km");
lcd.setCursor(0,1);
lcd.write("Trip 2 ");
lcd.print(distKM1);
lcd.write(" Km");
}