Paso 3: Codificación avanzada
Ahora que has visto el código, vamos a ir sobre secciones individuales para dar explicaciones más profundas.
En primer lugar, veremos una sección de código en la función latchButtons(). Vamos a mirar el botón contra rebotes. Cuando se pulsa el botón izquierdo, se debe calcular el tiempo transcurrido desde la última pulsación. Esto se hace utilizando el último valor almacenado, y llamando a la función millis() para comprobar la hora actual. Una vez que sabemos que el tiempo es mayor luego nuestro tiempo de debounce, entonces la función comprueba si el actuador se permite ampliar. Si estas condiciones se cumplen, la función puede seguir y hacer todas las cosas relacionadas con la prensa del botón.
Esta próxima sección es el tiempo bucle dentro de la función motorForward(). La parte que mira aquí es los dos retrasos. El bucle se inicia activando el controlador del motor, y arrancar el motor. Si es la primera aunque ejecute el bucle, hay un retraso mayor. Este retraso mayor es ignorar el punto actual que viene con el arranque de un motor. Al establecer este retraso, procure no ajustar demasiado grande, porque no hay ningún control durante él. Si el motor está atascado por alguna razón, no podrá ser detenido hasta que este retraso. Si no es la primera carrera, hay un retraso mucho más pequeño.
Una vez que el motor está en movimiento, getFeedback() se utiliza para comprobar el sensor de corriente. firstRun está apagado, para que la próxima vez a través del lazo lleva la pequeña demora, más que grande. Y por último, se comprueban los botones para ver qué nueva acción se debe.
Las siguientes secciones están todos en la rutina getFeedback(). La rutina comienza por leer el pin analógico conectado al sensor, entonces actúa en consecuencia.
Lo primero que se comprobado es si el motor está en sus límites. El código sabe cuándo el motor está en los límites cuando la lectura actual es 0. A veces, hay una lectura falsa, por lo que necesitamos para configurar un contador, para que el motor se detiene sólo cuando realmente está en los límites. Este fragmento de código tiene que contar hasta el hitLimitsmax antes de que el motor se detendrá. Si cuenta menos que el contador restablece.
Esta siguiente parte es justo después de los límites de golpeados. Si el motor se mueve hacia delante cuando alcanza el límite, desactiva el rightlatch. Si se mueve hacia atrás, se apaga el leftlatch. El código es el mismo para leftlatch.
Finalmente, el límite actual se comprueba con su máximo. Si es sobre, la leftlatch está apagado y el motor ya no se puede extender. Para habilitar la extensión, se debe invertir el motor.
Ahora que hemos realizado sobre el código, podemos personalizar para sus necesidades.