Nicolae Marton / Mbed 2 deprecated TDP3_OOP

Dependencies:   mbed

Committer:
Nicolaemf
Date:
Thu Mar 14 12:31:39 2019 +0000
Revision:
7:b9c2097e5cb2
Parent:
6:b457f1e2fff8
correction of minor build bugs;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nicolaemf 0:a02a278513d9 1 #include <mbed.h>
Nicolaemf 7:b9c2097e5cb2 2 #include "L298_H.h"
Nicolaemf 1:a2ceed49374e 3 #include "IRSensor_H.h"
Nicolaemf 0:a02a278513d9 4
Nicolaemf 2:74d8b693bc62 5 /*
Nicolaemf 2:74d8b693bc62 6 Team Design Project 3 Group 1 : Create a Line Following Robot
Nicolaemf 0:a02a278513d9 7
Nicolaemf 2:74d8b693bc62 8 -----PINOUT-----
Nicolaemf 2:74d8b693bc62 9
Nicolaemf 2:74d8b693bc62 10 IR Sensor Pinout :
Nicolaemf 2:74d8b693bc62 11 - Left Sensor : PTC6
Nicolaemf 2:74d8b693bc62 12 - Middle Left Sensor : PTC5
Nicolaemf 2:74d8b693bc62 13 - Middle Sensor : PTC4
Nicolaemf 2:74d8b693bc62 14 - Middle Right Sensor : PTC3
Nicolaemf 2:74d8b693bc62 15 - Right Sensor : PTC0
Nicolaemf 2:74d8b693bc62 16
Nicolaemf 2:74d8b693bc62 17 Motor Left Control :
Nicolaemf 7:b9c2097e5cb2 18 - Motor Enable PWM : PTA12
Nicolaemf 6:b457f1e2fff8 19 - Backwards Dout : PTA4
Nicolaemf 6:b457f1e2fff8 20 - Forward Dout : PTA5
Nicolaemf 2:74d8b693bc62 21
Nicolaemf 4:645b5d648c64 22 Motor Right Control :
Nicolaemf 7:b9c2097e5cb2 23 - Motor Enable PWM : PTA13
Nicolaemf 6:b457f1e2fff8 24 - Backwards Dout : PTD5
Nicolaemf 6:b457f1e2fff8 25 - Forward Dout : PTD0
Nicolaemf 2:74d8b693bc62 26
Nicolaemf 2:74d8b693bc62 27 -----ARCHITECTURE-----
Nicolaemf 2:74d8b693bc62 28
Nicolaemf 2:74d8b693bc62 29 RobotControl:
Nicolaemf 2:74d8b693bc62 30 Class which controls the speed and Direction of the Robot
Nicolaemf 2:74d8b693bc62 31
Nicolaemf 2:74d8b693bc62 32 IRSensor :
Nicolaemf 2:74d8b693bc62 33 Class which deals with sampling the IR sensors and with the PID Calculations
Nicolaemf 2:74d8b693bc62 34 The sampling happens every 10 ms thanks to the IRsampling Ticker
Nicolaemf 2:74d8b693bc62 35
Nicolaemf 2:74d8b693bc62 36 */
Nicolaemf 2:74d8b693bc62 37
Nicolaemf 2:74d8b693bc62 38
Nicolaemf 2:74d8b693bc62 39
Nicolaemf 2:74d8b693bc62 40 Ticker IRsampling;
Nicolaemf 5:bb0bec710c91 41 Timer t;
Nicolaemf 5:bb0bec710c91 42 DigitalOut myled(LED_RED);
Nicolaemf 0:a02a278513d9 43
Nicolaemf 0:a02a278513d9 44 int main(){
Nicolaemf 0:a02a278513d9 45
Nicolaemf 2:74d8b693bc62 46
Nicolaemf 1:a2ceed49374e 47 bool toggleIR;
Nicolaemf 1:a2ceed49374e 48
Nicolaemf 5:bb0bec710c91 49 IRSensor IRSensor(PTC6, PTC5, PTC4, PTC3, PTC0, 0.27, 0.0, 0.0);
Nicolaemf 1:a2ceed49374e 50
Nicolaemf 2:74d8b693bc62 51 IRsampling.attach(callback(&IRSensor, &IRSensor::Sample), 0.01);
Nicolaemf 0:a02a278513d9 52
Nicolaemf 2:74d8b693bc62 53 //initialise the class twice, one controls the left part and the other the right
Nicolaemf 6:b457f1e2fff8 54 L298 controlLeft(PTA12,PTA4,PTA5);
Nicolaemf 6:b457f1e2fff8 55 L298 controlRight(PTA13,PTD5,PTD0);
Nicolaemf 0:a02a278513d9 56
Nicolaemf 5:bb0bec710c91 57 myled = 0;
Nicolaemf 5:bb0bec710c91 58
Nicolaemf 0:a02a278513d9 59
Nicolaemf 0:a02a278513d9 60
Nicolaemf 0:a02a278513d9 61 while(1){
Nicolaemf 1:a2ceed49374e 62
Nicolaemf 6:b457f1e2fff8 63 controlLeft.SetDirection(1);
Nicolaemf 6:b457f1e2fff8 64 controlRight.SetDirection(1);
Nicolaemf 5:bb0bec710c91 65
Nicolaemf 5:bb0bec710c91 66 controlLeft.SetSpeed(0.3);
Nicolaemf 5:bb0bec710c91 67 controlRight.SetSpeed(0.3);
Nicolaemf 5:bb0bec710c91 68
Nicolaemf 5:bb0bec710c91 69 myled =1;
Nicolaemf 5:bb0bec710c91 70
Nicolaemf 5:bb0bec710c91 71 wait(1);
Nicolaemf 5:bb0bec710c91 72
Nicolaemf 5:bb0bec710c91 73 controlLeft.SetDirection(1);
Nicolaemf 5:bb0bec710c91 74 controlRight.SetDirection(0);
Nicolaemf 5:bb0bec710c91 75
Nicolaemf 5:bb0bec710c91 76 controlLeft.SetSpeed(0.3);
Nicolaemf 5:bb0bec710c91 77 controlRight.SetSpeed(0.3);
Nicolaemf 5:bb0bec710c91 78
Nicolaemf 5:bb0bec710c91 79 myled =0;
Nicolaemf 5:bb0bec710c91 80
Nicolaemf 5:bb0bec710c91 81 wait(1);
Nicolaemf 5:bb0bec710c91 82
Nicolaemf 5:bb0bec710c91 83 controlLeft.SetDirection(0);
Nicolaemf 5:bb0bec710c91 84 controlRight.SetDirection(1);
Nicolaemf 5:bb0bec710c91 85
Nicolaemf 5:bb0bec710c91 86 controlLeft.SetSpeed(0.3);
Nicolaemf 5:bb0bec710c91 87 controlRight.SetSpeed(0.3);
Nicolaemf 5:bb0bec710c91 88
Nicolaemf 5:bb0bec710c91 89 myled = 1;
Nicolaemf 5:bb0bec710c91 90
Nicolaemf 5:bb0bec710c91 91 wait(1);
Nicolaemf 5:bb0bec710c91 92
Nicolaemf 6:b457f1e2fff8 93 controlLeft.SetDirection(0);
Nicolaemf 6:b457f1e2fff8 94 controlRight.SetDirection(0);
Nicolaemf 5:bb0bec710c91 95
Nicolaemf 5:bb0bec710c91 96 controlLeft.SetSpeed(0.3);
Nicolaemf 5:bb0bec710c91 97 controlRight.SetSpeed(0.3);
Nicolaemf 5:bb0bec710c91 98
Nicolaemf 5:bb0bec710c91 99 myled = 0;
Nicolaemf 5:bb0bec710c91 100
Nicolaemf 6:b457f1e2fff8 101 wait(1);
Nicolaemf 5:bb0bec710c91 102
Nicolaemf 6:b457f1e2fff8 103 /*
Nicolaemf 2:74d8b693bc62 104 //waits for an interrupt to occur, then performs all the calculations
Nicolaemf 1:a2ceed49374e 105 if(toggleIR != IRSensor.m_toggle){
Nicolaemf 2:74d8b693bc62 106
Nicolaemf 5:bb0bec710c91 107 t.start();
Nicolaemf 5:bb0bec710c91 108 IRSensor.WeightPID();
Nicolaemf 5:bb0bec710c91 109 IRSensor.CalculatePID();
Nicolaemf 5:bb0bec710c91 110 IRSensor.MotorControl();
Nicolaemf 2:74d8b693bc62 111
Nicolaemf 4:645b5d648c64 112 if(IRSensor.m_dirL != IRSensor.m_prevDirL) controlLeft.SetDirection(IRSensor.m_dirL);
Nicolaemf 4:645b5d648c64 113 if(IRSensor.m_dirR != IRSensor.m_prevDirR) controlRight.SetDirection(IRSensor.m_dirR);
Nicolaemf 4:645b5d648c64 114
Nicolaemf 5:bb0bec710c91 115 controlLeft.SetSpeed(fabs(IRSensor.m_speedL));
Nicolaemf 5:bb0bec710c91 116 controlRight.SetSpeed(fabs(IRSensor.m_speedR));
Nicolaemf 4:645b5d648c64 117
Nicolaemf 4:645b5d648c64 118 IRSensor.m_prevDirL = IRSensor.m_dirL;
Nicolaemf 4:645b5d648c64 119 IRSensor.m_prevDirR = IRSensor.m_dirR;
Nicolaemf 4:645b5d648c64 120
Nicolaemf 5:bb0bec710c91 121 t.stop();
Nicolaemf 5:bb0bec710c91 122 //printf("timer : %f \n", t.read());
Nicolaemf 5:bb0bec710c91 123 t.reset();
Nicolaemf 5:bb0bec710c91 124 //printf("rightSpeed : %f, leftSpeed : %f \r", IRSensor.m_speedL, IRSensor.m_speedR);
Nicolaemf 5:bb0bec710c91 125
Nicolaemf 5:bb0bec710c91 126
Nicolaemf 5:bb0bec710c91 127
Nicolaemf 2:74d8b693bc62 128 toggleIR = IRSensor.m_toggle;
Nicolaemf 6:b457f1e2fff8 129 }*/
Nicolaemf 5:bb0bec710c91 130
Nicolaemf 5:bb0bec710c91 131
Nicolaemf 3:54c41af9e119 132 }
Nicolaemf 0:a02a278513d9 133 }