'Joystick_' does not name a type and expected unqualified-id before '.' token

Hello Guys,

I’m pretty new to Arduino…

I have built a ButtonBox using an Arduino Pro Micro.
I use 4 two way toggle switches with a spring return to off and 8 normal push buttons.

The sketch is from here: GitHub - AM-STUDIO/32-FUNCTION-BUTTON-BOX

This is the video: MAKE THIS BUTTON BOX | 32 FUNCTION w ENCODERS - YouTube

Problem:

I have downloaded a sketch and installed all the librarys.
The Joystick library is just downloaded from the IDE-Software because I didn’t get this zip into my IDE:

I know I have to define the buttons…

Now I get two different errors:

‘Joystick_’ does not name a type and expected unqualified-id before ‘.’ token

Could someone help me to solve those Problems, please?

Error:

Arduino: 1.8.9 (Windows Store 1.8.21.0) (Windows 10), Board: "Arduino/Genuino Micro"

ARDUINO_BUTTON_BOXV2:92:1: error: 'Joystick_' does not name a type

 Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, 

 ^

C:\Users\luetz\AppData\Local\Temp\Temp5_32-FUNCTION-BUTTON-BOX-master.zip\32-FUNCTION-BUTTON-BOX-master\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void setup()':

ARDUINO_BUTTON_BOXV2:98:11: error: expected unqualified-id before '.' token

   Joystick.begin();

           ^

C:\Users\luetz\AppData\Local\Temp\Temp5_32-FUNCTION-BUTTON-BOX-master.zip\32-FUNCTION-BUTTON-BOX-master\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void CheckAllButtons()':

ARDUINO_BUTTON_BOXV2:119:39: error: expected unqualified-id before '.' token

                               Joystick.setButton(buttbx.key[i].kchar, 1);

                                       ^

ARDUINO_BUTTON_BOXV2:123:39: error: expected unqualified-id before '.' token

                               Joystick.setButton(buttbx.key[i].kchar, 0);

                                       ^

C:\Users\luetz\AppData\Local\Temp\Temp5_32-FUNCTION-BUTTON-BOX-master.zip\32-FUNCTION-BUTTON-BOX-master\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void CheckAllEncoders()':

ARDUINO_BUTTON_BOXV2:154:15: error: expected unqualified-id before '.' token

       Joystick.setButton(rotaries[i].ccwchar, 1); delay(50); Joystick.setButton(rotaries[i].ccwchar, 0);

               ^

ARDUINO_BUTTON_BOXV2:154:70: error: expected unqualified-id before '.' token

       Joystick.setButton(rotaries[i].ccwchar, 1); delay(50); Joystick.setButton(rotaries[i].ccwchar, 0);

                                                                      ^

ARDUINO_BUTTON_BOXV2:157:15: error: expected unqualified-id before '.' token

Mehrere Bibliotheken wurden für "Joystick.h" gefunden
       Joystick.setButton(rotaries[i].cwchar, 1); delay(50); Joystick.setButton(rotaries[i].cwchar, 0);

 Benutzt: C:\Users\luetz\OneDrive\Documents\Arduino\libraries\Joystick
               ^

 Nicht benutzt: C:\Users\luetz\OneDrive\Documents\Arduino\libraries\Joystick.h
ARDUINO_BUTTON_BOXV2:157:69: error: expected unqualified-id before '.' token

 Nicht benutzt: C:\Users\luetz\OneDrive\Documents\Arduino\libraries\AxisJoystick-2.1.0
 Nicht benutzt: C:\Users\luetz\OneDrive\Documents\Arduino\libraries\AxisJoystick
       Joystick.setButton(rotaries[i].cwchar, 1); delay(50); Joystick.setButton(rotaries[i].cwchar, 0);

                                                                     ^

exit status 1
'Joystick_' does not name a type

Sketch:

//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[i].stateChanged )   
            {
            switch (buttbx.key[i].kstate) {  
                    case PRESSED:
                    case HOLD:
                              Joystick.setButton(buttbx.key[i].kchar, 1);
                              break;
                    case RELEASED:
                    case IDLE:
                              Joystick.setButton(buttbx.key[i].kchar, 0);
                              break;
            }
           }   
         }
     }
}


void rotary_init() {
  for (int i=0;i<NUMROTARIES;i++) {
    pinMode(rotaries[i].pin1, INPUT);
    pinMode(rotaries[i].pin2, INPUT);
    #ifdef ENABLE_PULLUPS
      digitalWrite(rotaries[i].pin1, HIGH);
      digitalWrite(rotaries[i].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[i].ccwchar, 1); delay(50); Joystick.setButton(rotaries[i].ccwchar, 0);
    };
    if (result == DIR_CW) {
      Joystick.setButton(rotaries[i].cwchar, 1); delay(50); Joystick.setButton(rotaries[i].cwchar, 0);
    };
  }
}

I have a picture attached.

It shows how I wired everything up.

The Joystick library is just downloaded from the IDE-Software because I didn't get this zip into my IDE:

What does that mean?

The error message most probably means that you haven't installed that library, at least not correctly.

As usual in most of such cases, your message at the end tells you that you have two (or more) joystick libraries installed. The compiler "decided" to use a different library, not the one you intended to use.

1 Like

Hi guys,

Thanks for your fast answers.
I will try this. : )

Cheers
Luis

I tried it.
Looks like it solved the joystick problem.
But now I still get the expected unqualified-id before '.' token.

What can I do about that?

Cheers
Luis

luisuet1:
I tried it.
Looks like it solved the joystick problem.
But now I still get the expected unqualified-id before '.' token.

What can I do about that?

When you are asking questions about error messages, you have to provide the exact line of code that triggered the error. Where is that information?

I think I got it. :slight_smile:

It looks like it just was the wrong library...

It has to be thisone for the sketch:GitHub - MHeironimus/ArduinoJoystickLibrary: An Arduino library that adds one or more joysticks to the list of HID devices an Arduino Leonardo or Arduino Micro can support.

Thanks for helping me out!

im getting this error not able to load the arduino micro any idea why im new to this i seen many video but most of them are shown as if everyone is an expert in it.

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._