A wireless accelerometer based joypad using FRDM-KL25Z for the Gameduino based space invaders.

Dependencies:   MMA8451Q mbed nRF2401A

Fork of nRF2401A_Hello_World by Chris Dick

nRF2401A connected to the KL25Z board:

/media/uploads/TheChrisyd/2014-03-08_22.55.16.jpg

Committer:
TheChrisyd
Date:
Sun Mar 09 12:27:41 2014 +0000
Revision:
5:8e11050f1464
Parent:
4:4a84fcba7bd4
Updated to match Library update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TheChrisyd 0:8fcb46c5fa63 1 #include "mbed.h"
TheChrisyd 0:8fcb46c5fa63 2 #include "nRF2401A.h"
TheChrisyd 4:4a84fcba7bd4 3 #include "MMA8451Q.h"
TheChrisyd 0:8fcb46c5fa63 4
TheChrisyd 4:4a84fcba7bd4 5 #define MMA8451_I2C_ADDRESS (0x1d<<1)
TheChrisyd 4:4a84fcba7bd4 6 #define STICK_LEFT_BIT 0x01
TheChrisyd 4:4a84fcba7bd4 7 #define STICK_RIGHT_BIT 0x02
TheChrisyd 4:4a84fcba7bd4 8 #define STICK_UP_BIT 0x04
TheChrisyd 4:4a84fcba7bd4 9 #define STICK_DOWN_BIT 0x08
TheChrisyd 3:34ae527e9d41 10
TheChrisyd 4:4a84fcba7bd4 11 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
TheChrisyd 4:4a84fcba7bd4 12 Serial pc(USBTX, USBRX);
TheChrisyd 4:4a84fcba7bd4 13 nRF2401A rf1(PTD0, PTD5, PTA13, PTC12, PTC13);
TheChrisyd 4:4a84fcba7bd4 14 PwmOut rled(LED_RED);
TheChrisyd 4:4a84fcba7bd4 15 PwmOut gled(LED_GREEN);
TheChrisyd 4:4a84fcba7bd4 16 PwmOut bled(LED_BLUE);
TheChrisyd 0:8fcb46c5fa63 17
TheChrisyd 3:34ae527e9d41 18 int main()
TheChrisyd 3:34ae527e9d41 19 {
TheChrisyd 0:8fcb46c5fa63 20 wait(0.005);
TheChrisyd 0:8fcb46c5fa63 21 pc.printf("Hello nRF2401A\n\r");
TheChrisyd 4:4a84fcba7bd4 22
TheChrisyd 5:8e11050f1464 23 rf1.setAddress(0x0, 0x0, 0xa6, 0xa6, 0xa6, 3 << 3);
TheChrisyd 0:8fcb46c5fa63 24
TheChrisyd 3:34ae527e9d41 25 rf1.printControlPacket(pc);
TheChrisyd 3:34ae527e9d41 26 rf1.flushControlPacket();
TheChrisyd 3:34ae527e9d41 27
TheChrisyd 3:34ae527e9d41 28 nRF2401A::address_t rf2_addr = {0x0, 0x0, 0x53, 0x53, 0x53};
TheChrisyd 4:4a84fcba7bd4 29 uint8_t msg[] = {0x00, 0x00, 0x00, 0x00, 0x00};
TheChrisyd 0:8fcb46c5fa63 30
TheChrisyd 3:34ae527e9d41 31 while(1)
TheChrisyd 3:34ae527e9d41 32 {
TheChrisyd 4:4a84fcba7bd4 33 #if 0
TheChrisyd 4:4a84fcba7bd4 34 if ( acc.getAccZ() < -0.1)
TheChrisyd 4:4a84fcba7bd4 35 {
TheChrisyd 4:4a84fcba7bd4 36 msg[0] |= STICK_UP_BIT;
TheChrisyd 4:4a84fcba7bd4 37 }
TheChrisyd 4:4a84fcba7bd4 38 else if ( acc.getAccZ() > 0.1)
TheChrisyd 4:4a84fcba7bd4 39 {
TheChrisyd 4:4a84fcba7bd4 40 msg[0] |= STICK_DOWN_BIT;
TheChrisyd 4:4a84fcba7bd4 41 }
TheChrisyd 4:4a84fcba7bd4 42 #endif
TheChrisyd 4:4a84fcba7bd4 43 if ( acc.getAccY() < -0.1)
TheChrisyd 4:4a84fcba7bd4 44 {
TheChrisyd 4:4a84fcba7bd4 45 msg[0] |= STICK_LEFT_BIT;
TheChrisyd 4:4a84fcba7bd4 46 }
TheChrisyd 4:4a84fcba7bd4 47 else if ( acc.getAccY() > 0.1)
TheChrisyd 4:4a84fcba7bd4 48 {
TheChrisyd 4:4a84fcba7bd4 49 msg[0] |= STICK_RIGHT_BIT;
TheChrisyd 4:4a84fcba7bd4 50 }
TheChrisyd 4:4a84fcba7bd4 51 if ( ( acc.getAccX() > 0.1) || (acc.getAccY() < -0.1) )
TheChrisyd 4:4a84fcba7bd4 52 {
TheChrisyd 4:4a84fcba7bd4 53 msg[1] |= 0x01;
TheChrisyd 4:4a84fcba7bd4 54 }
TheChrisyd 3:34ae527e9d41 55
TheChrisyd 4:4a84fcba7bd4 56
TheChrisyd 4:4a84fcba7bd4 57 msg[2] = (uint8_t) ((acc.getAccX() + 1) * 127);
TheChrisyd 4:4a84fcba7bd4 58 msg[3] = (uint8_t) ((acc.getAccY() + 1) * 127);
TheChrisyd 4:4a84fcba7bd4 59 msg[4] = (uint8_t) ((acc.getAccZ() + 1) * 127);
TheChrisyd 4:4a84fcba7bd4 60
TheChrisyd 4:4a84fcba7bd4 61 rf1.sendMsg(rf2_addr, 3 << 3, msg, 4 << 3);
TheChrisyd 4:4a84fcba7bd4 62
TheChrisyd 4:4a84fcba7bd4 63 msg[0] = 0;
TheChrisyd 4:4a84fcba7bd4 64 msg[1] = 0;
TheChrisyd 4:4a84fcba7bd4 65
TheChrisyd 4:4a84fcba7bd4 66 rled = 1.0 - abs(acc.getAccX());
TheChrisyd 4:4a84fcba7bd4 67 gled = 1.0 - abs(acc.getAccY());
TheChrisyd 4:4a84fcba7bd4 68 bled = 1.0 - abs(acc.getAccZ());
TheChrisyd 4:4a84fcba7bd4 69 wait(0.1);
TheChrisyd 0:8fcb46c5fa63 70 }
TheChrisyd 4:4a84fcba7bd4 71
TheChrisyd 0:8fcb46c5fa63 72 }