#include <Servo.h>
Servo eyeside; // servo for right/left movement
Servo eyever; //servo for up/down movement
Servo blink; //servo for eyelids
int pos = 0; // variable to store the servo position
byte randomhor;
byte randomvert;
int randomdelay;
unsigned long MOVING_TIME = 1000;
unsigned long moveStartTime;
int startAngle = 0;
int stopAngle = 90;
#define HLEFTLIMIT 0 //define left limit on horizontal (left/right) servo
#define HRIGHTLIMIT 90 //define right limit on horizontal (left/right) servo
#define VTOPLIMIT 90 //define top limit on vertical (up/down) servo
#define VBOTLIMIT 180 //define bottom limit on horizontal (up/down) servo
void setup() {
Serial.begin(9600);
Serial.println("servo my eyes!");
eyeside.attach(9); //attaches the servo on pin 9 to the servo object
eyever.attach(8);
blink.attach(7);
randomSeed(analogRead(0)); //Create some random values using an unconnected analog pin
moveStartTime = millis();
}
void loop() {
/*
unsigned long progress = millis() - moveStartTime;
if (progress >= MOVING_TIME) {
Serial.print("see this now: "); Serial.print(millis());
long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle);
blink.write(180);
moveStartTime = millis();
}
*/
randomhor = random(HLEFTLIMIT, HRIGHTLIMIT); //set limits
randomvert = random(VTOPLIMIT, VBOTLIMIT); //set limits
randomdelay = random(500, 1500); //moves every 0.5 to 1.5 seconds
Serial.print(" blink then delay "); Serial.println(randomdelay);
eyeside.write(randomhor);
eyever.write(randomvert);
for (pos = 0; pos <= 180; pos ++) {
blink.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos --) {
blink.write(pos);
delay(1);
}
blink.write(pos);
delay(randomdelay);
}
/*
original version fixed up a bit
#include <Servo.h>
Servo eyeside; // servo for right/left movement
Servo eyever; //servo for up/down movement
Servo blink; //servo for eyelids
int pos = 0; // variable to store the servo position
byte randomhor;
byte randomvert;
int randomdelay;
unsigned long MOVING_TIME = 1000;
unsigned long moveStartTime;
int startAngle = 0;
int stopAngle = 90;
#define HLEFTLIMIT 0 //define left limit on horizontal (left/right) servo
#define HRIGHTLIMIT 75 //define right limit on horizontal (left/right) servo
#define VTOPLIMIT 60 //define top limit on vertical (up/down) servo
#define VBOTLIMIT 75 //define bottom limit on horizontal (up/down) servo
void setup() {
Serial.begin(9600);
eyeside.attach(9); //attaches the servo on pin 9 to the servo object
eyever.attach(8);
blink.attach(7);
randomSeed(analogRead(0)); //Create some random values using an unconnected analog pin
moveStartTime = millis();
}
void loop() {
unsigned long progress = millis() - moveStartTime;
Serial.print( "progress " );
Serial.print( progress );
Serial.print( " MOVING_TIME " );
Serial.print( MOVING_TIME );
Serial.println();
if (progress >= MOVING_TIME) {
long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle);
blink.write(angle);
moveStartTime = millis();
}
randomhor = random(HLEFTLIMIT, HRIGHTLIMIT); //set limits
randomvert = random(VTOPLIMIT, VBOTLIMIT); //set limits
randomdelay = random(100, 600); //moves every 0.1 to 0.6 seconds
eyeside.write(randomhor);
eyever.write(randomvert);
for (pos = 0; pos <= 180; pos++) {
blink.write(pos);
delay(15);
}
delay(randomdelay);
}
*/