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

Dependencies:   mbed Watchdog stm32-sensor-base2

Committer:
ruslanbredun
Date:
Wed Jan 20 11:18:20 2021 +0000
Revision:
17:0c8440955d31
Parent:
15:0f52feb640cf
Child:
18:025d9a617769
add 2nd encoder;

Who changed what in which revision?

UserRevisionLine numberNew 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 17:0c8440955d31 135 wait_ms(3);
ruslanbredun 14:b3530522908e 136 Enc_right_data = Enc_right.getPosition();
ruslanbredun 17:0c8440955d31 137 wait_ms(3);
ruslanbredun 14:b3530522908e 138
ruslanbredun 14:b3530522908e 139 Select1 = 1;
ruslanbredun 17:0c8440955d31 140 RS1.printf ("%d\r\n", Enc_left_data), Enc_right_data);
ruslanbredun 17:0c8440955d31 141 wait_ms(3);
ruslanbredun 14:b3530522908e 142 Select1 = 0;
ruslanbredun 17:0c8440955d31 143 if(US2_data < 100){
ruslanbredun 17:0c8440955d31 144 Select2 = 1;
ruslanbredun 17:0c8440955d31 145 RS2.printf ("Left Obstacle\r\n");
ruslanbredun 17:0c8440955d31 146 wait_ms(200);
ruslanbredun 17:0c8440955d31 147 Select2 = 0;
ruslanbredun 17:0c8440955d31 148 }
ruslanbredun 17:0c8440955d31 149 if(US3_data < 100){
ruslanbredun 17:0c8440955d31 150 Select2 = 1;
ruslanbredun 17:0c8440955d31 151 RS2.printf ("Right Obstacle\r\n");
ruslanbredun 17:0c8440955d31 152 wait_ms(200);
ruslanbredun 17:0c8440955d31 153 Select2 = 0;
ruslanbredun 17:0c8440955d31 154 }
ruslanbredun 14:b3530522908e 155 if(sendFlag) {
ruslanbredun 12:406f75196a12 156 Select2 = 1;
ruslanbredun 17:0c8440955d31 157 //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 158 wait_ms(5);
ruslanbredun 12:406f75196a12 159 sendFlag = false;
ruslanbredun 12:406f75196a12 160 Select2 = 0;
ruslanbredun 14:b3530522908e 161 }
ruslanbredun 12:406f75196a12 162 }
ommpy 6:a760ce6defbe 163 #endif
ruslanbredun 12:406f75196a12 164
ruslanbredun 12:406f75196a12 165 #if TEST_REQUEST
ruslanbredun 12:406f75196a12 166
ruslanbredun 12:406f75196a12 167 while (true) {
ruslanbredun 12:406f75196a12 168 // if(RS1.readable()) {
ruslanbredun 12:406f75196a12 169 // Select1 = 1;
ruslanbredun 12:406f75196a12 170 // RS1.putc(RS1.getc());
ruslanbredun 12:406f75196a12 171 // wait_ms (1000);
ruslanbredun 12:406f75196a12 172 // Select1 = 0;
ruslanbredun 12:406f75196a12 173 // }else{
ruslanbredun 12:406f75196a12 174 Select1 = 1;
ruslanbredun 12:406f75196a12 175 RS1.printf ("nothing \n");
ruslanbredun 12:406f75196a12 176 wait_ms (5);
ruslanbredun 12:406f75196a12 177 Select1 = 0;
ruslanbredun 12:406f75196a12 178 wait_ms (1000);
ruslanbredun 12:406f75196a12 179 //}
ruslanbredun 12:406f75196a12 180 }
ruslanbredun 12:406f75196a12 181
ruslanbredun 12:406f75196a12 182 #endif
ruslanbredun 14:b3530522908e 183
ruslanbredun 9:859bcb293e46 184 }