Building a 3d model on rhino5 of an axis head to run some tests

A longtime ago I’ve learned rhino at school and that’s the reason I used it for these task.

First I started by drawing a circle, than using offset curve I drew more concentric circles that I copied to a certain distance, by making a line and using mirror in the mid point of that line. From there i made more horizontal and vertical lines using some of the above tools, and used trim to take out the some parts off the lines leaving behind just some out lines do extrude my model.

>

Press Fit

I started my press fit task based on a triangle as base material I used some old 3mm acrylic from a store front.

2nd - some basic ideas I already have in mind…( at this point everything is changeable):

Motors - I intend to use dc motors for many reasons, the 1st one being they are more common, then it's easier to buy a used powerful one. And, as I recovered many encoders from hp printers, I can get the proper positioning feedback I need; and the 2nd reason is that I'm going to learn how to read and control input and output devices, nothing better than combine them both on my final project. With hi-torque, both stopped and in motion, good gear reduction, hi-durability and being available as cheap used parts, I found car window and windscreen wiper motors to be apparently ideal for my project…

embedded programming

As I'm completely new to programing I started by using arduino examples that you can find in Arduino IDE's page: http://arduino.cc/en/Main/Software . Before anything else, reassign the correct pinout references to my circuit because all examples were written for Arduino's pinout. This became routine with all my using the IDE examples. My first try was with Blink to make the Hello Board's LED to... simply blink. Then I altered it to blink in many different ways, it was quite simple as I just had to copy-past some of the commands to build a sequence and change the delays accordingly.

After having grasped the essentials it was time to add the button sketch with different led blinking patterns and different button start state.

The Blink:

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second

}

First changes:

Here you can see what simple clonning of on/off cycle with simple tweaks of the timming looks like. On this caes it was a simple gradual increase in the vellocity of the blink.

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 2; // change the pin number tu match my board

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second

//original code end here

digitalWrite(led, HIGH);
delay(500); // copy past the code above and alterd the valiu of the delays
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
delay(250);
digitalWrite(led, LOW);
delay(250);
digitalWrite(led, HIGH);
delay(125);
digitalWrite(led, LOW);
delay(125);
digitalWrite(led, HIGH);
delay(75);
digitalWrite(led, LOW);
delay(75);
digitalWrite(led, HIGH);
delay(37);
digitalWrite(led, LOW);
delay(37);

}

The button enters the scene. First, its function is to kill a blinking loop by preesing it then it will be used to maintain blinkg while pressed.

/*
Button

Turns on and off a light emitting diode(LED) connected to digital
pin 13, when pressing a pushbutton attached to pin 2.

The circuit:
* LED attached from pin 13 to ground
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground
* Note: on most Arduinos there is already an LED on the board
attached to pin 13.

created 2005
by DojoDave
modified 30 Aug 2011
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/Button
*/

// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 3; // the number of the pushbutton pin // change the pin number tu match my board
const int ledPin = 2; // the number of the LED pin // change the pin number tu match my board

// variables will change:
int buttonState = 0; // variable for reading the pushbutton status

void setup() {
// initialize the LED pin as an output:
pinMode(led, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPin, INPUT);
}

void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);

// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on: // changed
digitalWrite(led, LOW); // changed from high to low
}
else {
// turn LED off: //changed to blink
digitalWrite(led, HIGH); copy past the code on blink sketch and played with the valiu of the delays
delay(100);
digitalWrite(led, LOW);
delay(10);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
delay(250);
digitalWrite(led, LOW);
delay(50);
digitalWrite(led, HIGH);
delay(10);
digitalWrite(led, LOW);
delay(105);
digitalWrite(led, HIGH);
delay(5);
digitalWrite(led, LOW);
delay(5);
digitalWrite(led, HIGH);
delay(5);
}
}

Here is the code of some more “blinkings” I tried:

Blink2 (fade in fade out):

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 2; // change the pin number tu match my board

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
digitalWrite(led, HIGH);
delay(900); // copy past the code above and alterd the valiu of the delays
digitalWrite(led, LOW);
delay(900);
digitalWrite(led, HIGH);
delay(800);
digitalWrite(led, LOW);
delay(800);
digitalWrite(led, HIGH);
delay(700);
digitalWrite(led, LOW);
delay(700);
digitalWrite(led, HIGH);
delay(600);
digitalWrite(led, LOW);
delay(600);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
delay(400);
digitalWrite(led, LOW);
delay(400);
digitalWrite(led, HIGH);
delay(300);
digitalWrite(led, LOW);
delay(300);
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(200);
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
delay(50);
digitalWrite(led, HIGH);
delay(25);
digitalWrite(led, LOW);
delay(25);
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
delay(50);
digitalWrite(led, HIGH);
delay(100);
digitalWrite(led, LOW);
delay(100);
digitalWrite(led, HIGH);
delay(200);
digitalWrite(led, LOW);
delay(200);
digitalWrite(led, HIGH);
delay(300);
digitalWrite(led, LOW);
delay(300);
digitalWrite(led, HIGH);
delay(400);
digitalWrite(led, LOW);
delay(400);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
delay(700);
digitalWrite(led, LOW);
delay(700);
digitalWrite(led, HIGH);
delay(800);
digitalWrite(led, LOW);
delay(800);
digitalWrite(led, HIGH);
delay(900);
digitalWrite(led, LOW);
delay(900);
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);

}

Blink3:

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 2; // change the pin number tu match my board

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(10); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(10); // wait for a second

digitalWrite(led, HIGH);
delay(50); // copy past the code above and alterd the valiu of the delays
digitalWrite(led, LOW);
delay(50);
digitalWrite(led, HIGH);
delay(25);
digitalWrite(led, LOW);
delay(25);

}

Blink4:

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 2; // change the pin number tu match my board

// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(75); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(75); // wait for a second
digitalWrite(led, HIGH);
delay(30); // copy past the code above and alterd the valiu of the delays
digitalWrite(led, LOW);
delay(30);
digitalWrite(led, HIGH);
delay(75);
digitalWrite(led, LOW);
delay(75);
digitalWrite(led, HIGH);
delay(30);
digitalWrite(led, LOW);
delay(30);
digitalWrite(led, HIGH);
delay(75);
digitalWrite(led, LOW);
delay(75);
digitalWrite(led, HIGH);
delay(30);
digitalWrite(led, LOW);
delay(30);

}

You can easily get the ideia from this video:

see https://drive.google.com/folderview?id=0B-zSpF8Sy3QLM0pIZmw4c1lRb1k&usp=sharing for files

Guilherme Moreira | 18-01-2014 | 04:46 AM | Lisboa | Portugal | para Fab Academy 2014 (pt)