Description:
Seema and I tried out two mechanisms. The first one invovled two servo motors. The first one mounted on the second one and moved independently to produce a leg like motion. The second one has a leg like structure which is mooved rapidly using the servo motor to produce a jumping effect.
Componenets Used:
1-servo motor
1-arduino
1-breadboard
1- wooden frame
Code:
int servoPin = 7; // Control pin for servo motor
int potPin = 0; // select the input pin for the potentiometer
int pulseWidth = 0; // Amount to pulse the servo
long lastPulse = 0; // the time in millisecs of the last pulse
int refreshTime = 20; // the time in millisecs needed in between pulses
int val; // variable used to store data from potentiometer
int count = 0;
int minPulse = 500; // minimum pulse width
int maxPulse = 2250;
void setup() {
pinMode(servoPin, OUTPUT); // Set servo pin as an output pin
pulseWidth = minPulse; // Set the motor position to the minimum
Serial.begin(9600); // connect to the serial port
Serial.println("servo_serial_better ready");
}
void loop() {
if (count>10)
{
count = 0;
if (pulseWidth == minPulse)
{
pulseWidth = maxPulse;
}else
{
pulseWidth = minPulse;
}
}else
{
count = count +1;
}
// Serial.print("moving servo to ");
Serial.println(pulseWidth,DEC);
// val = analogRead(potPin); // read the value from the sensor, between 0 - 1024
//
// if (val > 0 && val <= 999 ) {
// pulseWidth = val*2 + minPulse; // convert angle to microseconds
//
// }
updateServo(); // update servo position
delay(1);
}
// called every loop().
void updateServo() {
// pulse the servo again if the refresh time (20 ms) has passed:
if (millis() - lastPulse >= refreshTime)
{
digitalWrite(servoPin, HIGH); // Turn the motor on
delayMicroseconds(pulseWidth); // Length of the pulse sets the motor position
digitalWrite(servoPin, LOW); // Turn the motor off
lastPulse = millis(); // save the time of the last pulse
}
}
- Login to post comments