/* CVO De Verdieping: Arduino
Sketch: Servo Kalibratie
Kalibreer een servo via de serieële monitor.
We kunnen zo het aantal us bepalen voor 0° en 180°.
In de Sketch kunnen we dan via servo.attach(pin, usMin, usMax);
de grenzen instellen;
Oefening 13a 3 Servo Kalibratie
Houtmeyers Patrick
2023 - 2024
*/
#include <Servo.h>
Servo deServo;
// CONSTANTEN
const int PIN_SERVO = 11;
const int PIN_POT = A0;
// (GLOBALE) VARIABELEN
int potWaarde = 0;
int servoHoek = 0;
int servoUsMin = 1000; //us voor 0° positie
int servoUsMax = 2500; // us voor 180° positie
bool normaleWerking = true;
// VOORBEREIDING
void setup()
{
deServo.attach(PIN_SERVO, servoUsMin, servoUsMax);
Serial.begin(9600);
Serial.print("m: ");
Serial.print(servoUsMin);
Serial.print(" M: ");
Serial.println(servoUsMax);
}
// UITVOERING
void loop()
{
// INVOER
while (Serial.available())
{
char c = Serial.read();
switch (c)
{
case 'm':
normaleWerking = false;
servoUsMin = Serial.parseInt();
deServo.attach(11, servoUsMin, servoUsMax);
deServo.writeMicroseconds(servoUsMin);
Serial.print("m: ");
Serial.print(servoUsMin);
Serial.print(" M: ");
Serial.println(servoUsMax);
break;
case 'M':
normaleWerking = false;
servoUsMax = Serial.parseInt();
deServo.attach(PIN_SERVO, servoUsMin, servoUsMax);
deServo.writeMicroseconds(servoUsMax);
Serial.print("m: ");
Serial.print(servoUsMin);
Serial.print(" M: ");
Serial.println(servoUsMax);
break;
case 's':
normaleWerking = true;
deServo.attach(PIN_SERVO, servoUsMin, servoUsMax);
Serial.print("m: ");
Serial.print(servoUsMin);
Serial.print(" M: ");
Serial.println(servoUsMax);
break;
default:
break;
}
}
if (normaleWerking)
{
//INPUT
potWaarde = analogRead(PIN_POT);
// VERWERKING
servoHoek = map(potWaarde, 0, 1023, 0, 180);
// UITVOER
deServo.write(servoHoek);
delay(250);
}
}
// FUNCTIES