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:
27:c559bfe67109
Parent:
26:ddfb293f4606
--- a/main.cpp	Wed Jan 04 07:05:03 2017 +0000
+++ b/main.cpp	Wed Aug 02 15:17:17 2017 +0000
@@ -541,29 +541,7 @@
 #endif
 #ifdef TARGET_KL25Z
             indicators = 0;
-            if (R > 2) {
-                switch(direction) {
-                    // left
-                    case 0: //XR(); break;
-                    case 6: //XF(); break;
-                    case 7: //RF(); break;
-                    indicators = 2; break;
-                    // right
-                    case 2: //RX(); break;
-                    case 3: //FR(); break;
-                    case 4: //FX(); break;
-                    indicators = 1; break;
-                    // neither
-                    case 1: //RR(); break;
-                    case 5: //FF(); break;
-                    break;
-                }
-            }
-            if (R < 20) {
-                if (!central) {
-                    pc.printf("central\r\n");
-                    central = true;
-                }
+            if (R <= 0.1) {
                 double twitch = pow(n->aX - next->aX, 2.0) + pow(n->aY - next->aY, 2.0) + pow(n->aZ - next->aZ, 2.0);
 #if DEBUG > 1
                 pc.printf("twitch %f\r\n", twitch);
@@ -583,16 +561,39 @@
                     central_time_trip = 0;
                 }
             } else {
+                switch(direction) {
+                    // left
+                    case 0: //XR(); break;
+                    case 6: //XF(); break;
+                    case 7: //RF(); break;
+                    indicators = 2; break;
+                    // right
+                    case 2: //RX(); break;
+                    case 3: //FR(); break;
+                    case 4: //FX(); break;
+                    indicators = 1; break;
+                    // neither
+                    case 1: //RR(); break;
+                    case 5: //FF(); break;
+                    break;
+                }
 #if DEBUG
                 snprintf(wake, 100, "Wake for R %f\r\n", R);
                 pc.printf(wake);
                 radio.send(GATEWAY_ID, (const void*)wake, 100, false);
 #endif
-                central_time.reset();
-                central_time_trip = 0;
-                if (central) {
-                    pc.printf("go %s\r\n", directions[direction]);
-                    central = false;
+                if (R < 40) {
+                    if (!central) {
+                        pc.printf("central\r\n");
+                        central = true;
+                    }
+                } else {
+                    central_time.reset();
+                    central_time_trip = 0;
+                    if (central) {
+                        pc.printf("go %s\r\n", directions[direction]);
+                        central = false;
+                    }
                 }
                 R = R/20000;
                 float pal[8][3] = {