Stap 4: De Code
Nu kunt een kijkje nemen op de code voor de glijdende kraan Arm, die u hieronder vinden kunt. De code maakt gebruik van 2 bibliotheken: de bibliotheek van de StepperAK en de IRremote bibliotheek. Ik heb ook beide in het zip-bestand.
Om te helpen bij het organiseren van de code, is het project opgesplitst in 4 tabbladen op basis van welk deel van het controlesysteem die ze ermee. Laten we beginnen door te gaan via sliderControl.ino. Dit bestand bevat de code om te importeren en opstelling van de nodige bibliotheken, verklaart de variabelen die in het hele programma worden gebruikt, en de instelling en de hoofdlus. Twee belangrijke dingen hier op te merken zijn de IR-codes en de hoofdlus. De IR-codes zullen afhankelijk van de afstandsbediening die u gebruikt; om erachter te komen de codes voor de knoppen op de afstandsbediening, kunt u de seriële Monitor gebruiken om ze te bekijken. Gewoon uncomment twee lijnen dat Serial noemen. Verplaatsen naar de hoofdlus, controles de Arduino als het input heeft ontvangen van een externe. Zo ja, roept de functie decideAction(). Anders, wordt gecontroleerd of de niet-actieve licht moet worden ingeschakeld of als de kraan is het laden/lossen.
Vervolgens laten we eens kijken naar de IR_Codes.ino. Dit bevat de functies die verband houden met de IR-sensor. De enige functie binnen is de vrij lange decideAction()-functie. Deze functie voert alle de logica nodig om erachter te komen welke knop is ingedrukt en wat te doen. Let op de structuur van deze functie. Ten eerste wordt gecontroleerd als het laden/lossen knoppen zijn ingedrukt. Hierdoor is de arm van de kraan te gemakkelijk op gezet of de base gehaald door het continu uitvoeren van de motoren. Vervolgens wordt gecontroleerd of het laden/lossen zich op. Ofwel bent, kan geen andere actie worden ondernomen. Hiermee voorkomt u dat de kraan eventueel beschadigen zichzelf door een externe knop terwijl het laden/lossen.
Tot slot hebben we de Stepper_Control.ino. Het gaat hierbij om alle aan de stappenmotoren gerelateerde functies. Dit zijn vrij eenvoudige functies, maar merken dat elke functie stelt stepsTaken aan het nieuwe bedrag, dat voorkomt dat de motor sterk verspreiden zich voort. Een functie die in deze groep opvalt is de setBase() functie. Dit wordt stepsTaken ingesteld op 0. Hierdoor kan de kraan aan "opnieuw worden geijkt" na het laden of lossen.