error functie definitie

algemene C code
Berichten: 4
Geregistreerd: 14 Jan 2017, 19:35

error functie definitie

Berichtdoor sjoerd rosier » 14 Jan 2017, 19:41

Hallo allemaal. ik heb een code gemaakt voor een 20x4 lcd menu maar ik krijg de hele tijd deze error:
weet iemand hoe ik dit probleem kan oplossen? dat zou fijn zijn. groet Sjoerd

Arduino: 1.6.11 (Windows 10), Board:"Arduino/Genuino Uno"

C:\Users\Sjoerd\Desktop\menu_4_items_arduino_2.0\menu_4_items_arduino_2.0.ino: In function 'void loop()':

menu_4_items_arduino_2.0:124: error: a function-definition is not allowed here before '{' token

{

^

menu_4_items_arduino_2.0:277: error: expected '}' at end of input

}

^

menu_4_items_arduino_2.0:277: error: expected '}' at end of input

exit status 1
a function-definition is not allowed here before '{' token

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

dit is de code die ik gebruik:

cpp code
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 20, 4);

int contrast=127;

int menuitem = 1;
int page = 1;

volatile boolean up = false;
volatile boolean down = false;
volatile boolean middle = false;

int downButtonState = 0;
int upButtonState = 0;
int selectButtonState = 0;
int lastDownButtonState = 0;
int lastSelectButtonState = 0;
int lastUpButtonState = 0;

void drawMenu();

void checkIfDownButtonIsPressed();
void checkIfUpButtonIsPressed();
void checkIfSelectButtonIsPressed();

void turnBacklightOff();
void turnBacklightOn();

void resetDefaults();



void setup() {

pinMode(13, INPUT_PULLUP); //down knop
pinMode(12, INPUT_PULLUP); //select knop
pinMode(11, INPUT_PULLUP); //up knop
pinMode(7,OUTPUT); //ledje

digitalWrite(7,HIGH); //Turn Backlight ON

Serial.begin(9600);

lcd.begin();
lcd.clear(); //lcd leegmaken als er iets opstond
}

