Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The two components of the fishing rod were the casting mechanism and the box for the electronics housing. The casting mechanism is made up of 1/4" acrylic links connected with 6 mm bearings at the joints.  Before the final laser cuts of the acrylic links were made, the prototype was cut out of 1/4" wood. The electronics housing is a jigsaw box of 1/4" wood with 3 of the 4 walls glued to each other to minimize the collapsibility, yet retain the ability to open the box and view the circuit. At the bottom of the electronics housing is a 3D printed attachment with an opening that allows for a weight to be inserted at the front. 

Image Added

Multimedia
name3ecbfe523c8fc8f6f4d58ee638eed3bf.mp4
autostarttrue

...

Concerning the circuitry used in our final design, we made an effort to keep things as simply simple and compact as possible. Using a small breadboard and pieces from electronics kits already in our possession as well as a button set purchased online, we constructed a circuit in which three different buttons would send independent signals to three separate digital inputs on our Arduino Uno board. We powered our servo and these buttons through the 5V pin on the Arduino and used an analog pin to send the servo a signal that would tell it where to go. The Arduino Uno itself was powered by a 9V battery. 

...

  • 1 Arduino Uno Board
  • 1 9V Battery
  • 1 270 degree Servo Motor
  • 1 Breadboard w/ 2 powewith at least 2 power buses and 20 terminal rows
  • 3 Push Buttons
  • 3 220 Ohm Resistors


Software Development

Code Block
languagepy
titleServo Positional Control
#include <Servo.h>

// Define Button Pins
#define BUTTON1_PIN 2
#define BUTTON2_PIN 4
#define BUTTON3_PIN 7

// Servo
Servo servo1;
int servoPos = 0;
const int maxServoPos = 180;
bool windingUp = false;

void setup() {
  // initialize serial communications at 19200 bps:
  Serial.begin(19200);

  // Servo setup
  servo1.attach(9);  // Attaching the servo to pin 9
  servo1.write(0);   // Move servo to home position

  // Button inputs
  pinMode(BUTTON1_PIN, INPUT);
  pinMode(BUTTON2_PIN, INPUT);
  pinMode(BUTTON3_PIN, INPUT);
}

void loop() {
  // Read button states
  bool button1State = digitalRead(BUTTON1_PIN);
  bool button2State = digitalRead(BUTTON2_PIN);
  bool button3State = digitalRead(BUTTON3_PIN);

  if (windingUp) {
    // Check if the winding up condition should be terminated
    if (!(button1State == HIGH && button2State == HIGH)) {
      windingUp = false;
      servoPos = 0;
      servo1.write(servoPos);  // Move servo to position 0 degrees when released
    } else if (servoPos < maxServoPos) {
      servoPos++;
      servo1.write(servoPos);
      delay(15); // Control the winding speed
    }
  } else {
    // Condition for both buttons pressed simultaneously
    if (button1State == HIGH && button2State == HIGH) {
      windingUp = true;
    } else if (button1State == HIGH) {
      servo1.write(0);  // Move servo to position 0 degrees
    } else if (button2State == HIGH) {
      servo1.write(66);  // Move servo to position 66 degrees
    } else if (button3State == HIGH) {
      servo1.write(132); // Move servo to position 132 degrees
    }
  }
}