#include <Servo.h>
//Servos
Servo servoPan;
Servo servoTilt;
int anlge = 0;
//Drive pins
const int drivePin1 = 3;
const int drivePin2 = 4;
const int enablePin1 = 7;
//Steering pins
const int steerPin1 = 5;
const int steerPin2 = 6;
const int enablePin2 = 8;
//Serial information varriables
char inSerial;
//Pan Variables
Servo panServo; //Panning servo
const int panPin = 10;
bool bPan; // If true enables the ability for the servo to pan
bool bPanDirPos; //If true servo should pan only in the positive direction
float panSpeed = .01; //Degrees in which servo pans per tic
float panVal = 60; //Panning servo starting position
//Tilt Variables
Servo tiltServo; //Tilting servo
const int tiltPin = 9;
bool bTilt; // If true enables the ability for the servo to tilt
bool bTiltDirPos; //If true servo should tilt only in the positive direction
float tiltSpeed = .01; //Degrees in which servo tilts per tic
float tiltVal = 90; //Tilting servo starting position
void setup()
{
Serial.begin(115200); //serial connection number
pinMode(drivePin1, OUTPUT);
pinMode(drivePin2, OUTPUT);
pinMode(enablePin1, OUTPUT);
pinMode(steerPin1, OUTPUT);
pinMode(steerPin2, OUTPUT);
pinMode(enablePin2, OUTPUT);
digitalWrite(enablePin2, HIGH);
Serial.println("Setup Complete");
//Initalize Servos to starting positions
//Pan Servos
panServo.attach(panPin);
panServo.write(panVal);
bPan = false;
bPanDirPos = true;
//Initalize Tilt Servos
tiltServo.attach(tiltPin);
tiltServo.write(tiltVal);
bTilt = false;
bTiltDirPos = true;
}
void SteerLeft()
{
digitalWrite(steerPin1, HIGH);
digitalWrite(steerPin2, LOW);
}
void SteerRight()
{
digitalWrite(steerPin1, LOW);
digitalWrite(steerPin2, HIGH);
}
void SteerStop()
{
digitalWrite(steerPin1,LOW);
digitalWrite(steerPin2,LOW);
}
void DriveForward()
{
digitalWrite(enablePin1, HIGH);
digitalWrite(drivePin1, LOW);
digitalWrite(drivePin2, HIGH);
}
void DriveBackward()
{
digitalWrite(enablePin1, HIGH);
digitalWrite(drivePin1, HIGH);
digitalWrite(drivePin2, LOW);
}
void DriveStop()
{
digitalWrite(drivePin1, LOW);
digitalWrite(drivePin2, LOW);
}
void PanUp()
{
bPan = true;
bPanDirPos = true;
}
void PanDown()
{
bPan = true;
bPanDirPos = false;
}
void PanStop()
{
bPan = false;
}
void TiltUp()
{
bTilt = true;
bTiltDirPos = true;
}
void TiltDown()
{
bTilt = true;
bTiltDirPos = false;
}
void TiltStop()
{
bTilt = false;
}
void loop()
{
//read the serial data into the buffer
if(Serial.available() > 0)
{
inSerial = Serial.read();
if(inSerial == 'w')
{
DriveForward();
}
else if(inSerial == 'b')
{
DriveBackward();
}
else if(inSerial == 's')
{
digitalWrite(drivePin1, LOW);
digitalWrite(drivePin2, LOW);
digitalWrite(enablePin1, LOW);
}
else if(inSerial == 'l')
{
SteerLeft();
}
else if(inSerial == 'r')
{
SteerRight();
}
else if(inSerial == 'q')
{
SteerStop();
}
else if(inSerial == 'p')
{
PanUp();
}
else if(inSerial == 'c')
{
PanDown();
}
else if(inSerial == 't')
{
TiltUp();
}
else if(inSerial == 'x')
{
TiltDown();
}
else if(inSerial == 'g')
{
TiltStop();
}
}
//Controll panning
if(bPan)
{
if(bPanDirPos)
{
if(panVal<180)
{
panVal+=panSpeed;
panServo.write(panVal);
}
}
else
{
if(panVal>0)
{
panVal-=panSpeed;
panServo.write(panVal);
}
}
}
//Controll Tilting
if(bTiltDirPos)
{
if(bTiltDirPos)
{
if(tiltVal <180)
{
tiltVal +=tiltSpeed;
tiltServo.write(tiltVal);
}
}
}
}
This doesn't look right:
//Controll Tilting
if(bTiltDirPos)
{
if(bTiltDirPos)
Based on what you have in the previous if statement for bPan, I suspect you meant:
//Controll Tilting
if(bTilt)
{
if(bTiltDirPos)
Pete
What's the difference between ServoPan and PanServo? You never write low to eablepin1 in drivestop, and you never call drivestop (call it when you receive an 's').