Okee.
Het gebruik van libraries is je dus nog een raadsel.
De library roep je aan.
Dat doe je in dit geval met de tekst pwm.
Daarna volgt een punt en het commando wat je wil zenden, gevolgd door waardes (tussen haakjes) die je nodig hebt voor dat commando.
Dat ziet er dan zo uit:
pwm.setPWM(0, 1600, 2000)
Dit is dus het punt waar je je servo aanstuurt, en in dit geval is dat servo 0, de eerste servo.
Je stuurt er een puls heen die een duty cycle heeft van ongeveer 25 %.
Het getal 1600 geeft aan dat je spanning een plusje word na ongeveer 25 % van de totale tijd.
En de 2000 dat dat op ongeveer de helft weer een nul word.
Het is een wat ingewikkelde manier om dit voor mekaar te krijgen.
Simpeler zou het zijn om gewoon te beginnen met op nul naar 5 volt te gaan, en dan op 1600 of welke waarde je ook hebt berekend weer nul volt te worden.
Dat is een vrijwel even lange plus, alleen komt die op een ander moment.
De servo zal echter dat moment niet bemerken.
Om te kunnen berekenen hoe lang zo'n puls moet zijn, moet je weten wat een servo verwacht.
Een standaard servo heeft een nulpunt in het midden, een minimaal punt dat op 90 graden naar links en een maximum dat op 90 graden rechts zit.
De pulsen volgen elkaar op in 20 milliseconden.
Wanneer je naar de midden positie wil sturen, dan duurt zo'n puls 1.5 milliseconde.
Naar links 1 ms, en naar rechts 2 ms.
Links en rechts zouden ook andersom kunnen zijn, dat moet je nog uitproberen.
Met deze gegevens kun je verder.
De 25 % die eerder gestuurd werden, maakt dat je naar een punt stuurt dat verder in een hoek is dan mogelijk.
Je kunt dus zelf al meteen zien of links en rechts omgedraaid zijn door mij hierboven door te kijken waar je servo's heen gaan.
Je moet dus uitrekenen hoe ver je wil dat je servo's sturen.
Of vaste waardes gebruken, scheelt je rekenwerk in je sketch.
De frequentie (hoe vaak de pulsen elkaar opvolgen) stuur je in setup al naar je library door dit te doen:
pwm.begin();
pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates
En direct daarna stuur je dus je servo's aan.
Voor het Adafruit voorbeeld heeft iemand al voor je uitgerekend wat de minimale en maximale waardes zijn.
Dat scheelt weer een hoop.
Minimaal is 150 en maximaal is 600 op een schaal van 4096 (die laatste is vast).
600-150==450, en 450/2 == 225.
225+150 =375 is dan je middenpunt.
Als je met nul begint in plaats van ergens in het midden wat jij tot nog toe deed, kun je deze waardes dus direct gebruiken om je servo's van het midden naar de hoeken te sturen.
Om met je Arduino iets te kunnen bedienen, moet je wel weten hoe dat bedienen dan werkt.
Als je dat niet weet, weet je ook niet wat er fout gaat of kan gaan.
Daarom moet je altijd even bestuderen hoe iets nou eigenlijk werkt/