/*
* Basiscode om de servo aan te sturen
* Deze code laat de servo de waarde van de analoge input volgen
*/
#include <Servo.h> // library inladen
#define sensor A3 // pins voor de sensor en de servo vastleggen
#define servopin 9
Servo servomotor; // define a servo to control a servo called servomotor
int value; // variable to read the value from the analog pin
void setup()
{
servomotor.attach(servopin); // attaches the servo on pin 9 and connects
servomotor.write(180);
delay(1000);
servomotor.write(0);
delay(1000);
}
void loop()
{
value = analogRead(sensor); // reads the value of the potentiometer (value between 0 and 1023)
value = map(value, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180)
servomotor.write(value); // sets the servo position to value
delay(15); // waits for the servo to get there
}
/************************************* OEFENINGEN: **************************************************************
* Kalibreer je sensor of servo zodat deze niet trilt wanneer hij op zijn uiterste staat (Bij sommige is dit niet nodig)
Wat bedoel ik hiermee: Een servo heeft soms een fysieke limiet intern die de range beperkt tot bijvoorbeeld 10 - 160.
Stuur jij de servo dan naar 0 of naar 180 dan gaat die botsen, veel moeite doen, warm worden en stuk gaan.
Zodoende moet je even naijken wat de range is van je servo, en zorgen dat je nooit buiten die range gaat.
* Laat bij het opstarten je servo eerst even volledig naar links en volledig naar rechts bewegen als een soort ontwaken
* Inverteer de werking van de servo (links moet rechts worden)
* Er is nog een uitgebreidere optie om servo's aan te sturen, niet met 0-180° maar in pulsbreedte in microseconden.
Zoek eens op de arduino site of je dit kan vinden (iets met servo en microseconds dus).
Dit kan helpen om vloeiendere bewegingen te krijgen aangezien de range van 0 - 180 uitbreid tot 1000 - 2000
Dus 5 keer zoveel resolutie, maar abstractere eenheden en nimmer ° van de hoek.
*/