Sunday, November 24, 2013

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);
  }
}

No comments:

Post a Comment