Paso 57: Software: Cómo funciona el código de bola lavadora
Nota:
Cuando la bola está fundida por el orificio de salida, el sensor de infrarrojos verá pasar el balón pero no verá la bola cuando está flotando encima del agujero de salida. Para hacer correctamente la función bola, ponemos el ventilador funcione durante tres segundos más después del salida IR sensor ve la bola pasarlo, así que el jugador tiene tiempo para agarrar la pelota de ping-pong antes de que el ventilador se apaga y cae detrás abajo de la tubería. Si el jugador la agarre, la lavadora bola detectarlo caer abajo el tubo y soplar hacia arriba. Lo hará para una cantidad de tiempo antes de que el tiempo de espera y establece una bandera de error.
En realidad hay sólo dos situaciones donde las cosas le salen mal. La primera situación es si se pone una bola en el agujero de entrada pero nunca sale de la tubería para el sensor de salida del viaje y acabar la función. En este caso, la lavadora bola simplemente seguir corriendo hasta que alguien ha saltado el sensor de salida manualmente o apague la mesa. La segunda situación ocurre cuando la pelotita de ping pong sale del orificio de salida y viaje del sensor, pero el jugador no agarra la bola así que apaga la lavadora bola y la bola cae detrás abajo de la tubería. Si se pone otra bola en esa misma arandela de bola puede atascarse hasta como ahora habrá dos bolas en la tubería en lugar de uno que es lo que fue diseñada para. En todos estos casos, no queremos que los jugadores a seguir tratando de usar la lavadora bola y empeorar la situación, en lugar de ello queremos desactivar la lavadora bola hasta que el problema se ha solucionado.
Programamos la tabla de modo que si una bola queda atorada en el tubo o si una pelota cae detrás abajo de la tubería, la lavadora bola se desactivará completamente hasta que el problema se ha resuelto y el jugador 'reinicia' la lavadora bola. Si un jugador intenta poner una bola en la lavadora de la bola cuando está desactivada, los anillos de bola lavadora LED destellará de cinco veces lo que indica que la bola lavadora está atascada. He adjuntado cuatro diagramas de flujo que explican cada decisión y el proceso que realiza el microcontrolador para manejar estos errores. Aquí es un breve Tutorial:
Situación #1
Una pelota se deja caer en el agujero de entrada de lavadora bola #2 pero se queda atorado en el tubo y no salir de la lavadora de la bola. La arandela de la bola de tiempo y se apaga pero el jugador intenta poner otra bola a la lavadora de la bola. El punto donde el jugador pone la pelota segundo en es deonoted por **.
Ball_Washers_Detect (detección de UINT8)
1) Asegúrese de que BW2_JAM no está definido de la bola anterior. Se borra, así que continúe con el paso siguiente.
2) set BW_ACTIVE = 1 de modo que cualquier función que utiliza la lavadora bola LED anillos para animaciones no las usará.
3) Abra la ventanilla de entrada y la bomba de agua lavadora bola.
4) dos segundos a pasar para que la bomba tenga suficiente tiempo para empujar la bola al otro extremo de la tubería.
5) apague la bomba de la arandela de bola y encienda el ventilador a velocidad normal.
6) Revise para ver si el balón ha pasado del sensor de salida todavía.
7) no, deja pasar dos segundos y mantener vigilancia del sensor para ver si pasa.
8) lazos cinco veces (unos 10 segundos) pero termine como la pelota no entró por el orificio de salida.
9) set BW2_JAM = 1 de modo que si se detecta otra bola en el agujero de entrada de la lavadora bola el programa sepa que está atascado.
** El jugador se coloca en la segunda pelota de ping-pong en la lavadora bola atascada.
10) Ball_Washers_Detect(detection) detecta la segunda bola y reanuda la función.
11) lo primero que comprueba es si BW2_JAM está establecida y es.
12) establece la variable global 'error_code' igual a BW2_JAM_ERROR_CODE.
13) set DIAGNOSE_ERROR = 1 (Timer3 la rutina de interrupción se encargará del resto ahora que DIAGNOSE_ERROR está establecido).
Timer3()
11) Timer3 interrumpe y comprueba a ver si DIAGNOSE_ERROR == 1.
12) hay un error, llame a la función Display_Error(error_code) e incluir la variable global que contiene el código de error.
Display_Error(error)
13) Compruebe el código de error para ver qué tipo de error debe mostrarse.
14) es un BW2_JAM_ERROR_CODE, llame a la función Ball_Washer_Jam_Error(error) para informar al jugador del error.
Ball_Washer_Jam_Error(error)
¿ 15) es bola lavadora #2 entrada y salida sensores tanto bloqueados? (Se trata de cómo un usuario 'reinicia' la lavadora bola).
16) no son tanto bloqueado, establezca BW_ACTIVE en 1 así que no hay otras animaciones utilizan la lavadora bola anillos LED.
17) parpadear los anillos de entrada y salida de lavadora bola #2 en y de cinco veces, esto informa el reproductor que hay un atasco.
18) DIAGNOSE_ERROR 0 y claro BW_ACTIVE a 0.
Ahora que tienes una idea de cómo se formatea el código de bola lavadora, he publicado un vídeo a continuación para la situación #2 donde la pelota no es agarrada nunca desde el orificio de salida. Se reducirá la velocidad del ventilador ventilador antes de se apague por lo que si la bola no ha sido agarrado que caer abajo el tubo y el sensor de salida de viaje otra vez. El ventilador luego se aceleró a su velocidad normal y el golpe la bola detrás de la lavadora de la bola, que repita este hasta tres veces y si la bola no ha sido agarrada por tercera vez apagará y coloque una bola lavadora jam bandera de error.
Puede ajustar las velocidades de motor para sus arandelas de la bola en el archivo de encabezado miscellaneous.h bajo las constantes definidas BWx_PUMP_SPEED y BWx_FAN_SPEED ('x' siendo lavadora bola #1 o #2).