Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // button number variable assignment
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(0,2,3,4,5,6);
- const int button1_pin = 19;
- const int button2_pin = 16;
- const int button3_pin = 12;
- const int button4_pin = 18;
- const int button5_pin = 17;
- const int button6_pin = 15;
- const int button7_pin = 7;
- const int button8_pin = 22;
- const int button9_pin = 22;
- int button1 = 0;
- int button2 = 0;
- int button3 = 0;
- int button4 = 0;
- int button5 = 0;
- int button6 = 0;
- int button7 = 0;
- int button8 = 0;
- int button9 = 0;
- // button operator variable assignment
- const int buttonPlus_pin = 10;
- const int buttonMinus_pin = 8;
- const int buttonMult_pin = 9;
- const int buttonDiv_pin = 11;;
- int buttonPlus = 0;
- int buttonMinus = 0;
- int buttonMult = 0;
- int buttonDiv = 0;
- // other button variable assignment
- const int equal_pin = 13;
- const int onOff_pin = 1;
- int equal = 0;
- int onOff = 0;
- const int photoR_pin = A0;
- int photoR = 0;
- // Other int
- int phaseCounter = 0;
- int printCounter = 0;
- int counterHelper = 0;
- int buttonPushCounter1 = 0;
- int buttonPushCounter2 =0;
- int buttonPushCounter3 =0;
- int buttonPushCounter4 =0;
- int buttonPushCounter5 =0;
- int buttonPushCounter6 =0;
- int buttonPushCounter7 =0;
- int buttonPushCounter8 =0;
- int buttonPushCounter9 =0;
- int buttonPushCounter1prev = 0;
- int buttonPushCounter2prev =0;
- int buttonPushCounter3prev =0;
- int buttonPushCounter4prev =0;
- int buttonPushCounter5prev =0;
- int buttonPushCounter6prev =0;
- int buttonPushCounter7prev =0;
- int buttonPushCounter8prev =0;
- int buttonPushCounter9prev =0;
- int buttonPushCounterPlus = 0;
- int buttonPushCounterMinus = 0;
- int buttonPushCounterMult = 0;
- int buttonPushCounterDiv = 0;
- int buttonPushCounterEqual = 0;
- int buttonPushCounterOnOff = 0;
- int buttonPushCounterPlusprev = 0;
- int buttonPushCounterMinusprev = 0;
- int buttonPushCounterMultprev = 0;
- int buttonPushCounterDivprev = 0;
- int buttonPushCounterEqualprev = 0;
- int buttonPushCounterOnOffprev = 0;
- int lastButtonState1 = 0;
- int lastButtonState2 = 0;
- int lastButtonState3 = 0;
- int lastButtonState4 = 0;
- int lastButtonState5 = 0;
- int lastButtonState6 = 0;
- int lastButtonState7 = 0;
- int lastButtonState8 = 0;
- int lastButtonState9 = 0;
- int lastButtonStatePlus = 0;
- int lastButtonStateMinus = 0;
- int lastButtonStateMult = 0;
- int lastButtonStateDiv = 0;
- int lastButtonStateEqual = 0;
- int lastButtonStateOnOff = 0;
- int phase = 0;
- int onState = 0;
- int numberPressed = 0;
- long value1 = 0;
- long value2 = 0;
- int operatorValue = 0; // 1 will add, 2 will sub, 3 will mult, 4 will div
- long totalNumber = 0;
- void setup()
- {
- lcd.begin(16,2);
- pinMode(button1_pin,INPUT);
- pinMode(button2_pin,INPUT);
- pinMode(button3_pin,INPUT);
- pinMode(button4_pin,INPUT);
- pinMode(button5_pin,INPUT);
- pinMode(button6_pin,INPUT);
- pinMode(button7_pin,INPUT);
- pinMode(button8_pin,INPUT);
- pinMode(button9_pin,INPUT);
- pinMode(buttonPlus_pin,INPUT);
- pinMode(buttonMinus_pin,INPUT);
- pinMode(buttonMult_pin,INPUT);
- pinMode(buttonDiv_pin,INPUT);
- pinMode(equal_pin,INPUT);
- pinMode(onOff_pin,INPUT);
- pinMode(photoR_pin,INPUT);
- }
- void loop()
- {
- button1 = digitalRead(button1_pin);
- button2 = digitalRead(button2_pin);
- button3 = digitalRead(button3_pin);
- button4 = digitalRead(button4_pin);
- button5 = digitalRead(button5_pin);
- button6 = digitalRead(button6_pin);
- button7 = digitalRead(button7_pin);
- button8 = digitalRead(button8_pin);
- button9 = digitalRead(button9_pin);
- buttonPlus = digitalRead(buttonPlus_pin);
- buttonMinus = digitalRead(buttonMinus_pin);
- buttonMult = digitalRead(buttonMult_pin);
- buttonDiv = digitalRead(buttonDiv_pin);
- equal = digitalRead(equal_pin);
- onOff = digitalRead(onOff_pin);
- photoR = analogRead(photoR_pin);
- // I Created this bellow as a debugging tool to test the buttons to make sure all of them are reading correctly
- //if (button1 == HIGH)
- // {Serial.println("1");}
- //else if (button2 == HIGH)
- //{Serial.println("2");}
- //else if (button3 == HIGH)
- //{Serial.println("3");}
- //else if (button4 == HIGH)
- //{Serial.println("4");}
- //else if (button5 == HIGH)
- //{Serial.println("5");}
- //else if (button6 == HIGH)
- //{Serial.println("6");}
- //else if (button7 == HIGH)
- //{Serial.println("7");}
- //else if (button8 == HIGH)
- //{Serial.println("8");}
- //else if (button9 == HIGH)
- //{Serial.println("9");}
- //else if (buttonPlus == HIGH)
- //{Serial.println("+");}
- //else if(buttonMinus == HIGH)
- //{Serial.println("-");}
- // else if(buttonMult == HIGH)
- //{Serial.println("*");}
- //else if(buttonDiv == HIGH)
- //{Serial.println("/");}
- //else if (equal == HIGH)
- //{Serial.println("=");}
- // else if (onOff == HIGH)
- // {Serial.println("onOff");}
- //else
- //{Serial.println(photoR);}
- // Method I used to keep track of button pushes
- if (button1 != lastButtonState1){
- if (button1 == HIGH){
- buttonPushCounter1++;}}
- lastButtonState1 = button1;
- if (button2 != lastButtonState2){
- if (button2 == HIGH){
- buttonPushCounter2++;}}
- lastButtonState2 = button2;
- if (button3 != lastButtonState3){
- if (button3 == HIGH){
- buttonPushCounter3++;}}
- lastButtonState2 = button2;
- if (button3 != lastButtonState3){
- if (button3 == HIGH){
- buttonPushCounter3++;}}
- lastButtonState3 = button3;
- if (button4 != lastButtonState4){
- if (button4 == HIGH){
- buttonPushCounter4++;}}
- lastButtonState4 = button4;
- if (button5 != lastButtonState5){
- if (button5 == HIGH){
- buttonPushCounter5++;}}
- lastButtonState5 = button5;
- if (button6 != lastButtonState6){
- if (button6 == HIGH){
- buttonPushCounter6++;}}
- lastButtonState6 = button6;
- if (button7 != lastButtonState7){
- if (button7 == HIGH){
- buttonPushCounter7++;}}
- lastButtonState7 = button7;
- if (button8 != lastButtonState8){
- if (button8 == HIGH){
- buttonPushCounter8++;}}
- lastButtonState8 = button8;
- if (button9 != lastButtonState9){
- if (button9 == HIGH){
- buttonPushCounter9++;}}
- lastButtonState9 = button9;
- if (buttonPlus != lastButtonStatePlus){
- if (buttonPlus == HIGH){
- buttonPushCounterPlus++;}}
- lastButtonStatePlus = buttonPlus;
- if (buttonMinus != lastButtonStateMinus){
- if (buttonMinus == HIGH){
- buttonPushCounterMinus++;}}
- lastButtonStateMinus = buttonMinus;
- if (buttonMult != lastButtonStateMult){
- if (buttonMult == HIGH){
- buttonPushCounterMult++;}}
- lastButtonStateMult = buttonMult;
- if (buttonDiv != lastButtonStateDiv){
- if (buttonDiv == HIGH){
- buttonPushCounterDiv++;}}
- lastButtonStateDiv = buttonDiv;
- if (equal != lastButtonStateEqual){
- if (equal == HIGH){
- buttonPushCounterEqual++;}}
- lastButtonStateEqual = equal;
- if (onOff != lastButtonStateOnOff){
- if (onOff == HIGH){
- buttonPushCounterOnOff++;}}
- lastButtonStateOnOff = onOff;
- // Actual Calculator code starts here:
- if (photoR >= 350)
- {
- if (phase == 0)
- {
- if (buttonPushCounterOnOff != buttonPushCounterOnOffprev )
- {
- lcd.clear();
- delay(300);
- lcd.print("Turning On");
- lcd.setCursor(0,1);
- lcd.print(".");
- delay(300);
- lcd.setCursor(1,1);
- lcd.print(".");
- delay(300);
- lcd.setCursor(2,1);
- lcd.print(".") ;
- delay(300);
- lcd.setCursor(3,1);
- lcd.print(".") ;
- delay(300);
- lcd.setCursor(4,1);
- lcd.print(".") ;
- totalNumber = 0;
- numberPressed = 0;
- value1 = 0;
- value2 = 0;
- operatorValue = 0;
- onState = 1;
- buttonPushCounterOnOffprev = buttonPushCounterOnOff;
- phase++;
- }
- }
- if (phase == 1)
- {
- if (buttonPushCounterOnOff != buttonPushCounterOnOffprev )
- {
- lcd.clear();
- delay(300);
- lcd.print("Turning Off");
- lcd.setCursor(0,1);
- lcd.print(".");
- delay(300);
- lcd.setCursor(1,1);
- lcd.print(".");
- delay(300);
- lcd.setCursor(2,1);
- lcd.print(".") ;
- delay(300);
- lcd.setCursor(3,1);
- lcd.print(".") ;
- delay(300);
- lcd.setCursor(4,1);
- lcd.print(".") ;
- buttonPushCounterOnOffprev = buttonPushCounterOnOff;
- phase = 0;
- }
- if (buttonPushCounter1 != buttonPushCounter1prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 1 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 1 * pow(10,(numberPressed));
- lcd.clear();
- lcd.print(value1);
- }
- numberPressed++;
- buttonPushCounter1prev = buttonPushCounter1;
- }
- if (buttonPushCounter2 != buttonPushCounter2prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 2 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 2 * pow(10,(numberPressed));
- lcd.clear();
- lcd.print(value1);
- }
- numberPressed++;
- buttonPushCounter2prev = buttonPushCounter2;
- }
- if (buttonPushCounter3 != buttonPushCounter3prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 3 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 3 * pow(10,(numberPressed));
- lcd.clear();
- lcd.print(value1);
- }
- numberPressed++;
- buttonPushCounter3prev = buttonPushCounter3;
- }
- if (buttonPushCounter4 != buttonPushCounter4prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 4 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 4 * pow(10,(numberPressed));
- lcd.clear();
- lcd.print(value1);
- }
- numberPressed++;
- buttonPushCounter4prev = buttonPushCounter4;
- }
- if (buttonPushCounter5 != buttonPushCounter5prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 5 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 5 * pow(10,(numberPressed));
- lcd.clear();
- lcd.print(value1);
- }
- numberPressed++;
- buttonPushCounter5prev = buttonPushCounter5;
- }
- if (buttonPushCounter6 != buttonPushCounter6prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 6 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 6 * pow(10,(numberPressed));
- Serial.println(value1);
- }
- numberPressed++;
- buttonPushCounter6prev = buttonPushCounter6;
- }
- if (buttonPushCounter7 != buttonPushCounter7prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 7 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 7 * pow(10,(numberPressed));
- lcd.clear();
- lcd.print(value1);
- }
- numberPressed++;
- buttonPushCounter7prev = buttonPushCounter7;
- }
- if (buttonPushCounter8 != buttonPushCounter8prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 8 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 8 * pow(10,(numberPressed));
- lcd.clear();
- lcd.print(value1);
- }
- numberPressed++;
- buttonPushCounter8prev = buttonPushCounter8;
- }
- if (buttonPushCounter9 != buttonPushCounter9prev)
- {
- if (numberPressed < 1)
- {
- value1 = value1 + 9 + 0.5;
- lcd.clear();
- lcd.print(value1);
- }
- else
- {
- value1 = 0.5 + value1 + 9 * pow(10,(numberPressed));
- lcd.clear();
- lcd.print(value1);
- }
- numberPressed++;
- buttonPushCounter9prev = buttonPushCounter9;
- }
- if (buttonPushCounterPlus != buttonPushCounterPlusprev)
- {
- operatorValue = 1; //addition
- lcd.setCursor(1,6);
- lcd.print("+");
- numberPressed = 0;
- buttonPushCounterPlusprev = buttonPushCounterPlus;
- phase = 2;
- }
- if (buttonPushCounterMinus != buttonPushCounterMinusprev)
- {
- operatorValue = 2; //subtraction
- lcd.setCursor(1,6);
- lcd.print("-");
- numberPressed = 0;
- buttonPushCounterMinusprev = buttonPushCounterMinus;
- phase = 2;
- }
- if (buttonPushCounterMult != buttonPushCounterMultprev)
- {
- operatorValue = 3; //multi
- lcd.setCursor(1,6);
- lcd.print("*");
- numberPressed = 0;
- buttonPushCounterMultprev = buttonPushCounterMult;
- phase = 2;
- }
- if (buttonPushCounterDiv != buttonPushCounterDivprev)
- {
- operatorValue = 4; // div
- lcd.setCursor(1,6);
- lcd.print("/");
- numberPressed = 0;
- buttonPushCounterDivprev = buttonPushCounterDiv;
- phase = 2;
- }
- }
- if (phase == 2)
- {
- if (buttonPushCounterOnOff != buttonPushCounterOnOffprev)
- {
- lcd.clear();
- delay(300);
- lcd.print("Turning Off");
- lcd.setCursor(0,1);
- lcd.print(".");
- delay(300);
- lcd.setCursor(1,1);
- lcd.print(".");
- delay(300);
- lcd.setCursor(2,1);
- lcd.print(".") ;
- delay(300);
- lcd.setCursor(3,1);
- lcd.print(".") ;
- delay(300);
- lcd.setCursor(4,1);
- lcd.print(".") ;
- buttonPushCounterOnOffprev = buttonPushCounterOnOff;
- phase = 0;
- }
- if (buttonPushCounter1 != buttonPushCounter1prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 1 + 0.5;
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- else
- {
- value2 = 0.5 + value2 + 1 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter1prev = buttonPushCounter1;
- }
- if (buttonPushCounter2 != buttonPushCounter2prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 2 + 0.5;
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- else
- {
- value2 = 0.5 + value2 + 2 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter2prev = buttonPushCounter2;
- }
- if (buttonPushCounter3 != buttonPushCounter3prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 3 + 0.5;
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- else
- {
- value1 = 0.5 + value2 + 3 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter3prev = buttonPushCounter3;
- }
- if (buttonPushCounter4 != buttonPushCounter4prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 4 + 0.5;
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- else
- {
- value2 = 0.5 + value2+ 4 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter4prev = buttonPushCounter4;
- }
- if (buttonPushCounter5 != buttonPushCounter5prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 5 + 0.5;
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- else
- {
- value2 = 0.5 + value2 + 5 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter5prev = buttonPushCounter5;
- }
- if (buttonPushCounter6 != buttonPushCounter6prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 6 + 0.5;
- lcd.setCursor(0,1);
- }
- else
- {
- value2 = 0.5 + value2 + 6 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter6prev = buttonPushCounter6;
- }
- if (buttonPushCounter7 != buttonPushCounter7prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 7 + 0.5;
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- else
- {
- value2 = 0.5 + value2 + 7 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter7prev = buttonPushCounter7;
- }
- if (buttonPushCounter8 != buttonPushCounter8prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 8 + 0.5;
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- else
- {
- value2 = 0.5 + value2 + 8 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter8prev = buttonPushCounter8;
- }
- if (buttonPushCounter9 != buttonPushCounter9prev)
- {
- if (numberPressed < 1)
- {
- value2 = value2 + 9 + 0.5;
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- else
- {
- value2 = 0.5 + value2 + 9 * pow(10,(numberPressed));
- lcd.setCursor(0,1);
- lcd.print(value2);
- }
- numberPressed++;
- buttonPushCounter9prev = buttonPushCounter9;
- }
- if (buttonPushCounterEqual != buttonPushCounterEqualprev)
- {
- if (operatorValue == 1) //add
- {
- totalNumber = value1 + value2;
- lcd.clear();
- lcd.print("=");
- lcd.setCursor(0,1);
- lcd.print(totalNumber);
- Serial.println(totalNumber);
- }
- if (operatorValue == 2) //sub
- {
- totalNumber = value1 - value2;
- lcd.clear();
- lcd.print("=");
- lcd.setCursor(0,1);
- lcd.print(totalNumber);
- }
- if (operatorValue == 3)// mult
- {
- totalNumber = value1 * value2;
- lcd.clear();
- lcd.print("=");
- lcd.setCursor(0,1);
- lcd.print(totalNumber);
- }
- if (operatorValue == 4) //div
- {
- totalNumber = value1 / value2;
- lcd.clear();
- lcd.print("=");
- lcd.setCursor(0,1);
- lcd.print(totalNumber);
- }
- buttonPushCounterEqualprev = buttonPushCounterEqual;
- phase = 3;
- }
- }
- if (phase == 3)
- {
- if (buttonPushCounterOnOff != buttonPushCounterOnOffprev)
- {
- lcd.clear();
- delay(300);
- lcd.print("Turning Off");
- lcd.setCursor(0,1);
- lcd.print(".");
- delay(300);
- lcd.setCursor(1,1);
- lcd.print(".");
- delay(300);
- lcd.setCursor(2,1);
- lcd.print(".") ;
- delay(300);
- lcd.setCursor(3,1);
- lcd.print(".") ;
- delay(300);
- lcd.setCursor(4,1);
- lcd.print(".") ;
- buttonPushCounterOnOffprev = buttonPushCounterOnOff;
- phase = 0;
- }
- if (buttonPushCounterPlus != buttonPushCounterPlusprev)
- {
- operatorValue = 1; //addition
- lcd.clear();
- lcd.print("+");
- value1 = totalNumber;
- value2 = 0;
- numberPressed = 0;
- buttonPushCounterPlusprev = buttonPushCounterPlus;
- phase = 2;
- }
- if (buttonPushCounterMinus != buttonPushCounterMinusprev)
- {
- operatorValue = 2; //subtraction
- lcd.clear();
- lcd.print("-");
- value1 = totalNumber;
- value2 = 0;
- numberPressed = 0;
- buttonPushCounterMinusprev = buttonPushCounterMinus;
- phase = 2;
- }
- if (buttonPushCounterMult != buttonPushCounterMultprev)
- {
- operatorValue = 3; //multi
- lcd.clear();
- lcd.print("*");
- value1 = totalNumber;
- value2 = 0;
- numberPressed = 0;
- buttonPushCounterMultprev = buttonPushCounterMult;
- phase = 2;
- }
- if (buttonPushCounterDiv != buttonPushCounterDivprev)
- {
- operatorValue = 4; // div
- lcd.clear();
- lcd.print("/");
- value1 = totalNumber;
- value2 = 0;
- numberPressed = 0;
- buttonPushCounterDivprev = buttonPushCounterDiv;
- phase = 2;
- }
- }
- }
- // Turns screen off, but saves the data if the room is too dark or some one put a cover on top of the calculator
- else
- {
- lcd.clear();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment