RPLIDAR A1M8 LCD

Dependencies:   TS_DISCO_F746NG mbed BufferedSerial LCD_DISCO_F746NG mbed-rtos Trigo BSP_DISCO_F746NG

Revision:
8:7788cc96e8ad
Parent:
5:734551a9f4e7
--- a/Communication.cpp	Mon Nov 28 15:36:07 2016 +0000
+++ b/Communication.cpp	Tue Jun 22 13:22:01 2021 +0000
@@ -9,30 +9,36 @@
 #define _USE_MATH_DEFINES
 
 
-BufferedSerial lidar(PC_6, PC_7,4096);
+BufferedSerial lidar(PC_6, PC_7,4096);         // TX RX BAUD
 Serial pc(USBTX, USBRX);
-LCD_DISCO_F746NG lcdComm;
+LCD_DISCO_F746NG lcdComm;  //Init LCD
 
 void Communication::confUART()
 {
-//  Send command
+     //ENVOIE REQUETE
     lidar.baud(115200);
     pc.baud(115200);
+    
+    
+    
 }
 
 
 void Communication::Reset()
 {
-//  Send command
+     //ENVOIE REQUETE
     lidar.putc(0xA5);
     lidar.putc(0x40);
+    wait_ms(2);
 }
 
 void Communication::Stop()
 {
-//  Send command
+     //ENVOIE REQUETE
     lidar.putc(0xA5);
     lidar.putc(0x25);
+    
+     wait_ms(1);
 }
 
 void Communication::Get_Info()
@@ -40,18 +46,19 @@
   short const cardRespReq=7;
   short const cardRespData=20;
 
-//  Send command
+     //ENVOIE REQUETE
     lidar.putc(0xA5);
     lidar.putc(0x50);
 
   wait_ms(100);
 
-  //Header reading
+  //LECTURE DE L'ENTETE
   for (int i=0; i<cardRespReq; i++) {
       pc.putc(lidar.getc());
   }
 
-  //Data reading
+  
+      //LECTURE DONNEE
   for (int i=0; i<cardRespData; i++) {
       pc.putc(lidar.getc());
     }
@@ -63,18 +70,17 @@
     short const cardRespReq=7;
     short const cardRespData=3;
 
-      //Send command
-     lidar.putc(0xA5);
+     //ENVOIE REQUETE
+     lidar.putc(0xA5);    
      lidar.putc(0x52);
 
       wait_ms(100);
 
-      //Header reading
       for (int i=0; i<cardRespReq; i++) {
           pc.putc(lidar.getc());
       }
 
-      //Data reading
+      //LECTURE DONNEES
       for (int i=0; i<cardRespData; i++) {
           pc.putc(lidar.getc());
         }
@@ -100,7 +106,7 @@
     int16_t distanceXLCD,distanceYLCD;
 
    
-//              Send command
+//              ENVOIE REQUETE
                 lidar.putc(0xA5);
                 lidar.putc(0x20);
 
@@ -110,7 +116,7 @@
                         {
                             pc.putc(lidar.getc());
                         }
-//              Wait for motor stabilization
+//              ATTENTE STABILISATION
                 wait_ms(1000);
                 lcdComm.SetBackColor(LCD_COLOR_GREEN);
                 wait(0.3);
@@ -118,12 +124,18 @@
                 countClear=0;
                 while (1)
                 {
+                    
+                   //LECTURE DONNEEs
                     ScanData.quality=lidar.getc();
                     ScanData.angle1=lidar.getc();
                     ScanData.angle2=lidar.getc();
                     ScanData.distance1=lidar.getc();
                     ScanData.distance2=lidar.getc();
                     checkBit=ScanData.angle1 & 0x1;
+                    
+                    
+                    
+                    // RESTRUCTURATION DES DONNEES
                     if (checkBit==1) {
                         distance=0;
                         distance=(uint16_t)(ScanData.distance2<<8 | ScanData.distance1);
@@ -138,19 +150,24 @@
                         PolRec(distance,angRad,&distanceY,&distanceX);
                         if ((abs(distanceX)<6000) && (abs(distanceY)<6000))
                         {
+                            
+                            // TENTATIVE 
                             distanceXLCD=(int16_t)floor(240+((distanceX/6000)*130));
                             distanceYLCD=(int16_t)floor(130+((distanceY/6000)*130));
                         }
 
-//                        Debug
-//                        pc.printf("\r");
-//                        pc.printf("Angle: %d Distance: %d X: %f Y: %f",angle,distance,distanceX,distanceY);
-//                        pc.printf("Angle: %d Distance:[mm] %d",angle,distance);
-//                        pc.printf("X: %d Y: %d",distanceX,distanceY);
-//                        pc.printf("Angle: %d Distance: %d X: %d Y: %d",angle,distance,distanceXLCD,distanceYLCD);
-//                        Debug
-//                        
-                         lcdComm.DrawPixel(distanceXLCD,distanceYLCD,LCD_COLOR_GREEN);
+
+
+
+                        // DEBUGAGE SUR PC 
+                        pc.printf("\r");
+                        pc.printf("Angle: %d Distance: %d X: %f Y: %f",angle,distance,distanceX,distanceY);
+                        pc.printf("Angle: %d Distance:[mm] %d",angle,distance);
+                        pc.printf("X: %d Y: %d",distanceX,distanceY);
+                        pc.printf("Angle: %d Distance: %d X: %d Y: %d",angle,distance,distanceXLCD,distanceYLCD);
+                    
+                        // AFFICHE UN POINT SUR LCD EN FONCTION DE DX ET DY
+                         lcdComm.DrawPixel(distanceXLCD,distanceYLCD,LCD_COLOR_WHITE);
                          wait_ms(1);
                         
                         
@@ -164,4 +181,4 @@
                 }
 
             }
-}
+}
\ No newline at end of file