Files
arduino/servo/servo.ino
2018-08-08 08:33:26 +02:00

86 lines
2.2 KiB
C++

#include <Servo.h>
/*
Into Robotics
*/
int servoPin = 9;
int ldrPin = A0;
Servo servo;
int servoAngle = 0; // servo position in degrees
int currentAngle = 0;
int targetAngle = 0;
int ldrValue = 0;
void setup()
{
Serial.begin(9600);
servo.attach(servoPin);
pinMode(ldrPin, INPUT);
}
void loop()
{
//control the servo's direction and the position of the motor
/* servo.write(45); // Turn SG90 servo Left to 45 degrees
delay(1000); // Wait 1 second
servo.write(90); // Turn SG90 servo back to 90 degrees (center position)
delay(1000); // Wait 1 second
servo.write(135); // Turn SG90 servo Right to 135 degrees
delay(1000); // Wait 1 second
servo.write(90); // Turn SG90 servo back to 90 degrees (center position)
delay(1000);*/
//end control the servo's direction and the position of the motor
ldrValue = analogRead(ldrPin);
Serial.println(ldrValue);
delay(1000);
if (ldrValue < 450){
targetAngle = 0;
if (currentAngle >= targetAngle){
for(servoAngle = currentAngle; servoAngle >= targetAngle; servoAngle--) {
servo.write(servoAngle);
delay(20);
}
} else {
for(servoAngle = currentAngle; servoAngle <= targetAngle; servoAngle++) {
servo.write(servoAngle);
delay(20);
}
}
currentAngle = targetAngle;
} else if (ldrValue < 900 ) {
targetAngle = 50;
if (currentAngle >= targetAngle){
for(servoAngle = currentAngle; servoAngle >= targetAngle; servoAngle--) {
servo.write(servoAngle);
delay(20);
}
} else {
for(servoAngle = currentAngle; servoAngle <= targetAngle; servoAngle++) {
servo.write(servoAngle);
delay(20);
}
}
currentAngle = targetAngle;
} else {
targetAngle = 140;
if (currentAngle >= targetAngle){
for(servoAngle = currentAngle; servoAngle >= targetAngle; servoAngle--) {
servo.write(servoAngle);
delay(20);
}
} else {
for(servoAngle = currentAngle; servoAngle <= targetAngle; servoAngle++) {
servo.write(servoAngle);
delay(20);
}
}
currentAngle = targetAngle;
}
}