Make calc with serial Communication. Consider operation of 1 digit value only,Perform +,-,/,*(%,&,|,*,sq)(display on lcd, 7seg))

 Step1: Initializations/Calculations/Assumptions/Connections

Define pattern in which you want to take the data

operand(a) operand(b) operation(o)

 Step2: Circuit

Only arduino and specify rx,tx pin

Step3: code

int iB = 0;   // for incoming serial data


void setup() {

        Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps

}


void loop() {

 char sdata[10];

        // send data only when you receive data:

        if (Serial.available()==3) {

                // read the incoming byte:

                int d = Serial.readBytesUntil('=',sdata, 3);

                //abo

                // say what you got:

                Serial.print("I received: ");

                Serial.println(sdata[0]-'0', DEC);

          Serial.println(", ");

          Serial.println(sdata[1]-'0', DEC);

          char op;

           int a;

          sdata[0]=sdata[0]-'0';

          sdata[1]=sdata[1]-'0';

          switch(sdata[2])

          {

            case '*':

            a=sdata[0]*sdata[1];

            Serial.print("Multiplication =");

            Serial.print(a);

            break;

            case '+':

            a=sdata[0]+sdata[1];

           Serial.print("Sum =");

            Serial.print(a);

            break;

            case '/':

            a=sdata[0]/sdata[1];

            Serial.print("Division = ");

            Serial.print(a);

            break;

            case '-':

            a=sdata[0]-sdata[1];

           Serial.print("Subtraction = ");

            Serial.print(a);

            break;

            default:

            break;

          }

          //Serial.print("answer is ",a);

/*for(int e=0; e<d;e++)

        {

         

          a=a+(sdata[e]-'0'); 

        }

          b=a/d;

    Serial.println("Sum is= ");

          Serial.println(a, DEC);

           Serial.println("Average is= ");

          Serial.println(b, DEC);*/

}

}








If 2 digit number then-

int iB = 0;   // for incoming serial data


void setup() {

        Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps

}


void loop() {

 char sdata[10];

        // send data only when you receive data:

        if (Serial.available()==5) {

                // read the incoming byte:

                int d = Serial.readBytesUntil('=',sdata, 5);

                //abo

                // say what you got:

                Serial.print("I received: ");

                Serial.println(sdata[0]-'0', DEC);

          Serial.println(", ");

          Serial.println(sdata[1]-'0', DEC);

          char op;

           int a;

          sdata[0]=sdata[0]-'0';

          sdata[1]=sdata[1]-'0';

          sdata[2]=sdata[2]-'0';

          sdata[3]=sdata[3]-'0';

          sdata[0]=(sdata[0]*10)+sdata[1];

          sdata[1]=(sdata[2]*10)+sdata[3];


          switch(sdata[4])

          {

            case '*':

            a=sdata[0]*sdata[1];

            Serial.print("Multiplication =");

            Serial.println(a,DEC);

            break;

            case '+':

            a=sdata[0]+sdata[1];

           Serial.print("Sum =");

            Serial.println(a,DEC);

            break;

            case '/':

            a=sdata[0]/sdata[1];

            Serial.print("Division = ");

            Serial.println(a,DEC);

            break;

            case '-':

            a=sdata[0]-sdata[1];

           Serial.print("Subtraction = ");

            Serial.println(a,DEC);

            break;

            default:

             Serial.print("Invalid operator");

            break;

          }

          //Serial.print("answer is ",a);

/*for(int e=0; e<d;e++)

        {

         

          a=a+(sdata[e]-'0'); 

        }

          b=a/d;

    Serial.println("Sum is= ");

          Serial.println(a, DEC);

           Serial.println("Average is= ");

          Serial.println(b, DEC);*/

}

}

Comments