void loop() {

drawMenu(); //lcd function
checkIfDownButtonIsPressed(); //kijken voor knoppen of ze gedrukt zijn
checkIfUpButtonIsPressed();
checkIfSelectButtonIsPressed();

downButtonState = digitalRead(13);
selectButtonState = digitalRead(12);
upButtonState = digitalRead(11);



if (up && page == 1 || 2 ) { //als op knop gedrukt is in het menu naar boven gaan
up = false;
menuitem--;
if (menuitem==0)
{
menuitem=5;
}
}else if (up && page == 3 ) {
up = false;
contrast--;

}

if (down && page == 1 || 2){ // als de down knop gedrukt is in het menu naar beneden gaan
down = false;
menuitem++;
if (menuitem==5)
{
menuitem=1;
}
}else if (down && page == 3 ) {
down = false;
contrast++;

}

if (middle) { //als middelste knop gedrukt is terug naar home page of naar page die geselecteerd is
middle = false;
{

if (page == 1 && menuitem==2)
{
if (digitalRead(7) == true)
{
//digitalWrite(7, LOW);
turnBacklightOff();
}
else
{
// digitalWrite(7, HIGH);
turnBacklightOn();
}
}

if(page == 1 && menuitem ==3)
{
resetDefaults();
}
if(page == 1 && menuitem == 1){
page = 3;
}
if(menuitem == 4){
page = 2;
}
if(page == 2 && menuitem == 4){
page = 4;
}
}



void checkIfDownButtonIsPressed()//kijken of knop down gedrukt is en down op true zetten
{
if (downButtonState != lastDownButtonState)
{
if (downButtonState == 0)
{
down=true;
}
delay(50);
}
lastDownButtonState = downButtonState;
}

void checkIfUpButtonIsPressed() //kijken of knop up gedrukt is en up op true zetten
{
if (upButtonState != lastUpButtonState)
{
if (upButtonState == 0)
{
up=true;
}
delay(50);
}
lastUpButtonState = upButtonState;
}

void checkIfSelectButtonIsPressed() //middelste knop als middle= true zetten als de knup ingedrukt is
{
if (selectButtonState != lastSelectButtonState)
{
if (selectButtonState == 0) {
middle=true;
}
delay(50);
}
lastSelectButtonState = selectButtonState;
}


void drawMenu() // lcd scherm het menu opzetten
{

if (page==1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HOOFD MENU");

if (menuitem==1)
{
lcd.setCursor(15,1);
lcd.print("--");

}
lcd.setCursor(0, 1);
lcd.print(">LEUK GETAL");

if (menuitem==2)
{
lcd.setCursor(15,2);
lcd.print("--");
}

lcd.setCursor(0,2);
lcd.print(">Licht: ");

if (digitalRead(7) == true)
{
lcd.print("aan");
}
else
{
lcd.print("uit");
}

if (menuitem==3)
{
lcd.setCursor(15,3);
lcd.print("--");
}

lcd.setCursor(0, 3);
lcd.print(">Reset");
}

else if (page==3)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LEUK GETAL");
lcd.setCursor(0, 2);
lcd.print("Waarde:");
lcd.setCursor(15, 2);
lcd.print(contrast);
}

else if (page== 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HOOFD MENU");

if (menuitem==2)
{
lcd.setCursor(15,1);
lcd.print("--");

}
lcd.setCursor(0, 1);
lcd.print(">Licht:");

if (menuitem==3)
{
lcd.setCursor(15,3);
lcd.print("--");
}

lcd.setCursor(0, 3);
lcd.print(">Reset");


if(menuitem==4)
{
lcd.setCursor(15,4);
lcd.print("--");
}
lcd.setCursor(0,4);
lcd.print("<hoi");


}else if(page == 4)
{
lcd.clear();
lcd.setCursor(0,2);
lcd.print("YEAH");
}


void resetDefaults()//terug naar de begin instellingen
{
contrast = 127;
setContrast();
digitalWrite(7, HIGH);
turnBacklightOn();
}

void turnBacklightOn()//led aanzetten
{
digitalWrite(7,HIGH);
}

void turnBacklightOff()//led uitzetten
{
digitalWrite(7,LOW);
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: error functie definitie

Berichtdoor nicoverduin » 14 Jan 2017, 20:03

Eerst ff de code opschonen met CTRL-T
cpp code
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 20, 4);

int contrast = 127;

int menuitem = 1;
int page = 1;

volatile boolean up = false;
volatile boolean down = false;
volatile boolean middle = false;

int downButtonState = 0;
int upButtonState = 0;
int selectButtonState = 0;
int lastDownButtonState = 0;
int lastSelectButtonState = 0;
int lastUpButtonState = 0;

void drawMenu();

void checkIfDownButtonIsPressed();
void checkIfUpButtonIsPressed();
void checkIfSelectButtonIsPressed();

void turnBacklightOff();
void turnBacklightOn();

void resetDefaults();

void setup() {

pinMode(13, INPUT_PULLUP); //down knop
pinMode(12, INPUT_PULLUP); //select knop
pinMode(11, INPUT_PULLUP); //up knop
pinMode(7, OUTPUT); //ledje

digitalWrite(7, HIGH); //Turn Backlight ON

Serial.begin(9600);

lcd.begin();
lcd.clear(); //lcd leegmaken als er iets opstond
}

void loop() {

drawMenu(); //lcd function
checkIfDownButtonIsPressed(); //kijken voor knoppen of ze gedrukt zijn
checkIfUpButtonIsPressed();
checkIfSelectButtonIsPressed();

downButtonState = digitalRead(13);
selectButtonState = digitalRead(12);
upButtonState = digitalRead(11);

if (up && page == 1 || 2) { //als op knop gedrukt is in het menu naar boven gaan
up = false;
menuitem--;
if (menuitem == 0) {
menuitem = 5;
}
} else if (up && page == 3) {
up = false;
contrast--;

}

if (down && page == 1 || 2) { // als de down knop gedrukt is in het menu naar beneden gaan
down = false;
menuitem++;
if (menuitem == 5) {
menuitem = 1;
}
} else if (down && page == 3) {
down = false;
contrast++;

}

if (middle) { //als middelste knop gedrukt is terug naar home page of naar page die geselecteerd is
middle = false;
{

if (page == 1 && menuitem == 2) {
if (digitalRead(7) == true) {
//digitalWrite(7, LOW);
turnBacklightOff();
} else {
// digitalWrite(7, HIGH);
turnBacklightOn();
}
}

if (page == 1 && menuitem == 3) {
resetDefaults();
}
if (page == 1 && menuitem == 1) {
page = 3;
}
if (menuitem == 4) {
page = 2;
}
if (page == 2 && menuitem == 4) {
page = 4;
}
}

void checkIfDownButtonIsPressed() //kijken of knop down gedrukt is en down op true zetten
{
if (downButtonState != lastDownButtonState)
{
if (downButtonState == 0)
{
down=true;
}
delay(50);
}
lastDownButtonState = downButtonState;
}

void checkIfUpButtonIsPressed() //kijken of knop up gedrukt is en up op true zetten
{
if (upButtonState != lastUpButtonState)
{
if (upButtonState == 0)
{
up=true;
}
delay(50);
}
lastUpButtonState = upButtonState;
}

void checkIfSelectButtonIsPressed() //middelste knop als middle= true zetten als de knup ingedrukt is
{
if (selectButtonState != lastSelectButtonState)
{
if (selectButtonState == 0) {
middle=true;
}
delay(50);
}
lastSelectButtonState = selectButtonState;
}

void drawMenu() // lcd scherm het menu opzetten
{

if (page==1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HOOFD MENU");

if (menuitem==1)
{
lcd.setCursor(15,1);
lcd.print("--");

}
lcd.setCursor(0, 1);
lcd.print(">LEUK GETAL");

if (menuitem==2)
{
lcd.setCursor(15,2);
lcd.print("--");
}

lcd.setCursor(0,2);
lcd.print(">Licht: ");

if (digitalRead(7) == true)
{
lcd.print("aan");
}
else
{
lcd.print("uit");
}

if (menuitem==3)
{
lcd.setCursor(15,3);
lcd.print("--");
}

lcd.setCursor(0, 3);
lcd.print(">Reset");
}

else if (page==3)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LEUK GETAL");
lcd.setCursor(0, 2);
lcd.print("Waarde:");
lcd.setCursor(15, 2);
lcd.print(contrast);
}

else if (page== 2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HOOFD MENU");

if (menuitem==2)
{
lcd.setCursor(15,1);
lcd.print("--");

}
lcd.setCursor(0, 1);
lcd.print(">Licht:");

if (menuitem==3)
{
lcd.setCursor(15,3);
lcd.print("--");
}

lcd.setCursor(0, 3);
lcd.print(">Reset");

if(menuitem==4)
{
lcd.setCursor(15,4);
lcd.print("--");
}
lcd.setCursor(0,4);
lcd.print("<hoi");

} else if(page == 4)
{
lcd.clear();
lcd.setCursor(0,2);
lcd.print("YEAH");
}

void resetDefaults() //terug naar de begin instellingen
{
contrast = 127;
setContrast();
digitalWrite(7, HIGH);
turnBacklightOn();
}

void turnBacklightOn() //led aanzetten
{
digitalWrite(7,HIGH);
}

void turnBacklightOff() //led uitzetten
{
digitalWrite(7,LOW);
}
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: error functie definitie

Berichtdoor nicoverduin » 14 Jan 2017, 20:04

Je mist sluit accollade()s in loop() en meerdere functies. als je CTRL-T doet dan formatteert de source beter met inspringen en kun je zo zien waar de accolades ontbreken.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: error functie definitie

Berichtdoor shooter » 14 Jan 2017, 21:07

de fout staat in regel 124 dus iets erboven (120) moet volgens nico dus een } staan.
je zult zien dat alle functies dan netjes aan de linkerkant beginnen.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: error functie definitie

Berichtdoor nicoverduin » 14 Jan 2017, 23:02

Er zitten er op meerdere plekken te weinig
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4
Geregistreerd: 14 Jan 2017, 19:35

Re: error functie definitie

Berichtdoor sjoerd rosier » 15 Jan 2017, 08:47

Dank voor de hulp ik zal het doen.

Berichten: 4
Geregistreerd: 14 Jan 2017, 19:35

Re: error functie definitie

Berichtdoor sjoerd rosier » 15 Jan 2017, 09:50

Code: Alles selecteren
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 20, 4);

int contrast = 127;

int menuitem = 1;
int page = 1;

volatile boolean up = false;
volatile boolean down = false;
volatile boolean middle = false;

int downButtonState = 0;
int upButtonState = 0;
int selectButtonState = 0;
int lastDownButtonState = 0;
int lastSelectButtonState = 0;
int lastUpButtonState = 0;

void drawMenu();

void checkIfDownButtonIsPressed();
void checkIfUpButtonIsPressed();
void checkIfSelectButtonIsPressed();

void turnBacklightOff();
void turnBacklightOn();

void resetDefaults();



void setup() {

  pinMode(13, INPUT_PULLUP); //down knop
  pinMode(12, INPUT_PULLUP); //select knop
  pinMode(11, INPUT_PULLUP); //up knop
  pinMode(7, OUTPUT); //ledje

  digitalWrite(7, HIGH); //Turn Backlight ON

  Serial.begin(9600);

  lcd.begin();
  lcd.clear();   //lcd leegmaken als er iets opstond
}

void loop() {

  drawMenu(); //lcd function
  checkIfDownButtonIsPressed();  //kijken voor knoppen of ze gedrukt zijn
  checkIfUpButtonIsPressed();
  checkIfSelectButtonIsPressed();

  downButtonState = digitalRead(13);
  selectButtonState = digitalRead(12);
  upButtonState =   digitalRead(11);



  if (up && page == 1 || 2 ) { //als op knop gedrukt is in het menu naar boven gaan
    up = false;
    menuitem--;
    if (menuitem == 0)
    {
      menuitem = 5;
    }
  } else if (up && page == 3 ) {
    up = false;
    contrast--;

  }

  if (down && page == 1 || 2) { // als de down knop gedrukt is in het menu naar beneden gaan
    down = false;
    menuitem++;
    if (menuitem == 5)
    {
      menuitem = 1;
    }
  } else if (down && page == 3 ) {
    down = false;
    contrast++;

  }

  if (middle) { //als middelste knop gedrukt is terug naar home page of naar page die geselecteerd is
    middle = false;
    {

      if (page == 1 && menuitem == 2)
      {
        if (digitalRead(7) == true)
        {
          //digitalWrite(7, LOW);
          turnBacklightOff();
        }
        else
        {
          // digitalWrite(7, HIGH);
          turnBacklightOn();
        }
      }

      if (page == 1 && menuitem == 3)
      {
        resetDefaults();
      }
      if (page == 1 && menuitem == 1) {
        page = 3;
      }
      if (menuitem == 4) {
        page = 2;
      }
      if (page == 2 && menuitem == 4) {
        page = 4;
      }
    }
  }
}



    void checkIfDownButtonIsPressed()//kijken of knop down gedrukt is en down op true zetten
    {
      if (downButtonState != lastDownButtonState)
      {
        if (downButtonState == 0)
        {
          down = true;
        }
        delay(50);
      }
      lastDownButtonState = downButtonState;
    }

    void checkIfUpButtonIsPressed() //kijken of knop up gedrukt is en up op true zetten
    {
      if (upButtonState != lastUpButtonState)
      {
        if (upButtonState == 0)
        {
          up = true;
        }
        delay(50);
      }
      lastUpButtonState = upButtonState;
    }

    void checkIfSelectButtonIsPressed() //middelste knop als middle= true zetten als de knup ingedrukt is
    {
      if (selectButtonState != lastSelectButtonState)
      {
        if (selectButtonState == 0) {
          middle = true;
        }
        delay(50);
      }
      lastSelectButtonState = selectButtonState;
    }


    void drawMenu() // lcd scherm het menu opzetten
    {

      if (page == 1)
      {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("HOOFD MENU");

        if (menuitem == 1)
        {
          lcd.setCursor(15, 1);
          lcd.print("--");

        }
        lcd.setCursor(0, 1);
        lcd.print(">LEUK GETAL");

        if (menuitem == 2)
        {
          lcd.setCursor(15, 2);
          lcd.print("--");
        }

        lcd.setCursor(0, 2);
        lcd.print(">Licht: ");

        if (digitalRead(7) == true)
        {
          lcd.print("aan");
        }
        else
        {
          lcd.print("uit");
        }

        if (menuitem == 3)
        {
          lcd.setCursor(15, 3);
          lcd.print("--");
        }

        lcd.setCursor(0, 3);
        lcd.print(">Reset");
      }

      else if (page == 3)
      {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("LEUK GETAL");
        lcd.setCursor(0, 2);
        lcd.print("Waarde:");
        lcd.setCursor(15, 2);
        lcd.print(contrast);
      }

      else if (page == 2)
      {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("HOOFD MENU");

        if (menuitem == 2)
        {
          lcd.setCursor(15, 1);
          lcd.print("--");

        }
        lcd.setCursor(0, 1);
        lcd.print(">Licht:");

        if (menuitem == 3)
        {
          lcd.setCursor(15, 3);
          lcd.print("--");
        }

        lcd.setCursor(0, 3);
        lcd.print(">Reset");


        if (menuitem == 4)
        {
          lcd.setCursor(15, 4);
          lcd.print("--");
        }
        lcd.setCursor(0, 4);
        lcd.print("<hoi");


      } else if (page == 4)
      {
        lcd.clear();
        lcd.setCursor(0, 2);
        lcd.print("YEAH");
      }
    }
   
   
      void resetDefaults()//terug naar de begin instellingen
      {
        contrast = 127;
        digitalWrite(7, HIGH);
        turnBacklightOn();
      }

      void turnBacklightOn()//led aanzetten
      {
        digitalWrite(7, HIGH);
      }

      void turnBacklightOff()//led uitzetten
      {
        digitalWrite(7, LOW);
      }





met dit werkt het bedankt voor de hulp

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 13 gasten