Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Watchdog stm32-sensor-base2
Diff: main.cpp
- Revision:
- 9:859bcb293e46
- Parent:
- 8:c3cffab85b0d
- Child:
- 10:0b7f23df690a
--- a/main.cpp Tue Jul 28 14:25:33 2020 +0000 +++ b/main.cpp Thu Jul 30 13:04:10 2020 +0000 @@ -1,18 +1,21 @@ #include <global.h> - + RS485 RS485(UART2_TX,UART2_RX,DE_TXD_2); // Tx, Rx , !RE and DE MAX485 pin volatile bool serialArrived = false; int n=0; char a; bool send_flag = false; - + Timer timer; typedef uint8_t byte; - -DigitalOut select(DE_TXD_1); + +DigitalOut select(DE_TXD_2); byte regvalue[1] ; byte data[6]; + + byte data_t[9] = {0x02,0x05,0x01,0x49,0x01,0x03,0xf2,0xde};//your data + const unsigned char CRC7_POLY = 0x91; unsigned char getCRC(unsigned char message[], unsigned char length) @@ -39,48 +42,60 @@ E18_D80NK infared1 (IR1_PB12_OUT); E18_D80NK infared2 (IR2_PB13_OUT); - select = 1; + select =0; sensor1.setRanges(10, 200); memset(data,0,sizeof(data)); - float distance; + int distance; + regvalue[0] = 1; + byte in; + while(true) { - if(RS485.readable() >0){ + //memset(regvalue,0,sizeof(regvalue)); //wait_ms(100); - RS485.recvMsg(regvalue,sizeof(uint8_t),30); - } + //RS485.recvMsg(regvalue,sizeof(regvalue),500); + //printf("Done\n"); + if (RS485.readable() > 0) + { + + in = RS485.getc(); - if((int)regvalue[1] == 4 ) + } + + if(in == '\4') { - select = 1; + timer.reset(); timer.start(); sensor1.startMeasurement(); - distance = sensor1.getDistance_cm(); - data[0] = (uint8_t)(distance >> 24) ; - data[1] = (uint8_t)(distance >> 16) ; - data[2] = (uint8_t)(distance >> 8) ; - data[3] = (uint8_t)distance ; - data[4] = (uint8_t)infared1.checkObstacle(); - data[5] = (uint8_t)infared2.checkObstacle(); + distance = sensor1.getDistance_mm(); + data[0] = (distance >> 24) ; + data[1] =(distance >> 16) ; + data[2] = (distance >> 8) ; + data[3] = distance ; + data[4] = infared1.checkObstacle(); + data[5] = infared2.checkObstacle(); + select = 1; RS485.sendMsg(data,sizeof(data)); + wait_ms(20); + select = 0 ; timer.stop(); send_flag = false; wait_ms(20); + in = '\1'; - select = 0 ; + } - + } - - + + #endif - -} - + +} \ No newline at end of file