Utilisation de 3 NeoPixels sur 3 sorties différentes

Dependencies:   NeoStrip mbed

Revision:
1:538b13cb6699
Parent:
0:129e8567ddbd
Child:
2:43daa01ba06d
--- a/main.cpp	Sun May 17 17:29:44 2015 +0000
+++ b/main.cpp	Mon May 18 21:07:26 2015 +0000
@@ -44,8 +44,8 @@
 
 Serial serialPc(USBTX, USBRX); // tx, rx, écarté car driver incompatible avec LabVIEW
 //Serial serialPc(p28, p27); // tx, rx (c'est l'uart2 du LPC1768)
-//Serial uartMX28(p13, p14);  // tx, rx pour MX28 (uart1 du LPC1768)
-Serial uartMX28(p28, p27);  // tx, rx pour MX28 (uart1 du LPC1768)
+Serial uartMX28(p13, p14);  // tx, rx pour MX28 (uart1 du LPC1768)
+//Serial uartMX28(p28, p27);  // tx, rx pour MX28 (uart1 du LPC1768)
 
 NeoStrip panelLed1(p6, N1); // creation de l'objet panelLed1 cde par p6, N1 Led
 //NeoStrip panelLed2(p7, N2); // creation de l'objet panelLed2 cde par p7, N2 Led
@@ -159,10 +159,10 @@
             int anglePositionHorizontale = (e * 100) + (f * 10) + g;
             int valeurPositionHorizontale = anglePositionHorizontale * 4095 / 360;
             wait_us(2000); // Attendre fin de la trame de réponse du Servo Vertical
-            //setPosition(ID_SERVO_HORIZONTALE, valeurPositionHorizontale);
+            setPosition(ID_SERVO_HORIZONTALE, valeurPositionHorizontale);
             //Pour Debug
-            serialPc.printf("idServ = %d \tvaleurPosition = %d\n",ID_SERVO_VERTICAL, valeurPositionVerticale);
-            serialPc.printf("idServ = %d \tvaleurPosition = %d\n",ID_SERVO_HORIZONTALE, valeurPositionHorizontale);
+            //serialPc.printf("idServ = %d \tvaleurPosition = %d\n",ID_SERVO_VERTICAL, valeurPositionVerticale);
+            //serialPc.printf("idServ = %d \tvaleurPosition = %d\n",ID_SERVO_HORIZONTALE, valeurPositionHorizontale);
         }
         if ((bufferRec[0] == '1')&&(numeroOctetRecu == 2)) { // si demande de lecture de la position
             led03 = 1; // indic
@@ -182,15 +182,26 @@
                 }
                 tempoReception++;
             }
-            /*for(int i=0;i<8;i++) {
-            	octetRecuMX[i] = uartMX28.getc();
+            int valeurLue = octetRecuMX[6] * 256 + octetRecuMX[5];
+            int valeurAngleVertCentiemeDegres = (valeurLue * 100) * 360/4096;
+            	//serialPc.printf("Valeur lue vertical%d\n",valeurLue); ///////////Pour test A modifier !!!!!
+            wait(0.2);
+            
+            write(ID_SERVO_HORIZONTALE, 4, MX28_READ_DATA, MX28_PRESENT_POSITION_L,2);
+            i=0;
+            tempoReception=0;
+            while((tempoReception < 1000000)&&(i<8)) {
+                if(uartMX28.readable()) {
+                    octetRecuMX[i] = uartMX28.getc();
+                    i++;
+                }
+                tempoReception++;
             }
-            for(int i=0;i<8;i++) {
-            	serialPc.putc(octetRecuMX[i]);
-            }*/
-            int valeurLue = octetRecuMX[6] * 256 + octetRecuMX[5];
-            serialPc.printf("Valeur lue %d\n",valeurLue); ///////////Pour test A modifier !!!!!
-            wait(0.2);
+            valeurLue = octetRecuMX[6] * 256 + octetRecuMX[5];
+            int valeurAngleHorizontaleCentiemeDegres = (valeurLue * 100) * 360/4096;
+            	//serialPc.printf("Valeur lue horisontal%d\n",valeurLue); ///////////Pour test A modifier !!!!!
+            serialPc.printf("OK_moteurs_%0#5d_%d",valeurAngleVertCentiemeDegres, valeurAngleHorizontaleCentiemeDegres);
+
             led03 = 0; //
         }
         if ((bufferRec[0] == '2')&&(numeroOctetRecu == 3)) { // si c'est une commande Laser
@@ -198,10 +209,12 @@
                 //Laser on
                 led02 = 1; // indic commande Laser on
                 laser = 1;
+                serialPc.printf("OK_laser_1");
             } else {
                 //Laser off
                 led02 = 0; // indic commande Laser off
                 laser = 0;
+                serialPc.printf("OK_laser_0");
             }
         }
         if ((bufferRec[0] == '3')&&(numeroOctetRecu == 11)) { // si commande panneau led supérieur
@@ -280,7 +293,7 @@
     serialPc.baud(115200);
     serialPc.attach(&receptionPc); // defini la fonction interruption
     panelLed1.setBrightness(1);	// par défaut à 50%
-    //serialPc.printf("Entrer une commande\n");
+    	//serialPc.printf("Entrer une commande\n");
     led01 = 1;
     // Clear buffer
     memset(&bufferRec[0], 0, sizeof(bufferRec));