test

Dependencies:   mbed Watchdog

Dependents:   STM32-MC_node

main.cpp

Committer:
ruslanbredun
Date:
2020-07-30
Revision:
9:859bcb293e46
Parent:
8:c3cffab85b0d
Child:
10:0b7f23df690a

File content as of revision 9:859bcb293e46:

#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_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)
{
  unsigned char i, j, crc = 0;
 
  for (i = 0; i < length; i++)
  {
    crc ^= message[i];
    for (j = 0; j < 8; j++)
    {
      if (crc & 1)
        crc ^= CRC7_POLY;
      crc >>= 1;
    }
  }
  return crc;
}
int main()
{
# if DEMO_CODE
    
    JSN_SR04 sensor1(TIM1_CH2, TRIG_PA8_OUT);
    E18_D80NK infared1 (IR1_PB12_OUT);
    E18_D80NK infared2 (IR2_PB13_OUT);
    
    select =0;
    
    sensor1.setRanges(10, 200);
    
    memset(data,0,sizeof(data));
    int distance;
    regvalue[0] = 1;
    byte in;
    
    
    while(true) {      
        
           //memset(regvalue,0,sizeof(regvalue));
           //wait_ms(100);
           //RS485.recvMsg(regvalue,sizeof(regvalue),500);
    
        //printf("Done\n");
       if (RS485.readable() > 0)
      {

         in = RS485.getc();
        
        }
        
        if(in == '\4')
        {
            
            timer.reset();
            timer.start();
            sensor1.startMeasurement();
            
            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';
            
            
        }
 
    }
    
 
 
#endif
 
}