ROME2 - TI / Mbed 2 deprecated ROME2 - Praktikum

Dependencies:   mbed

Committer:
solcager
Date:
Fri Mar 31 11:00:19 2017 +0000
Revision:
1:08ca9b208045
P3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
solcager 1:08ca9b208045 1 /*
solcager 1:08ca9b208045 2 * Main.cpp
solcager 1:08ca9b208045 3 * Copyright (c) 2017, ZHAW
solcager 1:08ca9b208045 4 * All rights reserved.
solcager 1:08ca9b208045 5 */
solcager 1:08ca9b208045 6
solcager 1:08ca9b208045 7 #include <cstdlib>
solcager 1:08ca9b208045 8 #include <mbed.h>
solcager 1:08ca9b208045 9 #include "IRSensor.h"
solcager 1:08ca9b208045 10 #include "EncoderCounter.h"
solcager 1:08ca9b208045 11 #include "Controller.h"
solcager 1:08ca9b208045 12 #include "StateMachine.h"
solcager 1:08ca9b208045 13
solcager 1:08ca9b208045 14 using namespace std;
solcager 1:08ca9b208045 15
solcager 1:08ca9b208045 16 /**
solcager 1:08ca9b208045 17 * This is the main program of the mobile robot control software.
solcager 1:08ca9b208045 18 */
solcager 1:08ca9b208045 19 int main() {
solcager 1:08ca9b208045 20
solcager 1:08ca9b208045 21 // create and initialize miscellaneous periphery objects
solcager 1:08ca9b208045 22
solcager 1:08ca9b208045 23 DigitalOut led(LED1);
solcager 1:08ca9b208045 24 DigitalIn button(USER_BUTTON);
solcager 1:08ca9b208045 25
solcager 1:08ca9b208045 26 DigitalOut led0(PC_8);
solcager 1:08ca9b208045 27 DigitalOut led1(PC_6);
solcager 1:08ca9b208045 28 DigitalOut led2(PB_12);
solcager 1:08ca9b208045 29 DigitalOut led3(PA_7);
solcager 1:08ca9b208045 30 DigitalOut led4(PC_0);
solcager 1:08ca9b208045 31 DigitalOut led5(PC_9);
solcager 1:08ca9b208045 32
solcager 1:08ca9b208045 33 // create distance sensor objects
solcager 1:08ca9b208045 34
solcager 1:08ca9b208045 35 DigitalOut enableIRSensors(PC_1);
solcager 1:08ca9b208045 36 enableIRSensors = 1;
solcager 1:08ca9b208045 37
solcager 1:08ca9b208045 38 AnalogIn distance(PB_1);
solcager 1:08ca9b208045 39 DigitalOut bit0(PH_1);
solcager 1:08ca9b208045 40 DigitalOut bit1(PC_2);
solcager 1:08ca9b208045 41 DigitalOut bit2(PC_3);
solcager 1:08ca9b208045 42
solcager 1:08ca9b208045 43 IRSensor irSensor0(distance, bit0, bit1, bit2, 0);
solcager 1:08ca9b208045 44 IRSensor irSensor1(distance, bit0, bit1, bit2, 1);
solcager 1:08ca9b208045 45 IRSensor irSensor2(distance, bit0, bit1, bit2, 2);
solcager 1:08ca9b208045 46 IRSensor irSensor3(distance, bit0, bit1, bit2, 3);
solcager 1:08ca9b208045 47 IRSensor irSensor4(distance, bit0, bit1, bit2, 4);
solcager 1:08ca9b208045 48 IRSensor irSensor5(distance, bit0, bit1, bit2, 5);
solcager 1:08ca9b208045 49
solcager 1:08ca9b208045 50 // create motor control objects
solcager 1:08ca9b208045 51
solcager 1:08ca9b208045 52 DigitalOut enableMotorDriver(PB_2);
solcager 1:08ca9b208045 53 DigitalIn motorDriverFault(PB_14);
solcager 1:08ca9b208045 54 DigitalIn motorDriverWarning(PB_15);
solcager 1:08ca9b208045 55
solcager 1:08ca9b208045 56 PwmOut pwmLeft(PA_8);
solcager 1:08ca9b208045 57 PwmOut pwmRight(PA_9);
solcager 1:08ca9b208045 58
solcager 1:08ca9b208045 59 EncoderCounter counterLeft(PB_6, PB_7);
solcager 1:08ca9b208045 60 EncoderCounter counterRight(PA_6, PC_7);
solcager 1:08ca9b208045 61
solcager 1:08ca9b208045 62 // create robot controller objects
solcager 1:08ca9b208045 63
solcager 1:08ca9b208045 64 Controller controller(pwmLeft, pwmRight, counterLeft, counterRight);
solcager 1:08ca9b208045 65 StateMachine stateMachine(controller, enableMotorDriver, led0, led1, led2, led3, led4, led5, button, irSensor0, irSensor1, irSensor2, irSensor3, irSensor4, irSensor5);
solcager 1:08ca9b208045 66
solcager 1:08ca9b208045 67 // enter main loop
solcager 1:08ca9b208045 68
solcager 1:08ca9b208045 69 while (true) {
solcager 1:08ca9b208045 70
solcager 1:08ca9b208045 71 led = !led;
solcager 1:08ca9b208045 72
solcager 1:08ca9b208045 73 wait((stateMachine.getState() != StateMachine::ROBOT_OFF) ? 0.1f : 0.2f);
solcager 1:08ca9b208045 74 }
solcager 1:08ca9b208045 75 }
solcager 1:08ca9b208045 76