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

Dependencies:   mbed Watchdog stm32-sensor-base2

Revision:
10:0b7f23df690a
Parent:
9:859bcb293e46
Child:
12:406f75196a12
--- a/main.cpp	Thu Jul 30 13:04:10 2020 +0000
+++ b/main.cpp	Wed Aug 26 14:25:05 2020 +0530
@@ -1,7 +1,7 @@
 #include <global.h>
  
-RS485 RS485(UART2_TX,UART2_RX,DE_TXD_2); // Tx, Rx , !RE and DE MAX485 pin
- 
+//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;
@@ -11,6 +11,7 @@
 typedef uint8_t byte;
  
 DigitalOut select(DE_TXD_2);
+
 byte regvalue[1] ;
  byte data[6];
  
@@ -36,66 +37,149 @@
 }
 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
-    
-    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);
+
+    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;
+        }
+    }
     
-    memset(data,0,sizeof(data));
-    int distance;
-    regvalue[0] = 1;
-    byte in;
-    
+   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;
+        }
     
-    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();
-        
+       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();
         }
         
-        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';
-            
-            
-        }
- 
-    }
-    
- 
- 
+       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
  
 }
\ No newline at end of file