Nim leo niiiim

Committer:
Kiwicjam
Date:
Fri May 11 12:21:19 2018 +0000
Revision:
0:da791f233257
start of rome2 p5;

Who changed what in which revision?

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