Wii Nunchuk via RFM69HW to Duplo 9203 Remote Control Car Kit using ARM mbed on a FRDM-KL25Z

Dependencies:   CRC FastPWM RFM69 USBDevice WakeUp WiiChuk_compat mbed-rtos mbed tlc59108

Fork of wiiNunchuk_compat by Greg Brush

Revision:
17:b9030e94b622
Parent:
16:3490cdea4986
Child:
18:18c91572768a
--- a/main.cpp	Tue Jun 28 11:54:04 2016 +0000
+++ b/main.cpp	Tue Jun 28 12:59:17 2016 +0000
@@ -257,10 +257,21 @@
     //float g = 1.0f;
     PwmOut b(LED_BLUE);
     //float b = 1.0f;
-    WiiChuck nun(PTE0, PTE1, pc);
+    DigitalOut nun_vdd(PTE31);
+    WiiChuck *nun;
+    void nun_init() {
+        nun_vdd = 1;
+        Thread::wait(100);
+        nun = new WiiChuck(PTE0, PTE1, pc);
+    }
+    void nun_sleep() {
+        nun_vdd = 0;
+    }
     RFM69 radio(PTD2, PTD3, PTC5, PTD0, PTA13);
 #else
-    WiiChuck nun(p9, p10, pc);
+    WiiChuck *nun = new WiiChuck(p9, p10, pc);
+    void nun_init() {}
+    void nun_sleep() {}
 #endif
 
 Timer rx_last_contact;
@@ -336,7 +347,8 @@
 
     nunchuk n1, n2;
     nunchuk *n = &n1, *next = &n2;
-    bool sender = nun.Read(&n->X, &n->Y, &n->aX, &n->aY, &n->aZ, &n->C, &n->Z);
+    nun_init();
+    bool sender = nun->Read(&n->X, &n->Y, &n->aX, &n->aY, &n->aZ, &n->C, &n->Z);
     if (sender) {
         pc.printf("chuck attached\r\n");
         radio.initialize(FREQUENCY, NODE_ID, NETWORKID);
@@ -377,17 +389,19 @@
                 pc.printf("snooze tx %f\r\n", central_time.read());
                 g = 0; Thread::wait(10); g = 1; Thread::wait(10);
                 #endif
+                nun_sleep();
                 Thread::wait(10);
                 WakeUp::set(1);
                 deepsleep();
-                nun.Read(&n->X, &n->Y, &n->aX, &n->aY, &n->aZ, &n->C, &n->Z);
+                nun_init();
+                nun->Read(&n->X, &n->Y, &n->aX, &n->aY, &n->aZ, &n->C, &n->Z);
                 Thread::wait(10);
                 #if DEBUG
                 r = 0; Thread::wait(10); r = 1; Thread::wait(10);
                 pc.printf("unsnooze tx\r\n");
                 #endif
             }
-            read = nun.Read(&n->X, &n->Y, &n->aX, &n->aY, &n->aZ, &n->C, &n->Z);
+            read = nun->Read(&n->X, &n->Y, &n->aX, &n->aY, &n->aZ, &n->C, &n->Z);
             n->sum = 0;
             n->sum = calculate_crc8((char*)n, sizeof(struct nunchuk));
         }