Stap 3: Plex Bot, codering
Alle code wordt gehost op GitHub.
Ik denk dat dit het meest interessante deel van het maken van de robot. Ik heb een heleboel arduino code voor robots. Het grootste deel van de code is heel dom. Ik bedoel dit niet in een gemiddelde manier om de code of de Schepper; de code is enkel niet zeer veelzijdig. Ik kon 10 servo's hechten rechtstreeks aan mijn microcontroller en bang de opdracht aan hen uit in de meest directe manier mogelijk. Deze manier van doen is leuk, omdat het eenvoudig is. Het is gemakkelijk om te begrijpen wat er gebeurt op en makkelijk te gebruiken.
Arduino is gevestigd in C++ zijn objecten die inherent zijn aan de taal. Voorwerpen maken een programma leuker om te gebruiken. In plaats van de servo koppelen en roepen dat telkens wanneer die ik wil bewegen van een gewricht maken ik objecten die zo veel meer doen.
De klasse die servo's behandelt is rServo voor robot servo. Dit verklaart waar de servo. Het zorgt ook voor het verplaatsen van de servo naar verschillende posities. De klasse heeft ook beperkingen op hoe ver het zal laten de servo verplaatsen. De enkel heeft bijvoorbeeld een bereik van -15 tot 25. Dit is een fysieke beperking op het bereik van de servo en is ook software beperkt om te voorkomen beschadiging van de robot. De klasse behandelt ook een compensatie voor de servo's. De hoorn is niet altijd op 90 graden waar we willen zijn. Dit aan te passen in de software zorgt voor de robot als perfect rechte, hoewel in het midden van de servo dat het niet zou zijn. Een laatste kenmerk van de klasse die ik nog nooit gebruikt was de timing. Elke servo heeft een min en max pulse timing die kan worden gewijzigd. Dit zou alleen worden gebruikt als er een excentrieke servo die nodig een andere waarde dan normaal.
Controle van elke servo op eigen zou een pijn. Dit is de reden waarom de been klasse bestaat. Been 5 rServo-objecten gemaakt en is verantwoordelijk voor het verplaatsen van dat been en het toewijzen van de offsets. Dit zorgt voor een matrix met 5 worden verzonden naar de servo en dat wordt omgezet in beweging van die 5 servo's. Elk been weet ook als de linker- of been is. Dit is belangrijk omdat de waarden van sommige servo's hoeven te worden gespiegeld. De code voor de benen ziet er iets als dit:
Been rechts = been (rLegAddress, true);
right.Leg({0,10,15,0,0});