Denis Brousse
/
MX28-Scan3D_DB03-IRQ
Utilisation de 3 NeoPixels sur 3 sorties différentes
Diff: main.cpp
- 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));