Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Arduino.h>
- #define LEDred 2
- #define LEDgreen 4
- #define numberLength 20 //How long the 2 numbers can be - 20 in this case. Please change only this number if bigger numbers are needed.
- char firstNumber[numberLength];
- int firstNumberCount = 1;
- int firstNumberAsInt = 0;
- char secondNumber[numberLength];
- int secondNumberCount = 1;
- int secondNumberAsInt = 0;
- bool first = true;
- bool second = false;
- int result = 0;
- void setup() {
- Serial.begin(9600);
- pinMode(LEDred, OUTPUT);
- pinMode(LEDgreen, OUTPUT);
- firstNumber[0] = 0;
- secondNumber[0] = 0;
- }
- void loop() {
- int charsRead = 0;
- while(Serial.available() > 0)
- {
- char c = Serial.read();
- if(c != '\n')
- {
- digitalWrite(LEDgreen, LOW);
- digitalWrite(LEDred, LOW);
- if(c == '0' || c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9')
- {
- if(first)
- {
- firstNumber[charsRead] = c;
- charsRead++;
- firstNumberCount = charsRead;
- }
- else if (second)
- {
- secondNumber[charsRead] = c;
- charsRead++;
- secondNumberCount = charsRead;
- }
- }
- else if (c == '+' || c == '-' || c == '*' || c == '/')
- {
- switch(c)
- {
- case '+':
- //code for addition and converting the arrays into integers
- first = false;
- second = true;
- for(int i = 0; i < firstNumberCount; i++)
- {
- int integ = ((int)(firstNumber[i]) - 48) * pow((1*10),(firstNumberCount-i)); // na stepen count - i ??? kak e na stepen v C, da proverq formulata na vladan da kaja na vladan che atof e cheating
- firstNumberAsInt += integ;
- }
- for(int i = 0; i < secondNumberCount; i++)
- {
- int integ = ((int)(secondNumber[i]) - 48) * pow((1*10),(secondNumberCount-i)); // na stepen count - i ??? kak e na stepen v C, da proverq formulata na vladan da kaja na vladan che atof e cheating
- secondNumberAsInt += integ;
- }
- result = firstNumberAsInt + secondNumberAsInt;
- break;
- case '-':
- //code for substraction and converting the arrays into integers
- first = false;
- second = true;
- for(int i = 0; i < firstNumberCount; i++)
- {
- int integ = ((int)(firstNumber[i]) - 48) * pow((1*10),(firstNumberCount-i)); // na stepen count - i ??? kak e na stepen v C, da proverq formulata na vladan da kaja na vladan che atof e cheating
- firstNumberAsInt += integ;
- }
- for(int i = 0; i < secondNumberCount; i++)
- {
- int integ = ((int)(secondNumber[i]) - 48) * pow((1*10),(secondNumberCount-i)); // na stepen count - i ??? kak e na stepen v C, da proverq formulata na vladan da kaja na vladan che atof e cheating
- secondNumberAsInt += integ;
- }
- result = firstNumberAsInt - secondNumberAsInt;
- break;
- case '*':
- //code for multiplying and converting the arrays into integers
- first = false;
- second = true;
- for(int i = 0; i < firstNumberCount; i++)
- {
- int integ = ((int)(firstNumber[i]) - 48) * pow((1*10),(firstNumberCount-i)); // na stepen count - i ??? kak e na stepen v C, da proverq formulata na vladan da kaja na vladan che atof e cheating
- firstNumberAsInt += integ;
- }
- for(int i = 0; i < secondNumberCount; i++)
- {
- int integ = ((int)(secondNumber[i]) - 48) * pow((1*10),(secondNumberCount-i)); // na stepen count - i ??? kak e na stepen v C, da proverq formulata na vladan da kaja na vladan che atof e cheating
- secondNumberAsInt += integ;
- }
- result = firstNumberAsInt * secondNumberAsInt;
- break;
- case '/':
- //code for dividing and converting the arrays into integers
- first = false;
- second = true;
- for(int i = 0; i < firstNumberCount; i++)
- {
- int integ = ((int)(firstNumber[i]) - 48) * pow((1*10),(firstNumberCount-i)); // na stepen count - i ??? kak e na stepen v C, da proverq formulata na vladan da kaja na vladan che atof e cheating
- firstNumberAsInt += integ;
- }
- for(int i = 0; i < secondNumberCount; i++)
- {
- int integ = ((int)(secondNumber[i]) - 48) * pow((1*10),(secondNumberCount-i)); // na stepen count - i ??? kak e na stepen v C, da proverq formulata na vladan da kaja na vladan che atof e cheating
- secondNumberAsInt += integ;
- }
- result = firstNumberAsInt / secondNumberAsInt;
- break;
- }
- }
- if(c == '=')
- {
- first = true;
- second = false;
- firstNumber[0] = 0;
- secondNumber[0] = 0;
- firstNumberCount = 1;
- secondNumberCount = 1;
- firstNumberAsInt = 0;
- secondNumberAsInt = 0;
- //reseting everything, printing result.
- Serial.print("Result is: "); Serial.println(result);
- //make LEDS light up
- if(result > 0)
- digitalWrite(LEDgreen, HIGH);
- else if (result < 0)
- digitalWrite(LEDred, HIGH);
- else
- {
- digitalWrite(LEDgreen, LOW);
- digitalWrite(LEDred, LOW);
- }
- result = 0;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement