Pro Micro no lee potenciómetros con Librería Joystick

Buenas, vuelvo con una consulta con respecto al Joystick. Tengo un Pro Mini. Descargué la librería Arduino Joystick (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.), pude cargar un programa básico de hacer parpadear uno de los leds de la placa pero al intentar compilar el programa para el arduino me salta este error:

C:\Users\Usuario\AppData\Local\Temp\ccbXkCWg.ltrans0.ltrans.o: In function `Joystick_::sendState() [clone .constprop.25]':
c:\Users\Usuario\Documents\Arduino\libraries\src/Joystick.cpp:679: undefined reference to `DynamicHID()'
c:\Users\Usuario\Documents\Arduino\libraries\src/Joystick.cpp:679: undefined reference to `DynamicHID_::SendReport(unsigned char, void const*, int)'
C:\Users\Usuario\AppData\Local\Temp\ccbXkCWg.ltrans0.ltrans.o: In function `global constructors keyed to 65535_0_sketch_oct4a.ino.cpp.o.2293':
<artificial>:(.text.startup+0x2ae): undefined reference to `DynamicHID()'
<artificial>:(.text.startup+0x2b4): undefined reference to `DynamicHID_::AppendDescriptor(DynamicHIDSubDescriptor*)'
collect2.exe: error: ld returned 1 exit status

exit status 1

Compilation error: exit status 1

Estuve buscando, pero no entiendo por donde viene el error. Probé con varias definiciones de JOYSTICK_TYPE_JOYSTICK, pero me da el mismo error. Pego el código:

//Subscribe to NizGamingTech
//Homemade Steering Wheel, Pedals By NizGamingTech
//4 Potentiometer
//Use Arduino Pro Micro
//Tested in ETS 2 and ATS
//Non-Commercial for Personal use only.

#include <Joystick.h>

#define joyRY A2
#define joyRZ A1
#define joyThrottle A3
#define joySteering A0

int ryAxis_ = 0;
int rzAxis_ = 0;
int throttle_ = 0;
int steering_ = 0;

const int numReadings = 10;
int readings[numReadings];

Joystick_ Joystick(0x12, JOYSTICK_TYPE_JOYSTICK, 0, 0,false,false,false,false,true,true,false,true,false,false,true);

const bool initAutoSendState = true;

void setup()
{
  Serial.begin(9600);
  for (int thisReading = 0; thisReading < numReadings; thisReading++) 
  {
    readings[thisReading] = 0;
  }
  Joystick.begin();
}

void loop() 
{
  ryAxis_ = analogRead(joyRY);
  ryAxis_ = map(ryAxis_,0,1023,0,255);
  Joystick.setRyAxis(ryAxis_);

  rzAxis_ = analogRead(joyRZ);
  rzAxis_ = map(rzAxis_,0,1023,0,255);
  Joystick.setRzAxis(rzAxis_);

  throttle_ = analogRead(joyThrottle);
  throttle_ = map(throttle_,0,1023,0,255);
  Joystick.setThrottle(throttle_);

  steering_ = analogRead(joySteering);
  steering_ = map(steering_,0,1023,0,1278);
  Serial.println(steering_);
delay(0.5);
  Joystick.setSteering(steering_);
}

Desde ya muchas gracias,
Saludos,

Encontré el error, adentro de la carpeta scr estaba DynamicHID, la copié dentro de la carpeta de las librerías de arduino y la incluí manualmente en el código, funcionó.
Lo que ahora no lee son los potenciómetros. Probé un código muy básico para leer y mostrar un potenciómetro por Serial y el mismo código me funciona bien en un Arduino Mega, pero no funciona en el Pro Micro, el valor de la lectura queda alrededor de 250 y no se mueve. Mi código general es este:


#include <DynamicHID.h>
#include <Joystick.h>

//#define joyRY A2
//#define joyRZ A1
// #define joyThrottle A3
// #define joyBrake A2
//#define joySteering A0

// int ryAxis_ = 0;
// int rzAxis_ = 0;
// int throttle_ = 0;
// int brake_ = 0;
// int steering_ = 0;

// const int numReadings = 10;
// int readings[numReadings];

Joystick_ Joystick(0x12, JOYSTICK_TYPE_JOYSTICK, 0, 0,false,false,false,false,true,true,false,true,false,false,true);
// Joystick_ Joystick = Joystick_(
//   0x03,
//   JOYSTICK_TYPE_GAMEPAD, // device type
//   0,                     // button count
//   0,                     // hat-switch count
//   false,                  // includeXAxis
//   false,                  // includeYAxis
//   false,                 // includeZAxis
//   false,                 // includeRxAxis
//   false,                 // includeRyAxis
//   false,                 // includeRzAxis
//   false,                 // includeRudder
//   false,                 // includeThrottle
//   true,                 // includeAccelerator
//   true,                 // includeBrake
//   false);                // includeSteering
// const bool initAutoSendState = true;

void setup()
{
 Serial.begin(9600);
 pinMode(A0, INPUT);
 pinMode(A1, INPUT);
  // for (int thisReading = 0; thisReading < numReadings; thisReading++) 
  // {
  //   readings[thisReading] = 0;
  // }
  Joystick.begin();
}

void loop() 
{
  Joystick.setXAxis(analogRead(A3));
  Joystick.setYAxis(analogRead(A2));
  // ryAxis_ = analogRead(joyRY);
  // ryAxis_ = map(ryAxis_,0,1023,0,255);
  // Joystick.setRyAxis(ryAxis_);

  // rzAxis_ = analogRead(joyRZ);
  // rzAxis_ = map(rzAxis_,0,1023,0,255);
  // Joystick.setRzAxis(rzAxis_);

  // throttle_ = analogRead(joyThrottle);
  // throttle_ = map(throttle_,0,1023,0,255);
  // Joystick.setThrottle(throttle_);

  // brake_ = analogRead(joyBrake);
  // brake_ = map(brake_,0,1023,0,255);
  // Joystick.setBrake(brake_);

  // steering_ = analogRead(joySteering);
  // steering_ = map(steering_,0,1023,0,1278);
 Serial.println(analogRead(A0));
 Serial.println(analogRead(A1));
delay(100);
  // Joystick.setSteering(steering_);
}

El código que usé para leer el potenciómetro es este:

int sensorPin = A0;   // select the input pin for the potentiometer

int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {
  Serial.begin(9600);
}

void loop() {

  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);

  delay(100);
}

Dinos donde copiaste la librería?
Con qué nombre figura?
Como esta adentro del nombre que mencionas?
Y que IDE estas usando

Hola Surbyte,
La librería la copié en la carpeta libraries de Documentos/Arduino.
Figura con nombre DinamycHID y src
Adentro hay 2 archivos Joystick.
IDE Arduino 2.3.2.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.