Driver to Joystick Shield V1.a board whith RF24 radio conected.
Public declarations:
// Button's pins
#define BT_A_PIN 2
#define BT_B_PIN 3
#define BT_C_PIN 4
#define BT_D_PIN 5
#define BT_E_PIN 6
#define BT_F_PIN 7
#define BT_Z_PIN 8
// Button's IDs
#define BT_A_ID 0
#define BT_B_ID 1
#define BT_C_ID 2
#define BT_D_ID 3
#define BT_E_ID 4
#define BT_F_ID 5
#define BT_Z_ID 6
#define JS_BUTTONS 7
// JoyStick pins
#define X_AXIS_PIN A0
#define Y_AXIS_PIN A1
typedef struct
{
byte msgID;
int param;
}
TJsPacket;
// msgID
#define msg_JS_BUTTON_PRESSED 1
#define msg_JS_BUTTON_RELEASED 2
#define msg_JS_X_AXIS_CHANGE 3
#define msg_JS_Y_AXIS_CHANGE 4
#define msg_JS_LAST_JS_MSG_ID msg_JS_Y_AXIS_CHANGE
class JoyStickRadio: public RadioMessage
{
public:
JoyStickRadio(int cePin, int csPin): RadioMessage(cePin, csPin){}
void run();
TJsPacket* makeJsPacket(TJsPacket *pack, byte msgID, int param);
int sendJsPacket(TJsPacket *pack);
int readJsPacket(TJsPacket *pack);
protected:
virtual void onJsPacketSent(TJsPacket *pack){};
virtual void onJsPacketRead(TJsPacket *pack){};
};
class JsRadioMaster: public JoyStickRadio, public JoyStickShield{
public:
JsRadioMaster(): JoyStickShield(), JoyStickRadio(RADIO_CE_PIN, RADIO_CS_PIN){}
void begin(uint8_t* pipeIn, uint8_t* pipeOut, TDatarate rate, boolean autoSendEvents= false);
void run();
protected:
virtual void jsButtonPressed(byte btID){}
virtual void jsButtonReleased(byte btID){}
virtual void jsXAxisChange(int xVal){}
virtual void jsYAxisChange(int yVal){}
};
Wiki: Home
Wiki: JoyStick
Wiki: JoyStickShield
Wiki: PushButton
Wiki: PushButtonArray
Wiki: RadioMessage