Intial Code - RubeGoldberg/22.201-802-ChrisPeterEddie GitHub Wiki
#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 // Now do whatever the light Modes indicates
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);
}
}