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.
Main.cpp
00001 /* 00002 * Main.cpp 00003 * Copyright (c) 2020, ZHAW 00004 * All rights reserved. 00005 */ 00006 00007 #include <mbed.h> 00008 #include "IRSensor.h" 00009 #include "EncoderCounter.h" 00010 #include "Controller.h" 00011 #include "StateMachine.h" 00012 00013 int main() { 00014 00015 // initialise digital inputs and outputs 00016 00017 DigitalIn button(USER_BUTTON); 00018 00019 DigitalOut ledGreen(LED1); 00020 DigitalOut ledBlue(LED2); 00021 DigitalOut ledRed(LED3); 00022 00023 DigitalOut led0(PD_4); 00024 DigitalOut led1(PD_3); 00025 DigitalOut led2(PD_6); 00026 DigitalOut led3(PD_2); 00027 DigitalOut led4(PD_7); 00028 DigitalOut led5(PD_5); 00029 00030 // create distance sensor objects 00031 00032 AnalogIn distance(PA_0); 00033 DigitalOut enable(PG_1); 00034 DigitalOut bit0(PF_0); 00035 DigitalOut bit1(PF_1); 00036 DigitalOut bit2(PF_2); 00037 00038 enable = 1; 00039 00040 IRSensor irSensor0(distance, bit0, bit1, bit2, 0); 00041 IRSensor irSensor1(distance, bit0, bit1, bit2, 1); 00042 IRSensor irSensor2(distance, bit0, bit1, bit2, 2); 00043 IRSensor irSensor3(distance, bit0, bit1, bit2, 3); 00044 IRSensor irSensor4(distance, bit0, bit1, bit2, 4); 00045 IRSensor irSensor5(distance, bit0, bit1, bit2, 5); 00046 00047 // create motor controller objects 00048 00049 DigitalOut enableMotorDriver(PG_0); 00050 DigitalIn motorDriverFault(PD_1); 00051 DigitalIn motorDriverWarning(PD_0); 00052 00053 PwmOut pwmLeft(PF_9); 00054 PwmOut pwmRight(PF_8); 00055 00056 // create encoder counter objects 00057 00058 EncoderCounter counterLeft(PD_12, PD_13); 00059 EncoderCounter counterRight(PB_4, PC_7); 00060 00061 // create robot controller objects 00062 00063 Controller controller(pwmLeft, pwmRight, counterLeft, counterRight); 00064 StateMachine stateMachine(controller, enableMotorDriver, led0, led1, led2, led3, led4, led5, button, irSensor0, irSensor1, irSensor2, irSensor3, irSensor4, irSensor5); 00065 00066 // enter main loop 00067 00068 while (true) { 00069 00070 if (stateMachine.getState() == StateMachine::MOVE_FORWARD) { 00071 00072 ledGreen = 1; 00073 ledBlue = 0; 00074 ledRed = 0; 00075 00076 } else if ((stateMachine.getState() == StateMachine::TURN_LEFT) || (stateMachine.getState() == StateMachine::TURN_RIGHT)) { 00077 00078 ledGreen = 1; 00079 ledBlue = 1; 00080 ledRed = 0; 00081 00082 } else { 00083 00084 ledGreen = 0; 00085 ledBlue = 0; 00086 ledRed = 1; 00087 } 00088 00089 wait(0.1); 00090 } 00091 } 00092
Generated on Sat Jul 23 2022 17:01:00 by
