rome2_p6 imported

Dependencies:   mbed

Committer:
Appalco
Date:
Fri May 18 12:05:32 2018 +0000
Revision:
0:351a2fb21235
Child:
1:4b956ba45704
p6 imported;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Appalco 0:351a2fb21235 1 /*
Appalco 0:351a2fb21235 2 * Main.cpp
Appalco 0:351a2fb21235 3 * Copyright (c) 2018, ZHAW
Appalco 0:351a2fb21235 4 * All rights reserved.
Appalco 0:351a2fb21235 5 */
Appalco 0:351a2fb21235 6
Appalco 0:351a2fb21235 7 #include <cstdlib>
Appalco 0:351a2fb21235 8 #include <mbed.h>
Appalco 0:351a2fb21235 9 #include "EncoderCounter.h"
Appalco 0:351a2fb21235 10 #include "IRSensor.h"
Appalco 0:351a2fb21235 11 #include "IMU.h"
Appalco 0:351a2fb21235 12 #include "LIDAR.h"
Appalco 0:351a2fb21235 13 #include "Controller.h"
Appalco 0:351a2fb21235 14 #include "StateMachine.h"
Appalco 0:351a2fb21235 15 #include "SerialServer.h"
Appalco 0:351a2fb21235 16
Appalco 0:351a2fb21235 17 int main() {
Appalco 0:351a2fb21235 18
Appalco 0:351a2fb21235 19 // create miscellaneous periphery objects
Appalco 0:351a2fb21235 20
Appalco 0:351a2fb21235 21 DigitalOut led(LED1);
Appalco 0:351a2fb21235 22 DigitalIn button(USER_BUTTON);
Appalco 0:351a2fb21235 23
Appalco 0:351a2fb21235 24 DigitalOut led0(PC_8);
Appalco 0:351a2fb21235 25 DigitalOut led1(PC_6);
Appalco 0:351a2fb21235 26 DigitalOut led2(PB_12);
Appalco 0:351a2fb21235 27 DigitalOut led3(PA_7);
Appalco 0:351a2fb21235 28 DigitalOut led4(PC_0);
Appalco 0:351a2fb21235 29 DigitalOut led5(PC_9);
Appalco 0:351a2fb21235 30
Appalco 0:351a2fb21235 31 // create motor control objects
Appalco 0:351a2fb21235 32
Appalco 0:351a2fb21235 33 DigitalOut enableMotorDriver(PB_2);
Appalco 0:351a2fb21235 34 DigitalIn motorDriverFault(PB_14);
Appalco 0:351a2fb21235 35 DigitalIn motorDriverWarning(PB_15);
Appalco 0:351a2fb21235 36
Appalco 0:351a2fb21235 37 PwmOut pwmLeft(PA_8);
Appalco 0:351a2fb21235 38 PwmOut pwmRight(PA_9);
Appalco 0:351a2fb21235 39
Appalco 0:351a2fb21235 40 EncoderCounter counterLeft(PB_6, PB_7);
Appalco 0:351a2fb21235 41 EncoderCounter counterRight(PA_6, PC_7);
Appalco 0:351a2fb21235 42
Appalco 0:351a2fb21235 43 // create distance sensor objects
Appalco 0:351a2fb21235 44
Appalco 0:351a2fb21235 45 DigitalOut enableIRSensors(PC_1);
Appalco 0:351a2fb21235 46 enableIRSensors = 1;
Appalco 0:351a2fb21235 47
Appalco 0:351a2fb21235 48 AnalogIn distance(PB_1);
Appalco 0:351a2fb21235 49 DigitalOut bit0(PH_1);
Appalco 0:351a2fb21235 50 DigitalOut bit1(PC_2);
Appalco 0:351a2fb21235 51 DigitalOut bit2(PC_3);
Appalco 0:351a2fb21235 52
Appalco 0:351a2fb21235 53 IRSensor irSensor0(distance, bit0, bit1, bit2, 0);
Appalco 0:351a2fb21235 54 IRSensor irSensor1(distance, bit0, bit1, bit2, 1);
Appalco 0:351a2fb21235 55 IRSensor irSensor2(distance, bit0, bit1, bit2, 2);
Appalco 0:351a2fb21235 56 IRSensor irSensor3(distance, bit0, bit1, bit2, 3);
Appalco 0:351a2fb21235 57 IRSensor irSensor4(distance, bit0, bit1, bit2, 4);
Appalco 0:351a2fb21235 58 IRSensor irSensor5(distance, bit0, bit1, bit2, 5);
Appalco 0:351a2fb21235 59
Appalco 0:351a2fb21235 60 // create LIDAR object
Appalco 0:351a2fb21235 61
Appalco 0:351a2fb21235 62 PwmOut pwm(PA_10);
Appalco 0:351a2fb21235 63 pwm.period(0.00005f);
Appalco 0:351a2fb21235 64 pwm.write(0.5f); // 50% duty-cycle
Appalco 0:351a2fb21235 65
Appalco 0:351a2fb21235 66 RawSerial uart(PA_0, PA_1);
Appalco 0:351a2fb21235 67
Appalco 0:351a2fb21235 68 LIDAR lidar(uart);
Appalco 0:351a2fb21235 69
Appalco 0:351a2fb21235 70 // create robot controller objects
Appalco 0:351a2fb21235 71
Appalco 0:351a2fb21235 72 Controller controller(pwmLeft, pwmRight, counterLeft, counterRight);
Appalco 0:351a2fb21235 73 StateMachine stateMachine(controller, enableMotorDriver, led0, led1, led2, led3, led4, led5, button, irSensor0, irSensor1, irSensor2, irSensor3, irSensor4, irSensor5);
Appalco 0:351a2fb21235 74
Appalco 0:351a2fb21235 75 // create serial server object
Appalco 0:351a2fb21235 76
Appalco 0:351a2fb21235 77 RawSerial serial(PB_10, PC_5);
Appalco 0:351a2fb21235 78 serial.baud(9600);
Appalco 0:351a2fb21235 79 serial.format(8, SerialBase::None, 1);
Appalco 0:351a2fb21235 80
Appalco 0:351a2fb21235 81 DigitalOut reset(PB_3);
Appalco 0:351a2fb21235 82 DigitalOut modes1(PB_4);
Appalco 0:351a2fb21235 83
Appalco 0:351a2fb21235 84 modes1 = 0;
Appalco 0:351a2fb21235 85
Appalco 0:351a2fb21235 86 reset = 1; wait(0.1f);
Appalco 0:351a2fb21235 87 reset = 0; wait(0.1f);
Appalco 0:351a2fb21235 88 reset = 1; wait(0.1f);
Appalco 0:351a2fb21235 89
Appalco 0:351a2fb21235 90 SerialServer serialServer(serial, lidar, controller);
Appalco 0:351a2fb21235 91
Appalco 0:351a2fb21235 92 while (true) {
Appalco 0:351a2fb21235 93
Appalco 0:351a2fb21235 94 led = !led; // toggle led
Appalco 0:351a2fb21235 95
Appalco 0:351a2fb21235 96 wait(0.2f); // wait for 200 ms
Appalco 0:351a2fb21235 97
Appalco 0:351a2fb21235 98 lidar.lookForBeacon();
Appalco 0:351a2fb21235 99
Appalco 0:351a2fb21235 100 // bitte Lagekorrektur implementieren!
Appalco 0:351a2fb21235 101 }
Appalco 0:351a2fb21235 102 }
Appalco 0:351a2fb21235 103