Está en la página 1de 2

void check_status(){

gear = constrain(gear, 1, 5); // Limita los valores que puede alcanzar la


variable gear

tiempo_actual = millis();

if ( tiempo_actual - fin_vel > 2500 ){ // Si han pasado mas de 2500 ms entre dos
se�ales consecutivas de la rueda hace lo siguiente ...
velocidad = 0; // Velocidad igual a cero
cadencia = 0; // Cadencia igual a cero
stop_flag = true; // Bandera de bicicleta detenida activada
} // Fin de la sentencia
else if ( ( tiempo_actual - fin_cad ) > 7500 ){ // Si han pasado mas de 7500 ms
entre dos se�ales consecutivas de la palanca hace lo siguiente ...
cadencia = 0; // Cadencia igual a cero
stop_flag = true; // Bandera de bicicleta detenida activada
} // Fin de la sentencia
else{
if ( pedal_muerto == true ){
attachPinChangeInterrupt ( UpShift, UpShift_manual, RISING );
attachPinChangeInterrupt ( DownShift, DownShift_manual, RISING );
stop_flag = false; // Bandera de bicicleta detenida desactivada
pedal_muerto = false;
}
// else{
// stop_flag = false; // Bandera de bicicleta detenida desactivada
// pedal_muerto = false;
// }
} // Fin de la sentencia
} // Fin de la funcion check_status

void manual(){

if ( stop_flag == true ){ // Si la bicicleta se encuentra detenida


if ( pedal_muerto == false ){ // Si la bandera de cambio de cortesia se
encuentra desactivada hace lo siguiente ...
if ( gear > previous_gear $$ pedal_muerto_up == false) { // Si el cambio
actual es mayor que el anterior hace lo siguiente ...
detachPinChangeInterrupt( UpShift );
gear = previous_gear + 1; // El cambio actual es el anterior + 1
pedal_muerto_up = true; // Bandera de cambio de cortesia activada
pedal_muerto = true;
Savox.write ( angulo_Up [ gear ] + 10); //write angle to servo + trimValue
(+ 10 is a slight overshift feature to improve shifting)
delay(130); // give the servo time to reach the selected gear
Savox.write ( angulo_Up [ gear ] ); // Mueve el servo al angulo
correspondiente de marcha
previous_gear = gear; // actualiza la variable previous_gear
} // Fin de la sentencia
if ( gear < previous_gear $$ pedal_muerto_up == true ) {
detachPinChangeInterrupt( DownShift );
pedal_muerto_up = false; // Bandera de cambio de cortesia activada
pedal_muerto_down =true
gear = previous_gear - 1;
pedal_muerto = true;
Savox.write ( angulo_Down [ gear ] - 15);//write angle to servo + trimValue
(-15 is a slight overshift feature to improve shifting)
delay(130); //give the servo time to reach the selected gear
Savox.write ( angulo_Down [ gear ] ); // Mueve el servo al angulo
correspondiente de marcha
previous_gear = gear;
}
}
else if ( pedal_muerto == true ){
return; // Regresa al loop principal
}
}

if (stop_flag == false){
if ( gear > previous_gear ) {
Savox.write ( angulo_Up [ gear ] + 10); //write angle to servo + trimValue (+
10 is a slight overshift feature to improve shifting)
delay(130); // give the servo time to reach the selected gear
Savox.write ( angulo_Up [ gear ] ); // Mueve el servo al angulo
correspondiente de marcha
previous_gear = gear;
} // Fin de la sentencia
if ( gear < previous_gear ) {
Savox.write ( angulo_Down [ gear ] - 15);//write angle to servo + trimValue
(-15 is a slight overshift feature to improve shifting)
delay(130); //give the servo time to reach the selected gear
Savox.write ( angulo_Down [ gear ] ); // Mueve el servo al angulo
correspondiente de marcha
previous_gear = gear;
} // Fin de la sentencia
} // Fin de la funcion manual
}

También podría gustarte