Zürcher Eliteeinheit / Mbed 2 deprecated ROME5

Dependencies:   mbed

Committer:
Appalco
Date:
Fri May 11 13:35:55 2018 +0000
Revision:
1:a1a7c556e96a
Parent:
0:497d7f448d3e
first sketch; found beacon but too many of them

Who changed what in which revision?

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