Go Down

Topic: Global variable "not declared in this scope" (Read 2184 times) previous topic - next topic

I'm only used to programming things in PHP, so I understand there are differences.  I don't understand why, no matter where I declare this variable, I keep getting the same errors.

My entire program so far is as follows:

Quote

int greenPin = 11;
int redPin = 10;
int switchPin = 9;
int lightState;

void setup()
{
  pinMode(greenPin,OUTPUT);
  pinMode(redPin,OUTPUT);
  pinMode(switchPin,INPUT);
}
//int lightState;
int lightDisplay(lightState){
  
  switch (lightState)
  {
    case 1:
    digitalWrite(greenPin,HIGH);
    digitalWrite(redPin,LOW);
    break;
    case 2:
    digitalWrite(redPin,HIGH);
    digitalWrite(greenPin,LOW);
    break;
    case 3:
    digitalWrite(redPin,LOW);
    digitalWrite(greenPin,LOW);
    break;
  }
}

void loop()
{

  if (digitalRead(switchPin) == HIGH)
  {
    lightDisplay(3);
  }
  else
  {
    lightDisplay(1);
  }
}



All I want to do is be able to call the lightDisplay() function and tell it whether to light a green LED, a red LED, or nothing at all.  Seems like this would be easier than rewriting the digitalWrite() statements over and over.

Anyway, when clicking the Verify button, I get this:

sketch_apr01a:-1: error: 'lightState' was not declared in this scope
sketch_apr01a:12: error: redefinition of 'int lightDisplay'
sketch_apr01a:-1: error: 'int lightDisplay' previously defined here

lightState is declared at the top of the code so I don't understand how this can be happening.  Am I using the wrong datatype or something?

AWOL

Code: [Select]
int lightDisplay(lightState){

Does lightState have a type?
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

You can get rid of it at the top of your code.  You just need to 'declare' it in your function definition

Code: [Select]

void lightDisplay(int lightState){


And make it a void function because it returns nothing.

Thank you.  I'm not used to having to declare variables that way, so no wonder I couldn't figure it out.  Declaring the variable inside the function worked great.

WillR

There is a reference section for this idea of scoping!
http://www.arduino.cc/en/Reference/Scope

It is worth the time to read and understand.

Global variables should generally be avoided.

Local variables are better.

Except for the exceptions -- but that is the advanced class.
Just another Hacker

Go Up