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:
- 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