Stap 57: Software: de werking van de Code van de wasmachine bal
Opmerking:
Wanneer de bal wordt geblazen uit het gat van de afrit, ziet de IR-sensor de bal voorbij, maar het zal de bal niet zien wanneer het is zweefde over de bovenkant van het gat van de uitgang. Om de functie van de wasmachine bal goed, zetten we de aanjager ventilator te lopen voor drie seconden na de afrit IR sensor de bal doorgeven, daarmee die de speler genoeg tijd om te grijpen de ping pong bal ziet heeft voordat de ventilator uitgeschakeld en hij terug naar beneden de pijp valt. Als de speler het niet grijpen doet, zal de bal wasmachine speurder op terug te vallen naar beneden de pijp en blaas het back-up. Zij zal dit doen voor een vast bedrag van tijd voordat het time-out en stelt u de vlag van een fout.
Er zijn werkelijk slechts twee situaties waar dingen mis zal gaan. De eerste situatie is als een bal in het gat van de vermelding wordt gezet, maar het komt nooit uit de pijp aan de afrit sensor reis en afwerking van de functie. In dit geval zou de bal wasmachine gewoon blijven draaien totdat iemand de afrit sensor handmatig struikelde of uitgeschakeld in de tabel. De tweede situatie gebeurt wanneer de ping pong bal uit de afslag hole en reis de sensor komt maar de speler de bal niet grijpen zodat de bal wasmachine uitgeschakeld wordt en de bal terug naar beneden de pijp valt. Als een andere bal is gestoken dat dezelfde bal wasmachine die het kan jam omhoog omdat er nu twee ballen in is de pijp in plaats daarvan voor dat wat het is ontworpen voor. In al deze gevallen, we willen niet dat spelers blijven proberen de bal wasmachine gebruiken en de situatie alleen maar erger maken, in plaats daarvan willen we uitschakelen van de wasmachine bal totdat het probleem is opgelost.
Wij zullen de tabel programmeren zodat als een bal in de buis vast komt te zitten of als een bal terug naar beneden de pijp valt, de bal wasmachine wordt volledig uitgeschakeld totdat het probleem is opgelost en de speler '' de bal wasmachine reset. Als een speler probeert om te zetten van een bal in de wasmachine bal wanneer deze is uitgeschakeld, de bal wasmachine LED ringen zal knipperen in- en uitschakelen vijfmaal waaruit blijkt dat de bal wasmachine is vastgelopen. Ik heb vier stroomdiagrammen die elk besluit en het proces dat de microcontroller uitvoert om het afhandelen van deze fouten verklaren bijgevoegd. Hier is een korte walk-through:
Situatie #1
Een bal is gedaald in het gat van de vermelding op bal wasmachine #2 maar het blijft steken in de pijp en de wasmachine bal niet verlaten. De wasmachine bal time-out en uitgeschakeld, maar de speler probeert om een andere bal in de wasmachine bal. Het punt waar de speler zet de tweede bal in is deonoted door **.
Ball_Washers_Detect (UINT8-detectie)
1) controleren om er zeker van te zijn dat de BW2_JAM van de voorafgaande bal niet is ingesteld. Het is uitgeschakeld, dus verder met de volgende stap.
2) set BW_ACTIVE = 1, zodat elke functie die gebruikmaakt van de bal wasmachine LED ringen voor animaties zal ze niet gebruiken.
3) de post LED-ring en de bal wasmachine waterpomp inschakelen.
4) toestaan van twee seconden te geven zodat de pomp heeft genoeg tijd om te duwen de bal naar de andere kant van de pijp.
5) de bal wasmachine pomp uitschakelen en inschakelen van de aanjager ventilator op normale snelheid.
6) controleren om te zien als de bal de afrit sensor nog heeft doorstaan.
7) het niet het geval is laat twee seconden doorgeven en houden toezicht op de sensor om te zien als dit wordt doorgegeven.
8) lussen van vijf keer (ongeveer 10 seconden) maar keer-out als de bal kwam niet uit de afrit gat.
9) set BW2_JAM = 1 zodat als een andere bal wordt gedetecteerd bij het gat van de vermelding van de wasmachine bal het programma weet dat het is vastgelopen.
** De speler zet in de tweede ping pong bal in de wasmachine vastgelopen bal.
10) Ball_Washers_Detect(detection) detecteert de tweede bal en begint de functie opnieuw.
11) het eerste ding dat wordt gecontroleerd voor is als BW2_JAM is ingesteld en het is.
12) de globale variabele 'error_code' ingesteld op BW2_JAM_ERROR_CODE.
13) set DIAGNOSE_ERROR = 1 (de Timer3 interrupt routine voor de rest zorgen zal nu dat DIAGNOSE_ERROR is ingesteld).
Timer3()
11) Timer3 onderbreekt en controleert of DIAGNOSE_ERROR == 1.
12) ziedaar zit een vergissing, functie Display_Error(error_code) aanroepen en omvatten de globale variabele die de foutcode bevat.
Display_Error(Error)
13) het controleren van de error code om te zien wat voor soort fout moet worden weergegeven.
14) is een BW2_JAM_ERROR_CODE, Bel functie Ball_Washer_Jam_Error(error) om te informeren van de speler van de fout.
Ball_Washer_Jam_Error(Error)
15) zijn bal wasmachine #2 van inreis en uitreis sensoren beide geblokkeerd? (Dit is hoe een gebruiker 'Reset' de bal wasmachine).
16) ze zijn niet beide geblokkeerd, instellen BW_ACTIVE gelijk is aan 1 zodat geen andere animaties gebruiken de bal wasmachine LED ringen.
17) de inreis en uitreis ringen van bal wasmachine #2 op knipperen en uit vijf keer, dit informeert de speler dat er een blokkade is.
18) 0 DIAGNOSE_ERROR duidelijk en duidelijke BW_ACTIVE op 0.
Nu dat je een idee van hoe de code van de wasmachine bal wordt opgemaakt, heb ik gepost een video hieronder voor situatie #2 waar de bal is nooit greep uit het gat van de uitgang. De snelheid van de ventilator van de ventilator zal worden verlaagd voordat hij wordt uitgeschakeld, dus dat als de bal niet geweest greep het zal terug naar beneden de pijp vallen en reis de afrit sensor weer. De aanjager ventilator zal dan de normale snelheid en klap de bal terug uit de wasmachine bal worden versneld, het zal dit tot driemaal herhalen en als de bal nog niet is gegrepen door de derde keer zal uitschakelen en instellen van een wasmachine bal jam fout vlag.
U kunt de motor snelheden aanpassen voor uw bal sluitringen in het headerbestand miscellaneous.h onder de gedefinieerde constanten BWx_PUMP_SPEED en BWx_FAN_SPEED ('x' zijnde bal wasmachine #1 of #2).