I've read that the only thing one has to do is change those values in the usb_private.h file and viola it's done. This does not seem to be the case or I am missing something.
The only things I changed are the three mentioned field. Do I have to include it in my sketch or something? Have I changed the proper fields in the proper file? "C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\usb_hid".
I'm totally stumped.
BTW, I'm on Windows10 using the latest Arduino and Teensyduino builds.
Also my sketch is super simple. But it works.
The only things I changed are the three mentioned field. Do I have to include it in my sketch or something? Have I changed the proper fields in the proper file? "C:\Program Files (x86)\Arduino\hardware\teensy\avr\cores\usb_hid".
I'm totally stumped.
BTW, I'm on Windows10 using the latest Arduino and Teensyduino builds.
Code:
#ifndef usb_serial_h__
#define usb_serial_h__
#include <stdint.h>
#ifdef __cplusplus
extern "C"{
#endif
/**************************************************************************
*
* Configurable Options
*
**************************************************************************/
#define VENDOR_ID 0x1209
#define PRODUCT_ID 0x5261
#define TRANSMIT_FLUSH_TIMEOUT 4 /* in milliseconds */
#define TRANSMIT_TIMEOUT 25 /* in milliseconds */
/**************************************************************************
*
* Endpoint Buffer Configuration
*
**************************************************************************/
// 0: control 64
// 1: debug IN 64x2
// 2: debug OUT 32x2
// 3: keyboard IN 8x2
// 4: mouse IN 16x2
// 5: joystick IN 16x2
// 6: keyboard media IN 8x2
// Some operating systems, especially Windows, may cache USB device
// info. Changes to the device name may not update on the same
// computer unless the vendor or product ID numbers change, or the
// "bcdDevice" revision code is increased.
//#ifndef STR_PRODUCT
#define STR_PRODUCT L"Simple Controls UH-1H Collective"
//#endif
#define ENDPOINT0_SIZE 64
#define DEBUG_INTERFACE 2
#define DEBUG_TX_ENDPOINT 1
#define DEBUG_TX_SIZE 64
#define DEBUG_TX_BUFFER EP_DOUBLE_BUFFER
#define DEBUG_TX_INTERVAL 1
#define DEBUG_RX_ENDPOINT 2
#define DEBUG_RX_SIZE 32
#define DEBUG_RX_BUFFER EP_DOUBLE_BUFFER
#define DEBUG_RX_INTERVAL 2
#define KEYBOARD_INTERFACE 0
#define KEYBOARD_ENDPOINT 3
#define KEYBOARD_SIZE 8
#define KEYBOARD_BUFFER EP_DOUBLE_BUFFER
#define KEYBOARD_INTERVAL 1
#define MOUSE_INTERFACE 1
#define MOUSE_ENDPOINT 4
#define MOUSE_SIZE 8
#define MOUSE_BUFFER EP_DOUBLE_BUFFER
#define MOUSE_INTERVAL 1
#define JOYSTICK_INTERFACE 3
#define JOYSTICK_ENDPOINT 5
#define JOYSTICK_SIZE 16
#define JOYSTICK_BUFFER EP_DOUBLE_BUFFER
#define JOYSTICK_INTERVAL 2
#define KEYMEDIA_INTERFACE 4
#define KEYMEDIA_ENDPOINT 6
#define KEYMEDIA_SIZE 8
#define KEYMEDIA_BUFFER EP_DOUBLE_BUFFER
#define KEYMEDIA_INTERVAL 4
#define NUM_ENDPOINTS 7
#define NUM_INTERFACE 5
// setup
void usb_init(void); // initialize everything
void usb_shutdown(void); // shut off USB
// variables
extern volatile uint8_t usb_configuration;
extern volatile uint8_t usb_suspended;
extern volatile uint8_t debug_flush_timer;
extern uint8_t keyboard_report_data[];
extern uint8_t keyboard_idle_count;
extern volatile uint8_t keyboard_leds;
extern uint8_t mouse_buttons;
extern uint8_t joystick_report_data[12];
extern uint8_t keymedia_report_data[8];
extern uint16_t keymedia_consumer_keys[4];
extern uint8_t keymedia_system_keys[3];
#ifdef __cplusplus
} // extern "C"
#endif
#endif
Also my sketch is super simple. But it works.
Code:
void setup() {
// Joystick buttons 1-12
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
// Hat switch buttons
pinMode(14, INPUT_PULLUP);
pinMode(15, INPUT_PULLUP);
pinMode(16, INPUT_PULLUP);
pinMode(17, INPUT_PULLUP);
}
void loop() {
//Joystick buttons
if (digitalRead(0) == LOW)
{
Joystick.button(1, 1);
}
else {
Joystick.button(1,0);
}
if (digitalRead(1) == LOW)
{
Joystick.button(2, 1);
}
else {
Joystick.button(2,0);
}
if (digitalRead(2) == LOW)
{
Joystick.button(3, 1);
}
else {
Joystick.button(3,0);
}
if (digitalRead(3) == LOW)
{
Joystick.button(4, 1);
}
else {
Joystick.button(4,0);
}
if (digitalRead(4) == LOW)
{
Joystick.button(5, 1);
}
else {
Joystick.button(5,0);
}
if (digitalRead(5) == LOW)
{
Joystick.button(6, 1);
}
else {
Joystick.button(6,0);
}
if (digitalRead(6) == LOW)
{
Joystick.button(7, 1);
}
else {
Joystick.button(7,0);
}
if (digitalRead(7) == LOW)
{
Joystick.button(8, 1);
}
else {
Joystick.button(8,0);
}
if (digitalRead(8) == LOW)
{
Joystick.button(9, 1);
}
else {
Joystick.button(9,0);
}
if (digitalRead(9) == LOW)
{
Joystick.button(10, 1);
}
else {
Joystick.button(10,0);
}
if (digitalRead(10) == LOW)
{
Joystick.button(11, 1);
}
else {
Joystick.button(11,0);
}
if (digitalRead(11) == LOW)
{
Joystick.button(12, 1);
}
else {
Joystick.button(12,0);
}
// Hat switch
int angle =-1;//no angle input
if (digitalRead(14)==LOW) angle =0;
if (digitalRead(15)==LOW) angle =90;
if (digitalRead(16)==LOW) angle =180;
if (digitalRead(17)==LOW) angle =270;
if ((digitalRead(14)==LOW) && (digitalRead(15)==LOW)) angle =45;
if ((digitalRead(15)==LOW) && (digitalRead(16)==LOW)) angle =135;
if ((digitalRead(16)==LOW) && (digitalRead(17)==LOW)) angle =225;
if ((digitalRead(17)==LOW) && (digitalRead(14)==LOW)) angle =315;
Joystick.hat(angle);
// Pitch and throttle axis
Joystick.sliderLeft(analogRead(4));
Joystick.sliderRight(analogRead(5));
}