Руслан Бредун
/
stm32-sensor-base2
test
main.cpp@16:82251ada9b04, 2020-12-14 (annotated)
- Committer:
- ruslanbredun
- Date:
- Mon Dec 14 14:13:35 2020 +0000
- Revision:
- 16:82251ada9b04
- Parent:
- 15:0f52feb640cf
tester
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ommpy | 0:d383e2dee0f7 | 1 | #include <global.h> |
ruslanbredun | 12:406f75196a12 | 2 | |
ruslanbredun | 12:406f75196a12 | 3 | Serial RS2(UART2_TX, UART2_RX); |
ruslanbredun | 12:406f75196a12 | 4 | Serial RS1(UART1_TX, UART1_RX); |
ruslanbredun | 12:406f75196a12 | 5 | |
nestedslk | 4:f6e22dd39313 | 6 | Timer timer; |
ruslanbredun | 14:b3530522908e | 7 | Watchdog watchDog; |
ruslanbredun | 14:b3530522908e | 8 | |
ommpy | 6:a760ce6defbe | 9 | typedef uint8_t byte; |
ruslanbredun | 12:406f75196a12 | 10 | |
ruslanbredun | 12:406f75196a12 | 11 | DigitalOut Select1(DE_TXD_1); |
ruslanbredun | 12:406f75196a12 | 12 | DigitalOut Select2(DE_TXD_2); |
ruslanbredun | 12:406f75196a12 | 13 | |
ruslanbredun | 14:b3530522908e | 14 | bool sendFlag = false; |
ruslanbredun | 14:b3530522908e | 15 | char c = '1'; |
ommpy | 10:0b7f23df690a | 16 | |
ruslanbredun | 14:b3530522908e | 17 | // ----------------------------- For future --------------------------------------- |
ruslanbredun | 14:b3530522908e | 18 | // Counting CRC for modbus package |
ruslanbredun | 14:b3530522908e | 19 | //const unsigned char CRC7_POLY = 0x91; |
ruslanbredun | 12:406f75196a12 | 20 | |
ruslanbredun | 14:b3530522908e | 21 | //unsigned char getCRC(unsigned char message[], unsigned char length) |
ruslanbredun | 14:b3530522908e | 22 | //{ |
ruslanbredun | 14:b3530522908e | 23 | // unsigned char i, j, crc = 0; |
ruslanbredun | 14:b3530522908e | 24 | // |
ruslanbredun | 14:b3530522908e | 25 | // for (i = 0; i < length; i++) { |
ruslanbredun | 14:b3530522908e | 26 | // crc ^= message[i]; |
ruslanbredun | 14:b3530522908e | 27 | // for (j = 0; j < 8; j++) { |
ruslanbredun | 14:b3530522908e | 28 | // if (crc & 1) |
ruslanbredun | 14:b3530522908e | 29 | // crc ^= CRC7_POLY; |
ruslanbredun | 14:b3530522908e | 30 | // crc >>= 1; |
ruslanbredun | 14:b3530522908e | 31 | // } |
ruslanbredun | 14:b3530522908e | 32 | // } |
ruslanbredun | 14:b3530522908e | 33 | // return crc; |
ruslanbredun | 14:b3530522908e | 34 | // |
ruslanbredun | 14:b3530522908e | 35 | //} |
ruslanbredun | 12:406f75196a12 | 36 | |
ruslanbredun | 12:406f75196a12 | 37 | void UART2_callback() |
ruslanbredun | 12:406f75196a12 | 38 | { |
ruslanbredun | 12:406f75196a12 | 39 | c = RS2.getc(); |
ruslanbredun | 14:b3530522908e | 40 | if(c == '5') { |
ruslanbredun | 12:406f75196a12 | 41 | sendFlag = true; |
ruslanbredun | 12:406f75196a12 | 42 | } else { |
ruslanbredun | 12:406f75196a12 | 43 | Select2 = 1; |
ruslanbredun | 13:0c732e06d675 | 44 | wait_ms(90); |
ruslanbredun | 12:406f75196a12 | 45 | Select2 = 0; |
ruslanbredun | 12:406f75196a12 | 46 | } |
ruslanbredun | 12:406f75196a12 | 47 | } |
ruslanbredun | 12:406f75196a12 | 48 | |
nestedslk | 4:f6e22dd39313 | 49 | int main() |
nestedslk | 4:f6e22dd39313 | 50 | { |
ruslanbredun | 12:406f75196a12 | 51 | RS2.baud (115200); |
ruslanbredun | 14:b3530522908e | 52 | RS1.baud (115200); |
ruslanbredun | 12:406f75196a12 | 53 | Select1 = 0; |
ruslanbredun | 12:406f75196a12 | 54 | Select2 = 0; |
ruslanbredun | 12:406f75196a12 | 55 | RS2.attach(&UART2_callback); |
ruslanbredun | 12:406f75196a12 | 56 | |
ruslanbredun | 14:b3530522908e | 57 | #if MAIN_CODE |
ruslanbredun | 14:b3530522908e | 58 | int US1_data = 0,US2_data = 0, US3_data = 0, Lift_IR1 = 0,Lift_IR2 = 0, Enc_left_data = 0, Enc_right_data = 0; |
ruslanbredun | 12:406f75196a12 | 59 | bool IR1_data = 0,IR2_data = 0; |
ruslanbredun | 14:b3530522908e | 60 | float temp_one_value = -1, temp_two_value = -1, currentTime = 0, previousTime = 0; |
ruslanbredun | 14:b3530522908e | 61 | |
ruslanbredun | 14:b3530522908e | 62 | timer.start(); |
ruslanbredun | 12:406f75196a12 | 63 | |
ruslanbredun | 14:b3530522908e | 64 | watchDog.Configure(5.0); |
ommpy | 10:0b7f23df690a | 65 | |
ruslanbredun | 12:406f75196a12 | 66 | OneWire oneWire(PA_11); // substitute D8 with the actual pin name connected to the 1-wire bus |
ommpy | 10:0b7f23df690a | 67 | int sensorsFound = 0; |
ruslanbredun | 12:406f75196a12 | 68 | |
ruslanbredun | 12:406f75196a12 | 69 | DigitalIn Lift1 (PB_0); |
ruslanbredun | 12:406f75196a12 | 70 | DigitalIn Lift2 (PB_1); |
ruslanbredun | 12:406f75196a12 | 71 | |
ruslanbredun | 12:406f75196a12 | 72 | AS5045 Enc_left(SP1_NSS1); |
ruslanbredun | 12:406f75196a12 | 73 | AS5045 Enc_right(SP1_NSS2); |
ruslanbredun | 12:406f75196a12 | 74 | |
ruslanbredun | 12:406f75196a12 | 75 | JSN_SR04 US_sensor_left (PB_14, PA_9); |
ruslanbredun | 12:406f75196a12 | 76 | JSN_SR04 US_sensor_middle (PB_15, PA_9); |
ruslanbredun | 12:406f75196a12 | 77 | JSN_SR04 US_sensor_right (PA_8, PA_9); |
ruslanbredun | 12:406f75196a12 | 78 | |
ruslanbredun | 12:406f75196a12 | 79 | US_sensor_left.setRanges (20, 300); |
ruslanbredun | 12:406f75196a12 | 80 | US_sensor_middle.setRanges (20, 300); |
ruslanbredun | 12:406f75196a12 | 81 | US_sensor_right.setRanges (20, 300); |
ruslanbredun | 12:406f75196a12 | 82 | |
ruslanbredun | 12:406f75196a12 | 83 | E18_D80NK IR_sensor_left (PB_13); |
ruslanbredun | 12:406f75196a12 | 84 | E18_D80NK IR_sensor_right (PB_12); |
ruslanbredun | 12:406f75196a12 | 85 | |
ruslanbredun | 12:406f75196a12 | 86 | for (sensorsFound = 0; sensorsFound < MAX_SENSOSRS; sensorsFound++) { |
ommpy | 10:0b7f23df690a | 87 | ds1820[sensorsFound] = new DS1820(&oneWire); |
ommpy | 10:0b7f23df690a | 88 | if (!ds1820[sensorsFound]->begin()) { |
ommpy | 10:0b7f23df690a | 89 | delete ds1820[sensorsFound]; |
ommpy | 10:0b7f23df690a | 90 | break; |
ommpy | 10:0b7f23df690a | 91 | } |
ommpy | 10:0b7f23df690a | 92 | } |
ruslanbredun | 12:406f75196a12 | 93 | |
ruslanbredun | 12:406f75196a12 | 94 | while (true) { |
ruslanbredun | 14:b3530522908e | 95 | watchDog.Service(); |
ruslanbredun | 14:b3530522908e | 96 | |
ruslanbredun | 14:b3530522908e | 97 | currentTime = timer.read(); |
ruslanbredun | 14:b3530522908e | 98 | |
ruslanbredun | 14:b3530522908e | 99 | if((currentTime - previousTime) >= 0.1) { |
ruslanbredun | 14:b3530522908e | 100 | previousTime = currentTime; |
ruslanbredun | 14:b3530522908e | 101 | |
ruslanbredun | 14:b3530522908e | 102 | for (int i = 0; i < sensorsFound; i++) { |
ruslanbredun | 14:b3530522908e | 103 | ds1820[i]->startConversion(); |
ruslanbredun | 14:b3530522908e | 104 | wait_ms(1); |
ruslanbredun | 14:b3530522908e | 105 | } |
ruslanbredun | 12:406f75196a12 | 106 | |
ruslanbredun | 14:b3530522908e | 107 | US_sensor_left.startMeasurement (); |
ruslanbredun | 14:b3530522908e | 108 | US1_data = US_sensor_left.getDistance_cm (); |
ruslanbredun | 14:b3530522908e | 109 | wait_ms(20); |
ruslanbredun | 14:b3530522908e | 110 | |
ruslanbredun | 14:b3530522908e | 111 | US_sensor_middle.startMeasurement (); |
ruslanbredun | 14:b3530522908e | 112 | US2_data = US_sensor_middle.getDistance_cm (); |
ruslanbredun | 14:b3530522908e | 113 | wait_ms(20); |
ruslanbredun | 14:b3530522908e | 114 | |
ruslanbredun | 14:b3530522908e | 115 | US_sensor_right.startMeasurement (); |
ruslanbredun | 14:b3530522908e | 116 | US3_data = US_sensor_right.getDistance_cm (); |
ruslanbredun | 14:b3530522908e | 117 | wait_ms(20); |
ruslanbredun | 14:b3530522908e | 118 | |
ruslanbredun | 14:b3530522908e | 119 | IR1_data = IR_sensor_left.checkObstacle (); |
ruslanbredun | 14:b3530522908e | 120 | IR2_data = IR_sensor_right.checkObstacle (); |
ruslanbredun | 14:b3530522908e | 121 | |
ruslanbredun | 14:b3530522908e | 122 | Lift_IR1 = Lift1.read(); |
ruslanbredun | 14:b3530522908e | 123 | Lift_IR2 = Lift2.read(); |
ruslanbredun | 14:b3530522908e | 124 | |
ruslanbredun | 14:b3530522908e | 125 | |
ruslanbredun | 14:b3530522908e | 126 | if (ds1820[0]->isPresent() ) { |
ruslanbredun | 14:b3530522908e | 127 | temp_one_value = ds1820[0]->read(); |
ruslanbredun | 14:b3530522908e | 128 | } |
ruslanbredun | 14:b3530522908e | 129 | if (ds1820[1]->isPresent() ) { |
ruslanbredun | 14:b3530522908e | 130 | temp_two_value = ds1820[1]->read(); |
ruslanbredun | 14:b3530522908e | 131 | } |
ommpy | 10:0b7f23df690a | 132 | } |
ruslanbredun | 12:406f75196a12 | 133 | |
ruslanbredun | 14:b3530522908e | 134 | Enc_left_data = Enc_left.getPosition(); |
ruslanbredun | 14:b3530522908e | 135 | Enc_right_data = Enc_right.getPosition(); |
ruslanbredun | 14:b3530522908e | 136 | |
ruslanbredun | 14:b3530522908e | 137 | Select1 = 1; |
ruslanbredun | 15:0f52feb640cf | 138 | RS1.printf ("%d\r\n", Enc_left_data);//, Enc_right_data); |
ruslanbredun | 14:b3530522908e | 139 | wait_ms(1); |
ruslanbredun | 14:b3530522908e | 140 | Select1 = 0; |
ruslanbredun | 12:406f75196a12 | 141 | |
ruslanbredun | 14:b3530522908e | 142 | if(sendFlag) { |
ruslanbredun | 12:406f75196a12 | 143 | Select2 = 1; |
ruslanbredun | 14:b3530522908e | 144 | 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)); |
ruslanbredun | 12:406f75196a12 | 145 | wait_ms(5); |
ruslanbredun | 12:406f75196a12 | 146 | sendFlag = false; |
ruslanbredun | 12:406f75196a12 | 147 | Select2 = 0; |
ruslanbredun | 14:b3530522908e | 148 | } |
ruslanbredun | 12:406f75196a12 | 149 | } |
ommpy | 6:a760ce6defbe | 150 | #endif |
ruslanbredun | 12:406f75196a12 | 151 | |
ruslanbredun | 12:406f75196a12 | 152 | #if TEST_REQUEST |
ruslanbredun | 12:406f75196a12 | 153 | |
ruslanbredun | 12:406f75196a12 | 154 | while (true) { |
ruslanbredun | 12:406f75196a12 | 155 | // if(RS1.readable()) { |
ruslanbredun | 12:406f75196a12 | 156 | // Select1 = 1; |
ruslanbredun | 12:406f75196a12 | 157 | // RS1.putc(RS1.getc()); |
ruslanbredun | 12:406f75196a12 | 158 | // wait_ms (1000); |
ruslanbredun | 12:406f75196a12 | 159 | // Select1 = 0; |
ruslanbredun | 12:406f75196a12 | 160 | // }else{ |
ruslanbredun | 12:406f75196a12 | 161 | Select1 = 1; |
ruslanbredun | 12:406f75196a12 | 162 | RS1.printf ("nothing \n"); |
ruslanbredun | 12:406f75196a12 | 163 | wait_ms (5); |
ruslanbredun | 12:406f75196a12 | 164 | Select1 = 0; |
ruslanbredun | 12:406f75196a12 | 165 | wait_ms (1000); |
ruslanbredun | 12:406f75196a12 | 166 | //} |
ruslanbredun | 12:406f75196a12 | 167 | } |
ruslanbredun | 12:406f75196a12 | 168 | |
ruslanbredun | 12:406f75196a12 | 169 | #endif |
ruslanbredun | 14:b3530522908e | 170 | |
ruslanbredun | 9:859bcb293e46 | 171 | } |