Looking cool!!! Only thing I would have done different, is the way the tilt works. I would have used some bearings to hold it, and then with the servo on the back instead, so the bearings would hold the load, and the servo only doing the tilting.
Going to make this on a bigger scale some day, when some of all my current projects are done. Want it to be strong enough to hold a real video camera with optical zoom and auto focus and all, and then make it remote controllable. Maybe even with a little pc on, so it can be put up somewhere, with a USB modem on, and then have a wireless 3G internet connection to it, both streaming audio and video back, plus allowing for pan/tilt.
You should check out the Vivotek VS3100 series video servers as an alternative to PCs. They're cheap, reliable, and compact: you can put one right up on the pole with a camera to simplify cabling. The one big drawback is that they depend on an Activexploit plug-in for viewing, so there's no Linux support :0
I really wanted to use a Linux-based server on a couple of the projects I've worked on recently, but the open-source video codecs just can't get the same level of compression as the commercial ones, so we had to drop the idea to stay within our bandwidth limits
So, I haven't made my other 2 sensors yet, so I thought about what I could do in the mean time.
Here is a simple little program for a single servo and a single IR sensor.
The servo sweeps to predetermined points, reads the values, and then calculates which direction gave the strongest reading (lowest number to Arduino) and then slews to that point for a few seconds.
Then starts over. I figure this can be modified to use as a range finder, or something similar. You will just have to change it to suit your needs.
You can open up the serial monitor to see the values populating.
#include <Servo.h>
/*******************************************************
Simple little program to sweep and scan with a single
sensor by Mr_Manny
int scanPos[] = {0, 30, 60, 90, 120, 150, 180}; // Rotation for scans
int scanVal[7];
int i = 0;
int M = 0;
int newVal = 0;
int Low = 1024; //1023 is the darkest value
int Pos = 0;
/*******************************************************
set up section *
*******************************************************/
void setup()
{ Serial.begin(9600); // start serial communication
myservo.attach(Servopin); // servo pin
myservo.write(90); // initial start position
delay(2000);
}
{
//*******************************************************
while (i < 7 )
{
myservo.write(scanPos*);*
delay(500);*
newVal = analogRead(Sensorpin);*
_ scanVal*= analogRead(Sensorpin);_ Serial.print("Servo Pos=");Serial.print(scanPos_);Serial.print(" Value=");Serial.println(scanVal); i++; } // { for (int M=0; M<7; M++) // For IR Sensors 1023 is dark { // so I need the LOWEST value if (scanVal[M] < Low) { Low = scanVal[M]; Pos = M; } } } // { delay(2000); Serial.print("Final Pos= ");Serial.println(Pos); myservo.write(scanPos[Pos]); // Now I write the final position delay(5000); } // { i = 0; // This is how I reset the loop Low = 1024; } //*************** } [/quote]_