Stap 6: Arduino Code
We willen om ons project te voeren code uploaden naar de Arduino om controle van de elektrische componenten. Bibliotheken zijn opgenomen in de onderstaande zip-bestand en de mappen binnen moet worden geplaatst in de hoofdmap van de bibliotheek Arduino op uw computer na het uitpakken. Inbegrepen zijn bibliotheken voor de IR-sensor, Stappenmotor en het 7 segment display. Het bijgevoegde zip-bestand met een adellijke titel PetFeeder bevat de map met de Arduino schets nodig de code uit te voeren. Dit moet gewoon worden geflitst aan de Arduino om de code kan worden uitgevoerd.
Dit initalizes de variabelen en bepaalde staten ingesteld. Als u de code in de avond begint bent, wil je int AMorPM zo hoog.
Deze opstelling wordt eenmaal uitgevoerd en stelt de pinnen als ingangen of uitgangen. Het stelt ook de helderheid van het beeldscherm van de zeven segment dat kan worden aangepast.
Dit is het begin van de belangrijkste code. Het begint met het initialiseren van hoeveel minuten tot de volgende voederplaats. Als je begint in de avond en AMorPM hebben ingesteld op hoog, dan moet u ook de notulen hier omzetten in 960 (of 16 uur tot de volgende voederplaats). Dit doet ook een eerste controle om ervoor te zorgen dat de cilinder is rechtop wanneer u het systeem op dat de cilinder draaien zal totdat de schakeloptie wordt geraakt. De onderkant van het wetboek stelt dat als de capaciteit van de touch sensor gaat laag (d.w.z. u gedrukt het) dan daarin de feed lus hoog, en de Aanraking wordt uitgeschakeld om te voorkomen dat meerdere voedingen.
Deze code correleert met de afstandsbedieningen. Deze nummers zullen worden vervangen door de waarden die u hebt ontvangen van de IRdecoder. Er is een functie voor het uitvoeren van een voeding cyclus, met een extra kopje (voor dagen waar je denkt dat uw huisdier moet de extra calorieën) en een functie voor het resetten van het hele systeem.
Dit is het belangrijkste deel van de code - de voeding cyclus. Het begint met een enorme "stap" te verplaatsen van de meeste van de manier rond het systeem. Het dan sets ingedrukt om te laag is, welke correlaten de beperking schakelen. Als het niet het maken was helemaal rond dan er een jam, dus het loopt door een VN-storing while-lus. Zal het beginnen te 30 stappen vooruit en 10 stappen terug tot de beperkende switch die het raken. Eenmaal boven, wordt deze verplaatst heen en weer te schudden voedsel neer in de cilinder. Deze cyclus zal dan opnieuw beginnen te voeden mijn huisdier een totaal van twee kopjes. Dit kan worden aangepast voor uw huisdier door het verwijderen van de tweede cyclus.
Als de touch sensor is ingedrukt voor een vroege voeding, dan is de disableTouch-functie is geactiveerd. Ik noem dit mijn "Greg-proof feature". Ik heb een vriend genaamd Greg die, ik weet het, de tijd op de touch sensor over en weer besteden zou totdat alle 20 pond van hondenvoer zou worden verspreid over mijn vloer. De touch sensor zal opnieuw worden geactiveerd zodra de vroege-voeding-tijd is verstreken, en het gaat terug naar het is regelmatige planning.
Deze als-functie is de functie timer gebruikt. Het aftellen zal per minuut, en als de minuten gelijk zijn aan nul, worden de feed functie uitvoert, en Greg-proof functie uit te schakelen.
Dit is het deel van de code die wordt geschakeld tussen de twee voederen cycli. Telkens wanneer de voeding cyclus loopt "ik" zal verhogen met één. Daarin staat dat wanneer "i" wordt gedeeld door en en heeft een monsterpreparaat die (vreemd), zal het overschakelen naar de avond feed cyclus en vice versa. Dit correleert met het opnieuw instellen van de timer.
Dit is het einde van de code die Hiermee stelt u de timer op het juiste moment. Als de touch sensor is ingedrukt, zal het nemen van de tijd die overbleef en toe te voegen aan de volgende voedertijd. Dit is dus de feeder nooit uit het schema is. Als de timer tot nul vertraagt, zal de tijd gewoon worden ingesteld op de volgende voedertijd. De sevseg.refreshDisplay(); is wat vertelt de timer om te vernieuwen.