Go Down

Topic: touchshield slide calculator (Read 420 times)previous topic - next topic

AaronD

Dec 02, 2013, 02:40 pm
hi i found this calculator code and i had to rewrite some code to make it work on the touchshield slide http://www.liquidware.com/shop/show/TSL/TouchShield+Slide+ and uses the Antipasto IDE http://www.liquidware.com/antipasto_arduino_ide. it only calculates 1x1 digit like 6+7 or 9x5 (which isn't helpful). so i need help changing the code so it can calculate as more digits like 24 + 12 or 150 / 10. here's the code:
Code: [Select]
`void setup(){  background(0);  stroke(100);  rect(74,40,178,37);    rect(35,91,50,30);  text("7",59,107,15);  rect(97,91,50,30);  text("8",122,107,15);  rect(159,91,50,30);  text("9",185,107,15);    rect(35,129,50,30);  text("4",59,145,15);  rect(97,129,50,30);  text("5",122,145,15);  rect(159,129,50,30);  text("6",184,145,15);    rect(35,167,50,30);  text("1",61,183,15);  rect(97,167,50,30);  text("2",122,183,15);  rect(159,167,50,30);  text("3",184,183,15);    rect(35,205,50,30);  text("C",59,221,15);  rect(97,205,50,30);  text("0",122,221,15);  rect(159,205,50,30);  text("=",184,220,18);    line(224,91,224,236);    rect(240,91,50,30);  text("/",265,106,10);  rect(240,129,50,30);  text("x",264,141,23);  rect(240,167,50,30);  text("-",265,182,20);  rect(240,205,50,30);  text("+",265,220,17);}void loop(){unsigned char auxCalc=0;  char number=0,sums=0;  char num1[2]={0};   char num2[2]={0};   char result[4]={0};  char operation[2]={0};  while(1){       gettouch();        if(mouseY>91 & mouseY<121){      //first row       if(mouseX>35 & mouseX<85){        auxCalc=7;       }else if(mouseX>97 & mouseX<147){        auxCalc=8;      }else if(mouseX>160 & mouseX<210){        auxCalc=9;      }else if(mouseX>240 & mouseX<270){        auxCalc='/';      }    }else if(mouseY>129 & mouseY<159){ //second row     if(mouseX>35 & mouseX<85){        auxCalc=4;       }else if(mouseX>97 & mouseX<147){        auxCalc=5;      }else if(mouseX>160 & mouseX<210){        auxCalc=6;      }else if(mouseX>240 & mouseX<270){        auxCalc='x';      }                    }else if(mouseY>167 & mouseY<197){ //third row      if(mouseX>35 & mouseX<85){        auxCalc=1;       }else if(mouseX>97 & mouseX<147){        auxCalc=2;      }else if(mouseX>160 & mouseX<210){        auxCalc=3;      }else if(mouseX>240 & mouseX<270){        auxCalc='-';      }                         }else if(mouseY>205 & mouseY<235){ //fourth row      if(mouseX>35 & mouseX<85){        auxCalc='E';        stroke(0);       rect(90,45,146,22);       }else if(mouseX>97 & mouseX<147){        auxCalc=0;       }else if(mouseX>160 & mouseX<210){        auxCalc='R';      }else if(mouseX>240 & mouseX<270){        auxCalc='+';     }else{      auxCalc='N';     }    }         if(number==0){      //get first number      if(auxCalc<10){        num1[0]=auxCalc+0x30;              }else{        if(auxCalc=='E'){                            num1[0]=0x30;                        }else{                            operation[0]=auxCalc;          if(operation[0]!='R' & operation[0]!='N' & operation[0]!='I'){            number++;            stroke(0);            rect(90,45,45,25);              delay(200);           stroke(100);             text(operation,106,53,10,10);          }                                                             }                                  }      stroke(100);      text(num1,94,53,10,10);      num2[0]=0;     }else if (number==1){       //get second number      if(auxCalc<10){        num2[0]=auxCalc+0x30;                    }else{        if(auxCalc=='E'){            num2[0]=0x30;         }else{                                                                   if(auxCalc=='R'){            switch(operation[0]){              case '+':                sums=(num1[0]-0x30);                sums+=(num2[0]-0x30);                                        break;              case '-':                sums=(num1[0]-0x30);                sums-=(num2[0]-0x30);                                        break;              case 'x':                sums=(num1[0]-0x30);                sums*=(num2[0]-0x30);                                        break;              case '/':                sums=(num1[0]-0x30);                sums/=(num2[0]-0x30);                                                                break;                default:                sums=(num1[0]-0x30);                sums+=(num2[0]-0x30);               break;                                                                           }                   if(sums<0){              result[0]='-';               result[1]=(-1*(sums/10))+0x30;              result[2]=(-1*(sums%10))+0x30;            }else{              result[0]=' ';                                                 result[1]=(sums/10)+0x30;              result[2]=(sums%10)+0x30;            }                   noStroke();            rect(113,45,10,15);            stroke(100);            text(num2,118,53,10,10);            text("=\0",130,53,10,10);            stroke(0);            rect(210,50,25,20);            stroke(100);             text(result,198,60,14,14);                                                          number++;                delay(200);                                                                            }                                                                                }                                   }       if(number<2){        stroke(100);        text(num2,118,53,10,10);      }    }else{      number=0;    }              }  }`

nilton61

#1
Dec 02, 2013, 03:20 pm
I would make a decent calculator and have it working before delving into a fancy UI

Go Up