Hungry Seal

Assignment: Servo Motor: Actuation Assignment 2

Collaborators:

Assignment: Servo Motor: Actuation Assignment 2
Collaborators:

Assignment: Servo Motor: Actuation Assignment 2
Collaborators:

Tui Critter

What I really should do this week was redo my assignment from last week to work better --- for this server motor (rather than the dc motor) would have been perfect!

However, it is not a choose your own adventure week and thus I have created a critter.

I followed the example and used  a rubberband to provide friction and make sure my critter didn't simply ossilate from one position to another. Because I only had one servo and didn't team  up with antother classmate I connected the two front legs of my seal to the the server motor.

So this critter is part of a game. The seal needs to walk to the fish. (That's why she looks sad.)
A user would control the potentiometer to avoid beaching the seal and allow them to get the fish.... ok it is a pretty easy game...but fun. :)

Sorry I don't have video capabilities....so please see the attached pictures for how I built the seal and what it looks like when attempting to reach the fish.

Materials Used:
Tape
Servo motor
wire
cardboard
paper
markers (to draw the seal)
wires
potentiometer
breadboard
aurduino

I used the code given in class:
/*
* Servo with Potentiometer control
* Theory and Practice of Tangible User Interfaces
* October 11 2007
*/

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 minPulse = 500;   // minimum pulse width

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() {
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

Serial.print("moving servo to ");
Serial.println(pulseWidth,DEC);

}
updateServo();   // update servo position
}

// 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
}
}