error: expected unqualified-id before 'if'

Hi,

does anybody know how to fix this?

Error codes:

Final_test_code:125: error: expected unqualified-id before 'if'
 if (sstopPOS == LOW && power == 0){ // If sstop is pressed
 ^
Final_test_code:129: error: expected unqualified-id before 'if'
 if (sstopmode == 1 && resetPOS == LOW){ // If sstop is engaged and reset button is pressed
 ^
Final_test_code:133: error: expected unqualified-id before 'if'
 if (estopPOS == LOW){ // If Estop is pressed
 ^
Final_test_code:139: error: expected unqualified-id before 'if'
 if (estopPOS == HIGH && resetPOS == LOW){ // If estop is up and reset is pushed
 ^
Final_test_code:145: error: expected unqualified-id before 'if'
 if (endofdayPOS == LOW){ // If endofdayestop is pressed down
 ^
Final_test_code:147: error: expected unqualified-id before 'if'
 if (endofdayPOS == HIGH){ // if endofdayestop is off
 ^
Final_test_code:155: error: expected unqualified-id before 'if'
 if (switch1POS == LOW && power == 0 && sstopmode == 0){ // If switch 1 is pressed
 ^
Final_test_code:161: error: expected unqualified-id before 'if'
 if (switch2POS == LOW && power == 0 && sstopmode == 0){ // If switch 2 is pressed
 ^
Final_test_code:167: error: expected unqualified-id before 'if'
 if (switch2POS == LOW && power == 0 && sstopmode == 0){ // If switch 3 is pressed
 ^
Final_test_code:173: error: expected unqualified-id before 'if'
 if (switch2POS == LOW && power == 0 && sstopmode == 0){ // If switch 4 is pressed
 ^
exit status 1
expected unqualified-id before 'if'

My code:

//Set Pin Values for buttons
const int endofday = 1;
const int reset = 2;
const int switch1 = 3;
const int switch2 = 4;
const int switch3 = 5;
const int switch4 = 6;
const int sstop = 7;
const int preshow = 8;
const int estop = 9;
const int gates = 10;
const int restraintsOPEN = 11;
const int restraintsCLOSED = 12;
const int tilt = 13;
const int stationselect = 14;
const int launch = 15;
const int dispatch = 16;

// Variable states
int sstopmode = 0; // station stop is off
int power = 0; // Power disconnect is off

void setup(){
  // Pin modes
  pinMode(endofday, INPUT_PULLUP);
  pinMode(reset, INPUT_PULLUP);
  pinMode(switch1, INPUT_PULLUP);
  pinMode(switch2, INPUT_PULLUP);
  pinMode(switch3, INPUT_PULLUP);
  pinMode(switch4, INPUT_PULLUP);
  pinMode(sstop, INPUT_PULLUP);
  pinMode(preshow, INPUT_PULLUP);
  pinMode(estop, INPUT_PULLUP);
  pinMode(gates, INPUT_PULLUP);
  pinMode(restraintsOPEN, INPUT_PULLUP);
  pinMode(restraintsCLOSED, INPUT_PULLUP);
  pinMode(tilt, INPUT_PULLUP);
  pinMode(stationselect, INPUT_PULLUP);
  pinMode(launch, INPUT_PULLUP);
  pinMode(dispatch, INPUT_PULLUP);}


void loop() {
// Set variables for button states

int endofdayPOS = digitalRead(endofday);
int resetPOS = digitalRead(reset);
int switch1POS = digitalRead(switch1);
int switch2POS = digitalRead(switch2);
int switch3POS = digitalRead(switch3);
int switch4POS = digitalRead(switch4);
int sstopPOS = digitalRead(sstop);
int preshowPOS = digitalRead(preshow);
int estopPOS = digitalRead(estop);
int gatesPOS = digitalRead(gates);
int tiltPOS = digitalRead(tilt);
int selectorPOS = digitalRead(stationselect);
int launchPOS = digitalRead(launch);
int dispatchPOS = digitalRead(dispatch);

// |------------------------------------------------------------------------------|
// |===============================Station Controls===============================|
// |------------------------------------------------------------------------------|

//Launch Button
if (launchPOS == LOW && power == 0 && sstopmode == 0){ // If launch is pressed
  Keyboard.press('l'); // Press L
  delay (300);
  Keyboard.releaseAll();}

// Dispatch Button
if (dispatchPOS == LOW  && power == 0 && sstopmode == 0){ // If dispatch is pressed
  Keyboard.press(' '); // Press spacebar
  delay (300);
  Keyboard.releaseAll();}

// Tilt Button
if (tiltPOS == LOW  && power == 0 && sstopmode == 0){ // If tilt is pressed
  Keyboard.press(KEY_RETURN); // Press enter for 4 seconds
  delay (4000); 
  Keyboard.releaseAll();}

//Preshow doors/start
if (preshowPOS == LOW  && power == 0 && sstopmode == 0){ // If preshow is pressed
  Keyboard.press(KEY_RETURN); // press return
  delay (100);
  Keyboard.releaseAll();}


//Gates
if (gates == LOW){
  Keyboard.press(KEY_LEFT_ARROW);
  delay (100);
  Keyboard.releaseAll();}
else{
  Keyboard.press(KEY_RIGHT_ARROW);
  delay (100);
  Keyboard.releaseAll();}
}

//Restraints


//Selector


// |------------------------------------------------------------------------------|
// |===============================Stop Controls==================================|
// |------------------------------------------------------------------------------|

// Station Stop Button
if (sstopPOS == LOW && power == 0){ // If sstop is pressed
  sstopmode = 1;} // Set sstop mode to 1 (On)
  
// Station Stop Reset
if (sstopmode == 1 && resetPOS == LOW){ // If sstop is engaged and reset button is pressed
  sstopmode = 0;} // Turn sstop to 0 (off)

// Estop button
if (estopPOS == LOW){ // If Estop is pressed
  Keyboard.press('s'); // Press S
  delay(100);
  Keyboard.releaseAll();}

//Reset Estop
if (estopPOS == HIGH && resetPOS == LOW){ // If estop is up and reset is pushed
  Keyboard.press('r'); // press R
  delay(100);
  Keyboard.releaseAll();}

// End Of Day
if (endofdayPOS == LOW){ // If endofdayestop is pressed down
  power = 1;} // Panel disable is on
if (endofdayPOS == HIGH){ // if endofdayestop is off
  power = 0;} // Panel disable is off

// |--------------------------------------------------------------------------------------|
// |===============================Maintainance Controls==================================|
// |--------------------------------------------------------------------------------------|

// Switch 1
if (switch1POS == LOW && power == 0 && sstopmode == 0){ // If switch 1 is pressed
  Keyboard.press('1'); // Press 1
  delay (100);
  Keyboard.releaseAll();}

// Switch 2
if (switch2POS == LOW && power == 0 && sstopmode == 0){ // If switch 2 is pressed
  Keyboard.press('2'); // Press 2
  delay (100);
  Keyboard.releaseAll();}

// Switch 3
if (switch2POS == LOW && power == 0 && sstopmode == 0){ // If switch 3 is pressed
  Keyboard.press('3'); // Press 3
  delay (100);
  Keyboard.releaseAll();}

//Switch 4
if (switch2POS == LOW && power == 0 && sstopmode == 0){ // If switch 4 is pressed
  Keyboard.press('4'); // Press 4
  delay (100);
  Keyboard.releaseAll();}

Thanks!

(deleted)

Please ignore. I have fixed the error.

spycatcher2k: You have an extra } at line 109 & need an extra one at the end of the sketch to close loop() :)

Thanks, I realised but couldn't delete the post.

Thanks anyway though!

(deleted)

spycatcher2k: DON'T delete posts, even if it's an obvious mistake, others can learn, even if it's how to diagnose issues. :)

Yeah that's true!

By any chance do you know how to make a keyboard start/stop button?

All I want is when the button is HIGH keyboard.begin. When it is LOW stop the keyboard working. Thanks!

mxttymitch: Yeah that's true!

By any chance do you know how to make a keyboard start/stop button?

All I want is when the button is HIGH keyboard.begin. When it is LOW stop the keyboard working. Thanks!

Put the code to read the keyboard in an if block. If the input is LOW then just don't read the keyboard. Or read it but throw away the data.

i need some help been at it for 2 day and cant seem to figure it out im new to this coding. i code other things before but this is totally different then what im used to…
this is the clone i use for the sim box i made with arduino pro micro with 24 push and 4 encoder
the sketch below and i post the error under it thanks in advance for the help

//BUTTON BOX
//USE w ProMicro

#include <Keypad.h>
#include <Joystick.h>

#define ENABLE_PULLUPS
#define NUMROTARIES 4
#define NUMBUTTONS 24
#define NUMROWS 5
#define NUMCOLS 5

byte buttons[NUMROWS][NUMCOLS] = {
{0,1,2,3,4},
{5,6,7,8,9},
{10,11,12,13,14},
{15,16,17,18,19},
{20,21,22,23},
};

struct rotariesdef {
byte pin1;
byte pin2;
int ccwchar;
int cwchar;
volatile unsigned char state;
};

rotariesdef rotaries[NUMROTARIES] {
{0,1,24,25,0},
{2,3,26,27,0},
{4,5,28,29,0},
{6,7,30,31,0},
};

#define DIR_CCW 0x10
#define DIR_CW 0x20
#define R_START 0x0

#ifdef HALF_STEP
#define R_CCW_BEGIN 0x1
#define R_CW_BEGIN 0x2
#define R_START_M 0x3
#define R_CW_BEGIN_M 0x4
#define R_CCW_BEGIN_M 0x5
const unsigned char ttable[6][4] = {
// R_START (00)
{R_START_M, R_CW_BEGIN, R_CCW_BEGIN, R_START},
// R_CCW_BEGIN
{R_START_M | DIR_CCW, R_START, R_CCW_BEGIN, R_START},
// R_CW_BEGIN
{R_START_M | DIR_CW, R_CW_BEGIN, R_START, R_START},
// R_START_M (11)
{R_START_M, R_CCW_BEGIN_M, R_CW_BEGIN_M, R_START},
// R_CW_BEGIN_M
{R_START_M, R_START_M, R_CW_BEGIN_M, R_START | DIR_CW},
// R_CCW_BEGIN_M
{R_START_M, R_CCW_BEGIN_M, R_START_M, R_START | DIR_CCW},
};
#else
#define R_CW_FINAL 0x1
#define R_CW_BEGIN 0x2
#define R_CW_NEXT 0x3
#define R_CCW_BEGIN 0x4
#define R_CCW_FINAL 0x5
#define R_CCW_NEXT 0x6

const unsigned char ttable[7][4] = {
// R_START
{R_START, R_CW_BEGIN, R_CCW_BEGIN, R_START},
// R_CW_FINAL
{R_CW_NEXT, R_START, R_CW_FINAL, R_START | DIR_CW},
// R_CW_BEGIN
{R_CW_NEXT, R_CW_BEGIN, R_START, R_START},
// R_CW_NEXT
{R_CW_NEXT, R_CW_BEGIN, R_CW_FINAL, R_START},
// R_CCW_BEGIN
{R_CCW_NEXT, R_START, R_CCW_BEGIN, R_START},
// R_CCW_FINAL
{R_CCW_NEXT, R_CCW_FINAL, R_START, R_START | DIR_CCW},
// R_CCW_NEXT
{R_CCW_NEXT, R_CCW_FINAL, R_CCW_BEGIN, R_START},
};
#endif

byte rowPins[NUMROWS] = {21,20,19,18,15};
byte colPins[NUMCOLS] = {14,16,10,9,8};

Keypad buttbx = Keypad( makeKeymap(buttons), rowPins, colPins, NUMROWS, NUMCOLS);

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
JOYSTICK_TYPE_JOYSTICK, 32, 0,
false, false, false, false, false, false,
false, false, false, false, false);

void setup() {
Joystick.begin();
rotary_init();}

void loop() {

CheckAllEncoders();

CheckAllButtons();

}

void CheckAllButtons(void) {
if (buttbx.getKeys())
{
for (int i=0; i<LIST_MAX; i++)
{
if ( buttbx.key*.stateChanged ) *

  • {*
    _ switch (buttbx.key*.kstate) {_
    _
    case PRESSED:_
    _
    case HOLD:_
    _ Joystick.setButton(buttbx.key.kchar, 1);
    break;
    case RELEASED:
    case IDLE:
    Joystick.setButton(buttbx.key.kchar, 0);
    break;
    }
    }
    }
    }
    }
    void rotary_init() {
    for (int i=0;i<NUMROTARIES;i++) {
    pinMode(rotaries.pin1, INPUT);
    pinMode(rotaries.pin2, INPUT);_

    #ifdef ENABLE_PULLUPS*

    _ digitalWrite(rotaries*.pin1, HIGH);
    digitalWrite(rotaries.pin2, HIGH);
    #endif*

    * }
    }_

    unsigned char rotary_process(int _i) {
    unsigned char pinstate = (digitalRead(rotaries[i].pin2) << 1) | digitalRead(rotaries[i].pin1);
    rotaries[i].state = ttable[rotaries[i].state & 0xf][pinstate];
    return (rotaries[i].state & 0x30);*
    }

    void CheckAllEncoders(void) {

    * for (int i=0;i<NUMROTARIES;i++) {_
    unsigned char result = rotary_process(i);
    if (result == DIR_CCW) {
    Joystick.setButton(rotaries_.ccwchar, 1); delay(50); Joystick.setButton(rotaries.ccwchar, 0);
    };_

    if (result == DIR_CW) {
    Joystick.setButton(rotaries_.cwchar, 1); delay(50); Joystick.setButton(rotaries.cwchar, 0);
    };
    }
    }_



    this is the error im getting
    Arduino: 1.8.12 (Windows 10), Board: “Arduino Micro”
    ARDUINO_BUTTON_BOXV2:93:1: error: ‘Joystick_’ does not name a type; did you mean ‘Joystick’?
    Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,
    _^~~~~~~~~
    Joystick
    D:\User Data\Documents\Arduino\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function ‘void setup()’:
    ARDUINO_BUTTON_BOXV2:99:11: error: expected unqualified-id before ‘.’ token
    Joystick.begin();
    ^
    D:\User Data\Documents\Arduino\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function ‘void CheckAllButtons()’:
    ARDUINO_BUTTON_BOXV2:120:39: error: expected unqualified-id before ‘.’ token
    Joystick.setButton(buttbx.key.kchar, 1);
    ^
    ARDUINO_BUTTON_BOXV2:124:39: error: expected unqualified-id before ‘.’ token
    Joystick.setButton(buttbx.key.kchar, 0);
    ^
    D:\User Data\Documents\Arduino\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function ‘void CheckAllEncoders()’:
    ARDUINO_BUTTON_BOXV2:155:15: error: expected unqualified-id before ‘.’ token
    Joystick.setButton(rotaries.ccwchar, 1); delay(50); Joystick.setButton(rotaries.ccwchar, 0);
    ^
    ARDUINO_BUTTON_BOXV2:155:70: error: expected unqualified-id before ‘.’ token
    Joystick.setButton(rotaries.ccwchar, 1); delay(50); Joystick.setButton(rotaries.ccwchar, 0);
    ^
    ARDUINO_BUTTON_BOXV2:158:15: error: expected unqualified-id before ‘.’ token
    Joystick.setButton(rotaries.cwchar, 1); delay(50); Joystick.setButton(rotaries.cwchar, 0);
    ^
    ARDUINO_BUTTON_BOXV2:158:69: error: expected unqualified-id before ‘.’ token
    Joystick.setButton(rotaries.cwchar, 1); delay(50); Joystick.setButton(rotaries.cwchar, 0);
    ^
    Multiple libraries were found for “Joystick.h”
    Used: D:\User Data\Documents\Arduino\libraries\Joystick
    Not used: D:\User Data\Documents\Arduino\libraries\AxisJoystick
    exit status 1_

    ‘Joystick_’ does not name a type; did you mean ‘Joystick’?
    This report would have more information with
    _“Show verbose output during compilation”*
    option enabled in File → Preferences._