6. Draai de motor!

Doel: Door op de knop te drukken moet een servo van draairichting veranderen.

Een servo

Het is tijd om de motoren aan te sluiten. Maar welk soort motoren? Er zijn servo’s, stappenmotoren en gelijkstroommotoren. Iedere soort heeft zijn voordelen en nadelen. Wij gebruiken servo’s die continu kunnen draaien.

Deze servo’s worden aangestuurd met pulsen: de lengte van de puls geeft aan hoe snel, en in welke richting de motor moet draaien. Maar natuurlijk heeft niemand zin om uit te zoeken hoe lang dat allemaal duurt.

code

Gelukkig is daar een oplossing voor: libraries. Een library is precies wat het zegt: een set met instructies die je alle zorgen over tijdsduur uit handen neemt. Je hoeft alleen een getal naar de library te sturen, en de library zorgt voor de rest.

de library die we gaan gebruiken heet Servo.h. Vooraf vertellen we aan de arduino dat hij deze library moet gebruiken door de instructie

#include <servo.h>

Arduino moet ook weten met welke tekst de servolibrary bedoeld wordt.

Servo servolinks;

In de setup moet de Arduino weten waar de servo op is aangesloten: digitale poort 10.

servolinks.attach (10);

We versturen getallen naar de library (en dus indirect naar de servo) met

servolinks.write (getal)

Het getal hierboven geeft aan welke richting de motor moet draaien, en in welke snelheid. Op zich is dit allemaal niet overdreven moeilijk. De motor staat stil als getal 97 wordt verstuurd.

Als je een lager getal dan 97 stuurt draait de servo de ene kant op. Hoe lager hoe sneller. (1 = minimum).

Als je een getal, hoger dan 97 stuurt draait de servo de andere kant op. Hoe hoger hoe sneller. (180 = maximum).

Oh ja, er is nog een nieuwe instructie: else { } en else if ( ) { }, Maar die mag je zelf uitzoeken.

Hardware

Motoren vragen vaak veel stroom. Meer dan de Arduino aan kan. Daarom krijgen de servo’s in het project hun eigen stroomvoorziening. Dat kan problemen opleveren met de Arduino. Om ervoor te zorgen dat de Arduino weet wat bedoeld wordt met 0 Volt wordt de massa (GND) van de Arduino verbonden met de minpool van de batterijen.

Zet ze op elkaar en voila.
Voorbeeld van een toepassing: Arduino en breadboard (links) en het frame met de servo’s (rechtst).

Via de witte kabel krijgt de servo informatie over hoe hij moet bewegen. De rode en de zwarte zijn de stroomvoorziening van de servo.

  • Sluit de servo aan zoals je in de afbeelding kunt zien. (het wordt nu écht nodig om een breadboard te gaan gebruiken als je dat al niet deed).
  • Sluit poort 10 aan op de witte kabel.

En dan, natuurlijk de code!

Probeer nu zelf de snelheid waarmee de motor draait te veranderen! Als je op de knop drukt wisselt de motor van richting! YES!

Nieuwe code

#include <librarynaam> Maak gebruik van de bibliotheek die librarynaam heet.
Servo naam ; Een van de functies in de library <servo.h>. Hiermee kunnen we een variabele aangeven waar we instructies voor de servo naartoe kunnen sturen. De library vertaalt jouw instructies in aansturing van de motor.
naam.attach (pinnummer); het toestel naam is verbonden (attach) met het pinnummer. Per definitie is dat een digitale pin.
naam.write ( waarde );  Stuur de waarde naar de naam. In dit geval is naam een servo.
if (   ) {  } else { code } Als de test bij if niet correct is, moet hij de code bij else uitvoeren
else if ( ) {  } Nou, wat denk je zelf?