Buenas problemas con el arduino micro

Hola buenas estoy intentando hacer una botonera para sim racing con este codigo:

//BUTTON BOX 
//USE w ProMicro
//Tested in WIN10 + Assetto Corsa
//AMSTUDIO
//20.8.17

#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);
    };
  }
}

Conecto la tarjeta voy a herramientas escojo arduino micro, y cuando intento elegir el puerto usb me pone COM 9(arduino leonardo).

le doy a verificar y me sale el siguiente mensaje.

Arduino:1.8.12 (Windows Store 1.8.33.0) (Windows 10), Tarjeta:"Arduino Micro"

ARDUINO_BUTTON_BOXV2:95:1: error: 'Joystick_' does not name a type; did you mean 'Joystick'?

 Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,

 ^~~~~~~~~

 Joystick

C:\Users\Usuario\Documents\Arduino\libraries\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void setup()':

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

   Joystick.begin();

           ^

C:\Users\Usuario\Documents\Arduino\libraries\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void CheckAllButtons()':

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

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

                                       ^

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

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

                                       ^

C:\Users\Usuario\Documents\Arduino\libraries\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void CheckAllEncoders()':

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

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

               ^

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

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

                                                                      ^

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

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

               ^

ARDUINO_BUTTON_BOXV2:160:69: error: expected unqualified-id before '.' token

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

                                                                     ^

exit status 1
'Joystick_' does not name a type; did you mean 'Joystick'?

Este informe podría contener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.

.

Alguna idea de que es lo que hago mal.
Deciros que no tengo ni idea de arduino y no se por donde tirar.

Gracias

por lo poco y mal posteado, deduzco que fata la libreria del Keypad.h, pero puede ser otras varias cosas, porque si ese es todo el codigo?? seguro no va a funcionar

Por favor!! Lee las normas del foro y edita tu post.
Errores y código deben postearse usando etiquetas así que EDITA.

Lee las Normas del foro.

Hola hay alguien?¿?

Dudo mucho que una libreria que se llama "Joystick" tenga por nombre de clase "Joystick_". Por lo tanto el problema está en que tienes un objeto que se llama "Joystick" de la clase "Joystick_" que no existe, y por lo tanto de hay te viene todos los errores.

Cambia el nombre del objeto a "joystick", cambiando solo la "J" por "j" donde lo uses:

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

Y por lo tanto, cada vez que hagas una llamada a una función del objeto usa el objeto "joystick".

muchisimas gracias, voy a intentarlo.

Hola he hecho lo que me has dicho:

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

y me da este error

Arduino:1.8.12 (Windows Store 1.8.33.0) (Windows 10), Tarjeta:"Arduino Micro"

ARDUINO_BUTTON_BOXV2:95:19: error: 'JOYSTICK_DEFAULT_REPORT_ID' was not declared in this scope

 Joystick joystick(JOYSTICK_DEFAULT_REPORT_ID,

                   ^~~~~~~~~~~~~~~~~~~~~~~~~~

ARDUINO_BUTTON_BOXV2:96:20: error: 'JOYSTICK_TYPE_JOYSTICK' was not declared in this scope

                    JOYSTICK_TYPE_JOYSTICK, 32, 0,

                    ^~~~~~~~~~~~~~~~~~~~~~

ARDUINO_BUTTON_BOXV2:95:10: error: cannot declare variable 'joystick' to be of abstract type 'Joystick'

 Joystick joystick(JOYSTICK_DEFAULT_REPORT_ID,

          ^~~~~~~~

In file included from C:\Users\Usuario\Documents\Arduino\libraries\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino:8:0:

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:28:7: note:   because the following virtual functions are pure within 'Joystick':

 class Joystick {

       ^~~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:58:16: note: 	virtual Joystick::Move Joystick::singleRead()

   virtual Move singleRead() = 0;

                ^~~~~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:73:16: note: 	virtual Joystick::Move Joystick::multipleRead()

   virtual Move multipleRead() = 0;

                ^~~~~~~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:81:19: note: 	virtual boolean Joystick::isPress()

   virtual boolean isPress() = 0;

                   ^~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:89:19: note: 	virtual boolean Joystick::isUp()

   virtual boolean isUp() = 0;

                   ^~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:97:19: note: 	virtual boolean Joystick::isDown()

   virtual boolean isDown() = 0;

                   ^~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:105:19: note: 	virtual boolean Joystick::isRight()

   virtual boolean isRight() = 0;

                   ^~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:113:19: note: 	virtual boolean Joystick::isLeft()

   virtual boolean isLeft() = 0;

                   ^~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:120:15: note: 	virtual int Joystick::xAxis()

   virtual int xAxis() = 0;

               ^~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:127:15: note: 	virtual int Joystick::yAxis()

   virtual int yAxis() = 0;

               ^~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:134:15: note: 	virtual int Joystick::readVRx()

   virtual int readVRx() = 0;

               ^~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:141:15: note: 	virtual int Joystick::readVRy()

   virtual int readVRy() = 0;

               ^~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:148:15: note: 	virtual int Joystick::readSW()

   virtual int readSW() = 0;

               ^~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:156:16: note: 	virtual void Joystick::calibrate(int, int)

   virtual void calibrate(int low, int high) = 0;

                ^~~~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\AxisJoystick\src/Joystick.h:169:16: note: 	virtual void Joystick::calibrate(int, int, int)

   virtual void calibrate(int adcMin, int adcMax, int deviation) = 0;

                ^~~~~~~~~

C:\Users\Usuario\Documents\Arduino\libraries\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void setup()':

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

   Joystick.begin();

           ^

C:\Users\Usuario\Documents\Arduino\libraries\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void CheckAllButtons()':

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

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

                                       ^

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

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

                                       ^

C:\Users\Usuario\Documents\Arduino\libraries\ARDUINO_BUTTON_BOXV2\ARDUINO_BUTTON_BOXV2.ino: In function 'void CheckAllEncoders()':

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

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

               ^

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

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

                                                                      ^

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

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

               ^

ARDUINO_BUTTON_BOXV2:161:69: error: expected unqualified-id before '.' token

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

                                                                     ^

exit status 1
'JOYSTICK_DEFAULT_REPORT_ID' was not declared in this scope

Este informe podría contener más información con
"Mostrar salida detallada durante la compilación"
opción habilitada en Archivo -> Preferencias.

alguna idea.

Gracias

@mrvily
Esto es porque no tienes bien seleccionado el arduino y el puerto.
Si has seguido algunos de los tutos de internet suelen usar la arduino micro, selecciona esa.
Después ve al puerto y selecciona el que te aparece como com9.
Ya nos dices!

Buenas, si aún no lo solucionaste te comento, me paso lo mismo ayer, estoy recien ingresando en este mundo y es vasto por lo que encontre mucha info pero en ninguna daba con la tecla hasta que un poco por accidente y un poco por logica llegue a una solucion.

  1. Asegurate de descargar las librerias Keypad y Joystick con el mismo software de arduino

  2. descargas esta libreria: 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.

  3. descomprimes en cualquier lado y le das click a deploy.bat

Ahora debería compilar. solo pones verificar y ves si compila.

Yo modifique el codigo ya que necesitaba 32 botones y no encoders por si te interesa.

Saludos