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:
- 18:025d9a617769
- Parent:
- 17:0c8440955d31
- Child:
- 19:7935ca386e13
--- a/main.cpp Wed Jan 20 11:18:20 2021 +0000 +++ b/main.cpp Fri Nov 05 13:48:42 2021 +0000 @@ -1,39 +1,33 @@ #include <global.h> Serial RS2(UART2_TX, UART2_RX); -Serial RS1(UART1_TX, UART1_RX); Timer timer; Watchdog watchDog; typedef uint8_t byte; -DigitalOut Select1(DE_TXD_1); DigitalOut Select2(DE_TXD_2); +AS5045 Enc_left(SP1_NSS1); +AS5045 Enc_right(SP1_NSS2); + bool sendFlag = false; char c = '1'; - -// ----------------------------- For future --------------------------------------- -// Counting CRC for modbus package -//const unsigned char CRC7_POLY = 0x91; +int Enc_left_data = 0, Enc_right_data = 0; -//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; -// -//} +void Encoders() +{ + Enc_left_data = Enc_left.getPosition(); + wait_ms(3); + Enc_right_data = Enc_right.getPosition(); + wait_ms(3); + Select1 = 1; + RS1.printf ("%d_%d\r\n", Enc_right_data, Enc_left_data); + wait_ms(3); + Select1 = 0; +} void UART2_callback() { c = RS2.getc(); @@ -49,28 +43,23 @@ int main() { RS2.baud (115200); - RS1.baud (115200); Select1 = 0; Select2 = 0; RS2.attach(&UART2_callback); -#if MAIN_CODE - int US1_data = 0,US2_data = 0, US3_data = 0, Lift_IR1 = 0,Lift_IR2 = 0, Enc_left_data = 0, Enc_right_data = 0; + int US1_data = 0,US2_data = 0, US3_data = 0, Lift_IR1 = 0,Lift_IR2 = 0; bool IR1_data = 0,IR2_data = 0; - float temp_one_value = -1, temp_two_value = -1, currentTime = 0, previousTime = 0; - + //float temp_one_value = -1, temp_two_value = -1;//, currentTime = 0, previousTime = 0; + timer.start(); watchDog.Configure(5.0); - OneWire oneWire(PA_11); // substitute D8 with the actual pin name connected to the 1-wire bus + //OneWire oneWire(PA_11); // substitute D8 with the actual pin name connected to the 1-wire bus int sensorsFound = 0; DigitalIn Lift1 (PB_0); - DigitalIn Lift2 (PB_1); - - AS5045 Enc_left(SP1_NSS1); - AS5045 Enc_right(SP1_NSS2); + DigitalIn Lift2 (PB_1); JSN_SR04 US_sensor_left (PB_14, PA_9); JSN_SR04 US_sensor_middle (PB_15, PA_9); @@ -93,92 +82,64 @@ while (true) { watchDog.Service(); - - currentTime = timer.read(); + Encoders(); + for (int i = 0; i < sensorsFound; i++) { + ds1820[i]->startConversion(); + wait_ms(1); + } + Encoders(); - if((currentTime - previousTime) >= 0.1) { - previousTime = currentTime; - - for (int i = 0; i < sensorsFound; i++) { - ds1820[i]->startConversion(); - wait_ms(1); - } + US_sensor_left.startMeasurement (); + US1_data = US_sensor_left.getDistance_cm (); + wait_ms(20); + Encoders(); - US_sensor_left.startMeasurement (); - US1_data = US_sensor_left.getDistance_cm (); - wait_ms(20); - - US_sensor_middle.startMeasurement (); - US2_data = US_sensor_middle.getDistance_cm (); - wait_ms(20); - - US_sensor_right.startMeasurement (); - US3_data = US_sensor_right.getDistance_cm (); - wait_ms(20); - - IR1_data = IR_sensor_left.checkObstacle (); - IR2_data = IR_sensor_right.checkObstacle (); - - Lift_IR1 = Lift1.read(); - Lift_IR2 = Lift2.read(); + US_sensor_middle.startMeasurement (); + US2_data = US_sensor_middle.getDistance_cm (); + wait_ms(20); + Encoders(); + + US_sensor_right.startMeasurement (); + US3_data = US_sensor_right.getDistance_cm (); + wait_ms(20); + Encoders(); + + IR1_data = IR_sensor_left.checkObstacle (); + IR2_data = IR_sensor_right.checkObstacle (); + + Lift_IR1 = Lift1.read(); + Lift_IR2 = Lift2.read(); + Encoders(); - if (ds1820[0]->isPresent() ) { - temp_one_value = ds1820[0]->read(); - } - if (ds1820[1]->isPresent() ) { - temp_two_value = ds1820[1]->read(); - } + if (ds1820[0]->isPresent() ) { + temp_one_value = ds1820[0]->read(); } - - Enc_left_data = Enc_left.getPosition(); - wait_ms(3); - Enc_right_data = Enc_right.getPosition(); - wait_ms(3); + if (ds1820[1]->isPresent() ) { + temp_two_value = ds1820[1]->read(); + } + Encoders(); - Select1 = 1; - RS1.printf ("%d\r\n", Enc_left_data), Enc_right_data); - wait_ms(3); - Select1 = 0; if(US2_data < 100){ - Select2 = 1; + Select2 = 1; RS2.printf ("Left Obstacle\r\n"); wait_ms(200); Select2 = 0; - } + } if(US3_data < 100){ Select2 = 1; RS2.printf ("Right Obstacle\r\n"); wait_ms(200); Select2 = 0; - } + } + if(sendFlag) { Select2 = 1; - //RS2.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)); + RS2.printf ("%d_%d_%d_%d_%d_%d_%d\r\n", US1_data, US2_data, US3_data, IR1_data, IR2_data, Lift_IR1, Lift_IR2); //,(int)((Vcc -24 ) * 5 + 50)); wait_ms(5); sendFlag = false; Select2 = 0; } + Encoders(); } -#endif - -#if TEST_REQUEST - - while (true) { - // if(RS1.readable()) { -// Select1 = 1; -// RS1.putc(RS1.getc()); -// wait_ms (1000); -// Select1 = 0; -// }else{ - Select1 = 1; - RS1.printf ("nothing \n"); - wait_ms (5); - Select1 = 0; - wait_ms (1000); - //} - } - -#endif - } \ No newline at end of file