// recievercode for mega int wW = 0; int xX = 0; int yY = 0; int sum; int state11; int state12; int state; int x = 0; int a; int b; int c; int d; int A = 0; int y; void setup() { pinMode(18,INPUT_PULLUP); pinMode(2,INPUT_PULLUP); pinMode(3,INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(2),interruptpin3,CHANGE); attachInterrupt(digitalPinToInterrupt(3),interruptpin2,CHANGE); attachInterrupt(digitalPinToInterrupt(18),interruptpin18,CHANGE); Serial.begin(9600); } void loop () { if(A == 0 && x == 0 ) { a = state; x = 1; } if(A == 1 ) { if( x == 1) { b = state; x = 2; } if(state != b && x == 2) { c = state; if( c == 2 )//units 0 - 3 { if(a == 0 && b == 0 || a == 1 && b == 0 || a == 0 && b == 1 || a == 1 && b == 1) { wW = (b*2 + a); d = 1; } } if(c == 0)// units 4 - 9 { if(a == 0 && b == 2 || a == 1 && b == 2 || a == 2 && b == 2 || a == 1 && b == 3 || a == 2 && b == 3 || a == 3 && b == 3) { wW = (b*2 + a); d = 1; } } if( c == 3)//tens 0 - 3) { if(a == 0 && b == 0 || a == 1 && b == 0 || a == 0 && b == 1 || a == 1 && b == 1) { xX = (b*2 + a); d = 2; } } if( c == 1)// tens 4 - 9 { if(a == 0 && b == 2 || a == 1 && b == 2 || a == 2 && b == 2 || a == 1 && b == 3 || a == 2 && b == 3 || a == 3 && b == 3 ) { xX = (b*2 + a); d = 2; } } if( c == 1)// hunderds 0 - 1 { if(a == 0 && b == 0 || a == 1 && b == 0) { yY = (b*2 + a); d = 3; } } if( c == 0)// hunderds 2 - 3 { if(a == 0 && b == 1 || a == 1 && b == 1) { yY = (b*2 + a); d = 3; } } if( c == 3)//hunderds 4 - 6 { if(a == 0 && b == 2 || a == 1 && b == 2 || a == 2 && b == 2) { yY = (b*2 + a); d = 3; } } if( c == 2)//hunderds 7 - 9 { if(a == 1 && b == 3 || a == 2 && b == 3 || a == 3 && b == 3) { yY = (b*2 + a); d = 3; } } if(c == 2 && b == 0 || c == 2 && b == 1 || c == 0 && b == 2 || c == 0 && b == 3 )//when the units are recieved, { sum = (yY*100)+ (xX*10) + wW;//calculate sum } Serial.print("sum = "); Serial.println(sum); a = 5; b = 5; c = 5; x = 0; } } } void interruptpin18() { A = digitalRead(18);//controlline state11 = digitalRead(2);// dataline1 state12 = digitalRead(3);// dataline2 state = (state11*2) + state12; } void interruptpin2() { A = digitalRead(18);//controlline state11 = digitalRead(2);// dataline1 state12 = digitalRead(3);// dataline2 state = (state11*2) + state12; } void interruptpin3() { A = digitalRead(18);//controlline state12 = digitalRead(3);// dataline2 state11 = digitalRead(2);// dataline1 state = (state11*2) + state12; }