[2021][Marzo][Problema 3]

[2021][Marzo][Problema 3]

de Santiago Correa Perini -
Número de respuestas: 2

Buenas,

Me surgen dos dudas respecto a la solución. Primero igual, hay variables como tics o ruedaABS que nunca se definen.
Lo primero es sobre el punto 6 del algoritmo. Dice al final que debe hacerse de "forma inmediata". Eso en el examen me inclino a incorporar esa lógica en el loop del main. Entiendo que es debido a que el tiempo entre veces que hace interrupt la rutina del timer es despreciable entonces se incluye en la rutina del timer. Entonces, cuando corresponde ubicar lógica dentro del loop del main?

Lo segundo es sobre la lógica de los tics y como funciona un frenoABS que fue algo que interprete mal. Por qué si la rueda der es más lenta se evalua ticsGiroIzq < ticsGiroDer? Y esto vuelve a como se obtienen esos valores, cada vez que se interrumpe debido a la rutina giro_der se ejecuta ticsGiroDer = ticsDer. Que básicamente lo que hace ticsDer es contar cuantas veces se ejecuto la rutina del timer hasta que se ejecuta la rutina giro_der. Va lo mismo para la rueda izquierda, que viendo la solución, ticsDer y ticsIzq podrian ser una sola variable no? Que sea ticsTimer.

Me confundio bastante y lo que habia hecho fue una sola variable que contaba cuantas veces interrumpia giro_der para comparar haciendo ticsGiroDer < ticsGiroIzq (al reves que la solución) y hacerlas cero una vez equiparadas las velocidades o la lenta supero a la más rapida.

Saludos

(Editado por Belen Brandino - envío original domingo, 18 de julio de 2021, 17:52)

En respuesta a Santiago Correa Perini

Re: [Marzo 2021][Ejercicio 3]

de Nicolas Vidal Morresi -
Me parece que la condicion ticsGiroIzq < ticsGiroDer implica que la rueda derecha es la que gira mas lento por como estan implementadas las rutinas giro_der y giro_izq. Si una rueda gira mas rapido que la otra el valor de ticsGiro correspondiente va a ser menor porque se "actualiza" mas rapido. Creo que va por ahi pero no estoy del todo seguro, me sigue quedando un poco confusa la forma de resolverlo.

Una cosa que no me queda clara a mi de la solucion es si no se debería hacer tics = 0 en el caso de haber aplicado una nueva presmax ya que se quiere evaluar cada 1000 tics del timer.


En respuesta a Nicolas Vidal Morresi

Re: [Marzo 2021][Ejercicio 3]

de Santiago Correa Perini -
Ah bien, si está girando más rápido la izquierda, más veces se ejecuta la rutina que cuenta los giros que resetea ticsIzq (en el caso de rueda izquierda) haciendo que ticsGiroIzq, cuando se actualiza su valor, sea más chico. Entonces si necesitas las dos variables de ticsDer y ticsIzq. Si a mi también me confundió, no es lo primero que pensas pero funciona.

Les falta hacer tics = 0 si.