RPLIDAR A1M8 LCD
Dependencies: TS_DISCO_F746NG mbed BufferedSerial LCD_DISCO_F746NG mbed-rtos Trigo BSP_DISCO_F746NG
Diff: Communication.cpp
- 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