Руслан Бредун / Mbed 2 deprecated STM32-MC_node

Dependencies:   mbed Watchdog stm32-sensor-base2

main.cpp

Committer:
ommpy
Date:
2020-08-26
Revision:
10:0b7f23df690a
Parent:
9:859bcb293e46
Child:
12:406f75196a12

File content as of revision 10:0b7f23df690a:

#include <global.h>
 
//RS485 RS485(UART2_TX,UART2_RX,DE_TXD_2); // Tx, Rx , !RE and DE MAX485 pin
 Serial pc(UART2_TX, UART2_RX);
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 DEMO1_CODE
//    
//    JSN_SR04 sensor1(TIM1_CH2, TRIG_PA8_OUT);
//    E18_D80NK infared1 (IR1_PB12_OUT);
//    E18_D80NK infared2 (IR2_PB13_OUT);
//    
//    OneWire oneWire(D8);        // substitute D8 with the actual pin name connected to the 1-wire bus
//    int sensorsFound = 0;
//
//    
//    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

# if DEMO_CODE

    int US1_data = 0,US2_data = 0, US3_data = 0;
       
   int Lift_IR1 = 0,Lift_IR2 = 0;
   
   bool IR1_data = 0,IR2_data = 0;

   float temp_one_value = -1 , temp_two_value = -1 ;
   
   
   
   OneWire oneWire(PA_11);        // substitute D8 with the actual pin name connected to the 1-wire bus
    int sensorsFound = 0;
   
   AnalogIn Lift1 (PB_0);
   AnalogIn Lift2 (PB_1);    
   JSN_SR04 US_sensor_left (PB_14, PA_9);
   JSN_SR04 US_sensor_middle (PB_15, PA_9);
   JSN_SR04 US_sensor_right (PA_8, PA_9);        
       
   US_sensor_left.setRanges (20, 300);
   US_sensor_middle.setRanges (20, 300);
   US_sensor_right.setRanges (20, 300);
   
   E18_D80NK IR_sensor_left (PB_13);
   E18_D80NK IR_sensor_right (PB_12);
   
   for (sensorsFound = 0; sensorsFound < MAX_SENSOSRS; sensorsFound++) {
        ds1820[sensorsFound] = new DS1820(&oneWire);
        if (!ds1820[sensorsFound]->begin()) {
            delete ds1820[sensorsFound];
            break;
        }
    }
    
   pc.baud (115200);
   select = 1;
       
   while (true) {
   
       for (int i = 0; i < sensorsFound; i++)
       {
            ds1820[i]->startConversion();
            wait_ms(100);
            //temp_one_value = ds1820[i]->read();
            //temp_two_value = i;
        }
    
       US_sensor_left.startMeasurement ();
       US1_data = US_sensor_left.getDistance_cm ();
       
       US_sensor_middle.startMeasurement ();
       US2_data = US_sensor_middle.getDistance_cm ();
       
       US_sensor_right.startMeasurement ();
       US3_data = US_sensor_right.getDistance_cm ();
       
       IR1_data = IR_sensor_left.checkObstacle ();
       IR2_data = IR_sensor_right.checkObstacle ();  
       
       Lift_IR1 = Lift1.read () <= 0.53? 1: 0;        
       Lift_IR2 = Lift2.read () <= 0.53? 1: 0;
     
       
        if (ds1820[0]->isPresent() ){
                //pc.printf("temp[%d] = %3.1f%cC\r\n", 0, ds1820[0]->read(), 176); // read temperature
                temp_one_value = ds1820[0]->read();
        }
        if (ds1820[1]->isPresent() ){
                //pc.printf("temp[%d] = %3.1f%cC\r\n", 1, ds1820[1]->read(), 176); // read temperature
                temp_two_value = ds1820[1]->read();
        }
        
       pc.printf ("%d_%d_%d_%d_%d_%d_%d_%3.1f_%3.1f\r\n", US1_data, US2_data, US3_data, IR1_data, IR2_data, Lift_IR1, Lift_IR2,temp_one_value,temp_two_value); // (int) ((Vcc -24 ) * 5 + 50));
       
       wait_ms (100);
   }
   


#endif
 
}