user2532869
user2532869

Reputation: 1

Function-definition is not allowed here before '{' token

I have been working with this simple program trying to fix this error for way too long. I am working with an Arduino and I just want to make an easy temperature monitor to turn some switches on and off. I keep getting the error "Function-definition is not allowed here before '{' token." If someone who knows more than I do and can help me out, that would be great!

float temp;

void setup(){
  pinMode(13, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(7, INPUT);
  pinMode(0, INPUT);
  Serial.begin(9600);
}

void highHeat(){
            temp = analogRead(0);
            temp = (5.0*temp*100.0/1024.0);
             if (temp > 79)
               {
                 digitalWrite(8, LOW);
                 digitalWrite(9, LOW);
                 digitalWrite(10, LOW);
                 digitalWrite(11, LOW);
                 digitalWrite(13, LOW);
               }

             if (temp < 78)
               {
                 digitalWrite(8, HIGH);
                 digitalWrite(9, HIGH);
                 digitalWrite(10, HIGH);
                 digitalWrite(11, HIGH);
                 digitalWrite(13, HIGH);
               }
             delay(10000);
}

void lowHeat(){
            temp = analogRead(0);
            temp = (5.0*temp*100.0/1024.0);
             if (temp > 26)
               {
                 digitalWrite(8, LOW);
                 digitalWrite(9, LOW);
                 digitalWrite(10, LOW);
                 digitalWrite(11, LOW);
                 digitalWrite(13, LOW);
               }

             if (temp < 25)
               {
                 digitalWrite(8, HIGH);
                 digitalWrite(9, HIGH);
                 digitalWrite(10, HIGH);
                 digitalWrite(11, HIGH);
                 digitalWrite(13, HIGH);
               }
             delay(10000);
}

void loop(){
  if (6 == HIGH)
    {
      delay(2000);
      if (6 == HIGH)
        {
          digitalWrite(13, HIGH);
          delay(500);
          digitalWrite(13, LOW);
          delay(500);
          digitalWrite(13, HIGH);
          delay(500);
          digitalWrite(13, LOW);
          delay(500);
          digitalWrite(13, HIGH);
          delay(500);
          digitalWrite(13, LOW);
          delay(500);
          digitalWrite(13, HIGH);
          delay(500);
          digitalWrite(13, LOW);
          void loop(){
            lowHeat();
          }
        }

      if (6 == LOW)
        {
          digitalWrite(13, HIGH);
          delay(500);
          digitalWrite(13, LOW);
          delay(500);
          digitalWrite(13, HIGH);
          delay(500);
          digitalWrite(13, LOW);
          void loop(){
            highHeat();
          }
        }
    }
}

P.S. I've done some searching and found many posts with the same title, but they never seem to be relevant to my problem, so I just thought I would ask for a little help.

Upvotes: 0

Views: 2545

Answers (1)

Greg Hewgill
Greg Hewgill

Reputation: 992857

You have:

      digitalWrite(13, LOW);
      void loop(){
        lowHeat();
      }

The compiler is complaining about the void loop() there. You can't define a function in the middle of another one.

Upvotes: 2

Related Questions