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
diff -r 0c8440955d31 -r 025d9a617769 main.cpp
--- 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