I know its been long time since this thred was closed but if u are still around then please have a look at my problem.
I was trying to work out serial com between two arudinos when i came across this post and simply copied the code and found it working.
So far so good.
however i need to also print the stuff received on a 7 seg dispaly.
here is where the problem arises. when i add the 7 seg ment dispaly code your code stops working.
specifically it stops getting the correct transmitted value and insted displays stuff like 4294955015.
//Receiver Code
int dig_1,dig_2,dig_3,dig_4,refresh=1;
int val;
void setup() {
Serial.begin(9600);
}
void loop() {
while (!Serial.available()){}
//delay(100); //allows all serial sent to be received together
byte b1 = Serial.read();
while (!Serial.available()){}
// delay(100); //allows all serial sent to be received together
byte b2 = Serial.read();
val = b2 + b1 *256 ;
Serial.println(val);
dig_1 = val / 1000; // digit 1 temperature value
dig_2 = (val - 1000 * dig_1) / 100; // digit 2 temperature value
dig_3 = (val - 1000 * dig_1 - 100 * dig_2) / 10; // digit 3 temperature value
dig_4 = val - 1000 * dig_1 - 100 * dig_2 - 10 * dig_3; // digit 4 temperature value
digit_pos(); // function switching the digit positions
}
void displaydigit(int dig_n) // function sending segment enable signals to 7 seg display
{
switch (dig_n)
{
case 0:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, LOW); // to segment B
digitalWrite(8, LOW); // to segment C
digitalWrite(9, LOW); // to segment D
digitalWrite(10, LOW); // to segment E
digitalWrite(11, LOW); // to segment F
digitalWrite(12, HIGH); // to segment G
break;
case 1:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, HIGH); // to segment B
digitalWrite(8, HIGH); // to segment C
digitalWrite(9, LOW); // to segment D
digitalWrite(10, LOW); // to segment E
digitalWrite(11, LOW); // to segment F
digitalWrite(12, LOW); // to segment G
break;
case 2:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, LOW); // to segment B
digitalWrite(8, HIGH); // to segment C
digitalWrite(9, LOW); // to segment D
digitalWrite(10, LOW); // to segment E
digitalWrite(11, HIGH); // to segment F
digitalWrite(12, LOW); // to segment G
break;
case 3:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, LOW); // to segment B
digitalWrite(8, LOW); // to segment C
digitalWrite(9, LOW); // to segment D
digitalWrite(10, HIGH); // to segment E
digitalWrite(11, HIGH); // to segment F
digitalWrite(12, LOW); // to segment G
break;
case 4:
digitalWrite(6, HIGH); // to segment A
digitalWrite(7, LOW); // to segment B
digitalWrite(8, LOW); // to segment C
digitalWrite(9, HIGH); // to segment D
digitalWrite(10, HIGH); // to segment E
digitalWrite(11, LOW); // to segment F
digitalWrite(12, LOW); // to segment G
break;
case 5:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, HIGH); // to segment B
digitalWrite(8, LOW); // to segment C
digitalWrite(9, LOW); // to segment D
digitalWrite(10, HIGH); // to segment E
digitalWrite(11, LOW); // to segment F
digitalWrite(12, LOW); // to segment G
break;
case 6:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, HIGH); // to segment B
digitalWrite(8, LOW); // to segment C
digitalWrite(9, LOW); // to segment D
digitalWrite(10, LOW); // to segment E
digitalWrite(11, LOW); // to segment F
digitalWrite(12, LOW); // to segment G
break;
case 7:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, LOW); // to segment B
digitalWrite(8, LOW); // to segment C
digitalWrite(9, HIGH); // to segment D
digitalWrite(10, HIGH); // to segment E
digitalWrite(11, HIGH); // to segment F
digitalWrite(12, HIGH); // to segment G
break;
case 8:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, LOW); // to segment B
digitalWrite(8, LOW); // to segment C
digitalWrite(9, LOW); // to segment D
digitalWrite(10, LOW); // to segment E
digitalWrite(11, LOW); // to segment F
digitalWrite(12, LOW); // to segment G
break;
case 9:
digitalWrite(6, LOW); // to segment A
digitalWrite(7, LOW); // to segment B
digitalWrite(8, LOW); // to segment C
digitalWrite(9, HIGH); // to segment D
digitalWrite(10, HIGH); // to segment E
digitalWrite(11, LOW); // to segment F
digitalWrite(12, LOW); // to segment G
break;
}
delay(1);
}
void digit_pos() // function switching the digit positions
{
digitalWrite(2, HIGH); // digit 1 on
digitalWrite(3, LOW); // digit 2 off
digitalWrite(4, LOW); // digit 3 off
digitalWrite(5, LOW); // digit 4 off
displaydigit(dig_1);
delay(refresh); // display hold
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
displaydigit(dig_2);
delay(refresh);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
displaydigit(dig_3);
delay(refresh);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
displaydigit(dig_4);
delay(refresh);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}