Go Down

Topic: Compile Error; Need another set of eyes [solved] (Read 285 times) previous topic - next topic

Sev

Jan 02, 2013, 07:50 am Last Edit: Jan 02, 2013, 08:11 am by Nick Gammon Reason: 1
So I'm trying to put together a 5-digit 7-segment display.  Unfortunately, I keep getting two compile errors that I can't track down the source of.  I was hoping another set of eyes could catch it, because I'm not finding any undefined variables or other weirdness that I'd expect to result in these errors.  Here're the errors:

"_7_seg_test_ver3:30: error: expected unqualified-id before 'return'
_7_seg_test_ver3:119: error: expected unqualified-id before 'return'"

I added inline comments to both lines so that they're easier to find below.    Thanks in advance, this is driving me nuts.

Code: [Select]

#define PIN_G 1
#define PIN_F 2
#define PIN_E 3
#define PIN_D 4
#define PIN_DP 5
#define PIN_C 6
#define PIN_B 7
#define PIN_A 8

#define DIGIT_0 9
#define DIGIT_1 10
#define DIGIT_2 11
#define DIGIT_3 12
#define DIGIT_4 13

#define FONT_1 B11111001
#define FONT_2 B01001100
#define FONT_3 B01101000
#define FONT_4 B00111001
#define FONT_5 B00101010
#define FONT_6 B00001011
#define FONT_7 B11111000
#define FONT_8 B00001000
#define FONT_9 B00111000
#define FONT_0 B10001000

void setup() {    

 pinMode(PIN_G, OUTPUT);
 digitalWrite(PIN_G, HIGH); // LINE 30
 pinMode(PIN_F, OUTPUT);
 digitalWrite(PIN_F, HIGH);
 pinMode(PIN_E, OUTPUT);
 digitalWrite(PIN_E, HIGH);
 pinMode(PIN_D, OUTPUT);
 digitalWrite(PIN_D, HIGH);
 pinMode(PIN_DP, OUTPUT);
 digitalWrite(PIN_DP, HIGH);
 pinMode(PIN_C, OUTPUT);
 digitalWrite(PIN_C, HIGH);
 pinMode(PIN_B, OUTPUT);
 digitalWrite(PIN_B, HIGH);
 pinMode(PIN_A, OUTPUT);
 digitalWrite(PIN_A, HIGH);
 
 pinMode(DIGIT_0, OUTPUT);
 digitalWrite(DIGIT_0, LOW);
 pinMode(DIGIT_1, OUTPUT);
 digitalWrite(DIGIT_1, LOW);
 pinMode(DIGIT_2, OUTPUT);
 digitalWrite(DIGIT_2, LOW);
 pinMode(DIGIT_3, OUTPUT);
 digitalWrite(DIGIT_3, LOW);
 pinMode(DIGIT_4, OUTPUT);
 digitalWrite(DIGIT_4, LOW);
}


byte segDisplay[10];
byte displayPosition = 0;
unsigned long currentValue = 0;
char decimalPosition = -1;

void tick(void)
{
 byte tmp;
 digitalWrite(PIN_A, HIGH);
 digitalWrite(PIN_B, HIGH);
 digitalWrite(PIN_C, HIGH);
 digitalWrite(PIN_D, HIGH);
 digitalWrite(PIN_E, HIGH);
 digitalWrite(PIN_G, HIGH);
 digitalWrite(PIN_DP, HIGH);
 digitalWrite(DIGIT_0, LOW);
 digitalWrite(DIGIT_1, LOW);
 digitalWrite(DIGIT_2, LOW);
 digitalWrite(DIGIT_3, LOW);
 digitalWrite(DIGIT_4, LOW);
 
 if(displayPosition > 4) displayPosition = 0;  
 
 tmp = segDisplay[displayPosition];
 
 if(bitRead(tmp, 7) == 0) digitalWrite(PIN_G, LOW);
 if(bitRead(tmp, 6) == 0) digitalWrite(PIN_F, LOW);
 if(bitRead(tmp, 5) == 0) digitalWrite(PIN_E, LOW);
 if(bitRead(tmp, 4) == 0) digitalWrite(PIN_D, LOW);
 if(bitRead(tmp, 3) == 0) digitalWrite(PIN_DP, LOW);
 if(bitRead(tmp, 2) == 0) digitalWrite(PIN_C, LOW);
 if(bitRead(tmp, 1) == 0) digitalWrite(PIN_B, LOW);
 if(bitRead(tmp, 0) == 0) digitalWrite(PIN_A, LOW);
 
 
 switch(displayPosition)
 {
   case 0:
     digitalWrite(DIGIT_0, HIGH);
     displayPosition++;
     break;
   case 1:
     digitalWrite(DIGIT_1, HIGH);
     displayPosition++;
     break;
   case 2:
     digitalWrite(DIGIT_2, HIGH);
     displayPosition++;
     break;
   case 3:
     digitalWrite(DIGIT_3, HIGH);
     displayPosition++;
     break;
   case 4:
     digitalWrite(DIGIT_4, HIGH);
     displayPosition++;
     break;
 };
}

return byte setDigit(int val) // LINE 119
{
 displayPosition = 0;
 byte tmp = 0;
 switch(val)
 {
   case 0:
     tmp = FONT_0;
     break;
   case 1:
     tmp = FONT_1;
     break;
   case 2:
     tmp = FONT_2;
     break;
   case 3:
     tmp = FONT_3;
     break;
   case 4:
     tmp = FONT_4;
     break;
   case 5:
     tmp = FONT_5;
     break;
   case 6:
     tmp = FONT_6;
     break;
   case 7:
     tmp = FONT_7;
     break;
   case 8:
     tmp = FONT_8;
     break;
   case 9:
     tmp = FONT_9;
     break;
   default:
     tmp = 0;
 };
 return tmp;
}

void setValue(unsigned long val)
{
 currentValue = val;
 for(char count = 9; count >= 0; count--)
 {
   segDisplay[count] = setDigit(val%10);
   val = val / 10;
 }
}


void loop() {
 tick();
 delay(10);
}

Coding Badly


Change...

Code: [Select]
return byte setDigit(int val) // LINE 119
{


...to...

Code: [Select]
byte setDigit(int val) // LINE 119
{


Sev

Oh, duh.  I knew it had to be something stupid like that, but I wasn't seeing it.

Thank you very much!

UKHeliBob

I know that the cause of the error has been found and fixed but, as a matter of interest, why are there semi-colons at the end of lines 116 and 157 ?
Please do not send me PMs asking for help.  Post in the forum then everyone will benefit from seeing the questions and answers.

Sev

I think I just forgot to remove them after an edit.  :)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy