86 lines
2.2 KiB
C++
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;
|
|
}
|
|
}
|
|
|