Руслан Бредун
/
stm32-sensor-base2
test
main.cpp
- Committer:
- ruslanbredun
- Date:
- 2020-12-14
- Revision:
- 16:82251ada9b04
- Parent:
- 15:0f52feb640cf
File content as of revision 16:82251ada9b04:
#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); bool sendFlag = false; char c = '1'; // ----------------------------- For future --------------------------------------- // Counting CRC for modbus package //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; // //} void UART2_callback() { c = RS2.getc(); if(c == '5') { sendFlag = true; } else { Select2 = 1; wait_ms(90); Select2 = 0; } } 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; bool IR1_data = 0,IR2_data = 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 int sensorsFound = 0; DigitalIn Lift1 (PB_0); DigitalIn Lift2 (PB_1); AS5045 Enc_left(SP1_NSS1); AS5045 Enc_right(SP1_NSS2); 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; } } while (true) { watchDog.Service(); currentTime = timer.read(); 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); 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(); if (ds1820[0]->isPresent() ) { temp_one_value = ds1820[0]->read(); } if (ds1820[1]->isPresent() ) { temp_two_value = ds1820[1]->read(); } } Enc_left_data = Enc_left.getPosition(); Enc_right_data = Enc_right.getPosition(); Select1 = 1; RS1.printf ("%d\r\n", Enc_left_data);//, Enc_right_data); wait_ms(1); Select1 = 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)); wait_ms(5); sendFlag = false; Select2 = 0; } } #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 }