Tuesday, November 26, 2013

Finalized SolidWorks Parts

 
Here are pictures of all 4 parts that will be made from SolidWorks. Also there are pictures of two different angles of all the pieces in an assembly form. The last part we have, a lego part design can be found on Professor Sullivan's blog here:
http://sullivan-22-201-fall2013.blogspot.com/
 
 




 

Sunday, November 24, 2013

The Working Code

Progress Update: Week of Nov. 18th

We all met together this week for 3 hours and fixed the code/board problems from the previous week.  And have decided to work on altering the code for switches, which will be posted sometime next week. The reason behind the change is have less wiring and to achieve the same result.  Also, we believe it would be easier for the motors to push the switch than a push button, which would result in less alterations needed later.  Additionally, we decided to get our own Lego pieces and combine it with the parts from Solidworks.   Finally the working code is listed below and a link to Github to comment:

https://github.com/RubeGoldberg/22.201-802-ChrisPeterEddie.wiki.git
______________________________________________________________________________


#include <LiquidCrystal.h>
#include <Servo.h>

LiquidCrystal lcd(5,4,3,2,1,0);     // Intializing the LCD screen's pin connection

const int ledPin13 = 13;            // Intializing each LED's pin connection
const int ledPin12 = 12; 
const int ledPin11 = 11;
const int ledPin10 = 10;

int loopCounter = 0;               // Intializing a loop counter
int Mode = 0;                      // Intializing the mode of each sub-system
int switchPin9 = 9;                // Intializing switch pin values
int switchPin8 = 8;
int switchPin7 = 7;
int switchPin6 = 6;
int buttonState1;                  // Intializing the button's state
int buttonState2;   
int buttonState3;   
int buttonState4;   
int value1;                        // Intializing debounce values
int value2;
int value3;
int value4;
int value5;
int value6;
int value7;
int value8;

void setup() {

  buttonState1 = digitalRead(switchPin9);     // Reads the swithch pins
  buttonState2 = digitalRead(switchPin8);
  buttonState3 = digitalRead(switchPin7);
  buttonState4 = digitalRead(switchPin6);
                                         
  pinMode(switchPin9, INPUT);                 // Set the switch pins as input
  pinMode(switchPin8, INPUT);             
  pinMode(switchPin7, INPUT);             
  pinMode(switchPin6, INPUT);            
  pinMode(ledPin13, OUTPUT);                  // LEDs are set as output
  pinMode(ledPin12, OUTPUT);
  pinMode(ledPin11, OUTPUT);
  pinMode(ledPin10, OUTPUT);

  lcd.begin(16,2);
  lcd.clear();
 
  Serial.begin(9600);
}

void loop(){

  value1 = digitalRead(switchPin9);           // Read input value and store it
  delay(10);                                  // 10 milliseconds delay
  value2 = digitalRead(switchPin9);           // Reads the input again to check for bounces
  if (value1 == value2) {                     // Make sure intial readings are consistant
    if (value1 != buttonState1) {             // The button's state changed
      if (value1 == LOW) {                    // Check if button is pressed, then flip mode after use
        if (Mode == 0) {            
            Mode = 1;                 
           } else {                 
               Mode = Mode;              
             }    
      }
    }
  buttonState1 = value1;                      // Saves the new state of the variable
  }
  value3 = digitalRead(switchPin8);           // Read input value and store it
  delay(10);                                  // 10 milliseconds delay
  value4 = digitalRead(switchPin8);           // Reads the input again to check for bounces
  if (value3 == value4) {                     // Make sure intial readings are consistant
    if (value3 != buttonState2) {             // The button's state changed
      if (value3 == LOW) {                    // Check if button is pressed, then flip mode after use
        if (Mode == 1) {            
            Mode = 2;                 
        } else {                 
            Mode = Mode;             
          }
      }
    }
  buttonState2 = value3;                      // Saves the new state in our variable
  }
  value5 = digitalRead(switchPin7);           // Read input value and store it
  delay(10);                                  // 10 milliseconds delay
  value6 = digitalRead(switchPin7);           // Reads the input again to check for bounces
  if (value5 == value6) {                     // Make sure intial readings are consistant
    if (value5 != buttonState3) {             // The button's state changed
      if (value5 == LOW) {                    // Check if button is pressed, then flip mode after use
        if (Mode == 2) {         
            Mode = 3;                  
        } else {                 
            Mode = Mode;               
          }
      }
    }
  buttonState3 = value5;                     // Saves the new state of the variable
  }
  value7 = digitalRead(switchPin6);          // Read input value and store it
  delay(10);                                 // 10 milliseconds delay
  value8 = digitalRead(switchPin6);          // Reads the input again to check for bounces
  if (value7 == value8) {                    // Make sure intial readings are consistant
    if (value7 != buttonState4) {            // The button's state changed
      if (value7 == LOW) {                   // Check if button is pressed, then flip mode after use
        if (Mode == 3) {
            loopCounter++;                   // Adds to loop counter when mode is 0
            Mode = 0;                  
        } else {                 
            loopCounter++;                   // Adds to loop counter when mode is 1     
            Mode = Mode;               
          }
      }
    }
  buttonState4 = value7;                     // Saves the new state of the variable
  Serial.print("Number of Loops :  ");       // Prints phrase to screen
  Serial.println(loopCounter);               // Prints number of loops to LCD screen
  }

  // save the current state as the last state for next time through the loop
  // Lights turn on and off based on the mode indicated
  if (Mode == 0) {
    digitalWrite(ledPin13, LOW);
    digitalWrite(ledPin12, HIGH);
    digitalWrite(ledPin11, HIGH);
    digitalWrite(ledPin10, HIGH);
  }
  if (Mode == 1) {
    digitalWrite(ledPin13, HIGH);
    digitalWrite(ledPin12, LOW);
    digitalWrite(ledPin11, HIGH);
    digitalWrite(ledPin10, HIGH);
  }
   if (Mode == 2) {
    digitalWrite(ledPin13, HIGH);
    digitalWrite(ledPin12, HIGH);
    digitalWrite(ledPin11, LOW);
    digitalWrite(ledPin10, HIGH);
  }
  if (Mode == 3) {
    digitalWrite(ledPin13, HIGH);
    digitalWrite(ledPin12, HIGH);
    digitalWrite(ledPin11, HIGH);
    digitalWrite(ledPin10, LOW);
  }
}

Sunday, November 17, 2013

A video of how the code works so far.

Progress Update: Week of Nov. 11th

This week, the week of November 11th, our group has made significant progress on our project. We met on Thursday, November 14th and decided to work on sections individually and then compile the work. We have finalized the design for the motor housing piece in SolidWorks and posted it to the blog. We also have begun the coding for the operation of the mechanism using the Arduino Board. This is just a basic code to start off and its purpose is to make the push buttons correspond with the LEDs. The construction of the wiring on the Arduino Board was also started this week, and the group has begun to understand how we plan to wire our mechanism. Furthermore, here is a link to the code thus far: https://github.com/RubeGoldberg/22.201-802-ChrisPeterEddie/wiki/Intial-Code#include--1, to comment on or if you have suggestions. It is also listed below.

______________________________________________________________________________


#include <LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal lcd(5,4,3,2,1,0);     // Intializing the LCD screen's pin connection
const int ledPin13 = 13;            // Intializing each LED's pin connection
const int ledPin12 = 12;     
const int ledPin11 = 11;   
const int ledPin10 = 10;   
int loopCounter = 0;               // Intializing a loop counter
int Mode = 0;                      // Intializing the mode of each sub-system
int switchPin9 = 9;                // Intializing switch pin values
int switchPin8 = 8;
int switchPin7 = 7;
int switchPin6 = 6;
int buttonState1;                  // Intializing the button's state
int buttonState2;       
int buttonState3;       
int buttonState4;       
int value1;                        // Intializing debounce values
int value2; 
int value3;
int value4;
int value5;
int value6;
int value7;
int value8;

void setup() {
  
  buttonState1 = digitalRead(switchPin9);     // Reads the swithch pins
  buttonState2 = digitalRead(switchPin8);   
  buttonState3 = digitalRead(switchPin7);   
  buttonState4 = digitalRead(switchPin6);   
                                             
  pinMode(switchPin9, INPUT);                 // Set the switch pins as input
  pinMode(switchPin8, INPUT);                 
  pinMode(switchPin7, INPUT);                 
  pinMode(switchPin6, INPUT);                
  pinMode(ledPin13, OUTPUT);                  // LEDs are set as output
  pinMode(ledPin12, OUTPUT);
  pinMode(ledPin11, OUTPUT);
  pinMode(ledPin10, OUTPUT);
  
  lcd.begin(16,2);
  lcd.clear();
     
  Serial.begin(9600);
}

void loop(){
  
  value1 = digitalRead(switchPin9);           // Read input value and store it
  delay(10);                                  // 10 milliseconds delay
  value2 = digitalRead(switchPin9);           // Reads the input again to check for bounces
  if (value1 == value2) {                     // Make sure intial readings are consistant
    if (value1 != buttonState1) {             // The button's state changed
      if (value1 == LOW) {                    // Check if button is pressed, then flip mode after use
        if (Mode == 0) {                
            Mode = 1;                     
           } else {                     
               Mode = Mode;                  
             }        
      }
    }
  buttonState1 = value1;                      // Saves the new state of the variable
  } 
  value3 = digitalRead(switchPin8);           // Read input value and store it
  delay(10);                                  // 10 milliseconds delay
  value4 = digitalRead(switchPin8);           // Reads the input again to check for bounces
  if (value3 == value4) {                     // Make sure intial readings are consistant
    if (value3 != buttonState2) {             // The button's state changed
      if (value3 == LOW) {                    // Check if button is pressed, then flip mode after use
        if (Mode == 1) {                
            Mode = 2;                     
        } else {                     
            Mode = Mode;                 
          }
      }
    }
  buttonState2 = value3;                      // Saves the new state in our variable
  }
  value5 = digitalRead(switchPin7);           // Read input value and store it
  delay(10);                                  // 10 milliseconds delay
  value6 = digitalRead(switchPin7);           // Reads the input again to check for bounces
  if (value5 == value6) {                     // Make sure intial readings are consistant
    if (value5 != buttonState3) {             // The button's state changed
      if (value5 == LOW) {                    // Check if button is pressed, then flip mode after use
        if (Mode == 2) {             
            Mode = 3;                      
        } else {                     
            Mode = Mode;                   
          }
      }
    }   
  buttonState3 = value5;                     // Saves the new state of the variable
  }
  value7 = digitalRead(switchPin6);          // Read input value and store it
  delay(10);                                 // 10 milliseconds delay
  value4 = digitalRead(switchPin6);          // Reads the input again to check for bounces
  if (value7 == value8) {                    // Make sure intial readings are consistant
    if (value7 != buttonState4) {            // The button's state changed
      if (value7 == LOW) {                   // Check if button is pressed, then flip mode after use
        if (Mode == 3) {
            loopCounter++;                   // Adds to loop counter when mode is 0
            Mode = 0;                      
        } else {                     
            loopCounter++;                   // Adds to loop counter when mode is 1         
            Mode = Mode;                   
          }
      }
    }
  buttonState4 = value7;                     // Saves the new state of the variable
  Serial.print("Number of Loops :  ");       // Prints phrase to screen
  Serial.println(loopCounter);               // Prints number of loops to LCD screen   
  }  

  // save the current state as the last state for next time through the loop
  // Lights turn on and off based on the mode indicated
  if (Mode == 0) {
    digitalWrite(ledPin13, HIGH);
    digitalWrite(ledPin12, LOW);
    digitalWrite(ledPin11, LOW);
    digitalWrite(ledPin10, LOW);
  }
  if (Mode == 1) {
    digitalWrite(ledPin13, LOW);
    digitalWrite(ledPin12, HIGH);
    digitalWrite(ledPin11, LOW);
    digitalWrite(ledPin10, LOW);  
  }
   if (Mode == 2) {
    digitalWrite(ledPin13, LOW);
    digitalWrite(ledPin12, LOW);
    digitalWrite(ledPin11, HIGH);
    digitalWrite(ledPin10, LOW);
  }
  if (Mode == 3) {
    digitalWrite(ledPin13, LOW);
    digitalWrite(ledPin12, LOW);
    digitalWrite(ledPin11, LOW);
    digitalWrite(ledPin10, HIGH);  
  }
}

Thursday, November 14, 2013

Wiring Arduino Board Buttons

Here is a picture of the wiring our group has done for the button part of the Arduino. Here we have four push buttons with resistors on each and they have been wired to their respective pins. 

Wiring Arduino Board

Here is a picture of the Arduino wiring of the LEDs for the mechanism. The LEDs are wired through pins 9 through 12. Here you can see there are four lights wired to the board with 330 ohm resistors.

Here is a simple sketch of the basic setup of our mechanism. 

The Housing Compartment of the Motor



                                               
We plan to place  a motor in the cut out portion of the "C" the rotating portion will stick out and the wires will be run through the slot in the back of the "C" which will connect to the Arduino. This can be seen better in the picture below.


             
 
This is the back of the "C" part.
 
 
The volume of this part is approximately 0.57 cubic inches, which should leave pleanty of material to create the other parts to house everything in. Otherwise this will have to be changed.
 


The Original Post

Our project will consist of a bar that when a button is pressed will begin to move towards the left. At this same time there is an LED next to the button which lights up. Once the bar moves and hits the button it stops and the light turns off. Then there is a light off to the side of the project that lights up. Next to this light there is another push button. When this light turns on a servo begins to turn towards the button and when pressed the light above it turns off, and another light on the opposite side of the bar turns on. At this time the bar moves towards the LED,next to this LED is another push button. Then once the bar comes in contact with the push button the LED turns off and the bar stops moving. Then, silmutaneously, there is another LED on the opposite side of the push button that turns on and the servo begins to turn towards it where there is another push button. Once the servo comes in contact with the button the light turns off and the entire process repeats.

This project is brought to you by Christopher Houston, Eddie Dougherty, and Peter Marashio. The parts will be made out of plastic and designed using Solidworks. The electronic portion will be run using an Arduino board and Arduino programming.

Well... The original blog email was forgotten.

I, Peter Marashio, messed up when creating the original blog post. I forgot the username and password. So the following post will be about what was posted last week.