#include <SoftwareSerial.h>

#define joyXPin A5
#define joyYPin A4
#define joySWPin 4
#define joyDeadzone 200

SoftwareSerial SoftSerial(2, 3); // RX, TX

// bit encoding [0, 0, 0, joySW, joyY-, joyY+, joyX-, joyX+]
byte send_byte;
int joyX, joyY;
bool joySW;

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

  pinMode(joySWPin, INPUT);
}

void loop(){
  joyX = analogRead(joyXPin) - 1024 / 2;
  joyY = analogRead(joyYPin) - 1024 / 2;
  joySW = digitalRead(joySWPin);

  send_byte = B00000000;
  if (joyX > joyDeadzone)  send_byte |= B00000001;
  if (joyX < -joyDeadzone) send_byte |= B00000010;
  if (joyY > joyDeadzone)  send_byte |= B00000100;
  if (joyY < -joyDeadzone) send_byte |= B00001000;
  if (!joySW)              send_byte |= B00010000;
  if (send_byte) {
    SoftSerial.print((char)send_byte);
    Serial.println(String(send_byte, BIN));
  }
  delay(40); 
}