P1 Fertig

Dependencies:   mbed

Committer:
kueenste
Date:
Fri Feb 23 15:20:31 2018 +0000
Revision:
3:86f7471eaa79
Parent:
2:ff4efefe7a1f
ROME2 P1 Fertig

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kueenste 3:86f7471eaa79 1 // Praktikum 1 Fertig
kueenste 3:86f7471eaa79 2
kueenste 0:17b906055a44 3 #include "mbed.h"
kueenste 1:b87369992345 4 #include "IRSensor.h"
kueenste 2:ff4efefe7a1f 5 #include "Controller.h"
kueenste 0:17b906055a44 6
kueenste 1:b87369992345 7 // LEDs
kueenste 0:17b906055a44 8 DigitalOut myled(LED1);
kueenste 1:b87369992345 9 DigitalOut led0(PC_8);
kueenste 1:b87369992345 10 DigitalOut led1(PC_6);
kueenste 1:b87369992345 11 DigitalOut led2(PB_12);
kueenste 1:b87369992345 12 DigitalOut led3(PA_7);
kueenste 1:b87369992345 13 DigitalOut led4(PC_0);
kueenste 1:b87369992345 14 DigitalOut led5(PC_9);
kueenste 0:17b906055a44 15
kueenste 1:b87369992345 16 // Distanzmesser
kueenste 1:b87369992345 17 AnalogIn distance(PB_1); // Kreieren der Ein- und Ausgangsobjekte
kueenste 1:b87369992345 18 DigitalOut enable(PC_1);
kueenste 1:b87369992345 19 DigitalOut bit0(PH_1);
kueenste 1:b87369992345 20 DigitalOut bit1(PC_2);
kueenste 1:b87369992345 21 DigitalOut bit2(PC_3);
kueenste 1:b87369992345 22
kueenste 1:b87369992345 23 // Motoren
kueenste 1:b87369992345 24 DigitalOut enableMotorDriver(PB_2);
kueenste 1:b87369992345 25 DigitalIn motorDriverFault(PB_14);
kueenste 1:b87369992345 26 DigitalIn motorDriverWarning(PB_15);
kueenste 1:b87369992345 27 PwmOut pwmLeft(PA_8);
kueenste 1:b87369992345 28 PwmOut pwmRight(PA_9);
kueenste 1:b87369992345 29
kueenste 2:ff4efefe7a1f 30 // Motoren Drehzahlgeber
kueenste 2:ff4efefe7a1f 31 EncoderCounter counterLeft(PB_6, PB_7);
kueenste 2:ff4efefe7a1f 32 EncoderCounter counterRight(PA_6, PC_7);
kueenste 2:ff4efefe7a1f 33
kueenste 1:b87369992345 34 float d = 0;
kueenste 1:b87369992345 35
kueenste 1:b87369992345 36 IRSensor irSensor0(distance, bit0, bit1, bit2, 0); // Objekte kreieren
kueenste 1:b87369992345 37 IRSensor irSensor1(distance, bit0, bit1, bit2, 1);
kueenste 1:b87369992345 38 IRSensor irSensor2(distance, bit0, bit1, bit2, 2);
kueenste 1:b87369992345 39 IRSensor irSensor3(distance, bit0, bit1, bit2, 3);
kueenste 1:b87369992345 40 IRSensor irSensor4(distance, bit0, bit1, bit2, 4);
kueenste 1:b87369992345 41 IRSensor irSensor5(distance, bit0, bit1, bit2, 5);
kueenste 1:b87369992345 42
kueenste 2:ff4efefe7a1f 43 Controller controller(pwmLeft, pwmRight, counterLeft, counterRight);
kueenste 2:ff4efefe7a1f 44
kueenste 1:b87369992345 45 int main()
kueenste 1:b87369992345 46 {
kueenste 1:b87369992345 47
kueenste 1:b87369992345 48 enable = 1; // schaltet die Sensoren ein
kueenste 1:b87369992345 49
kueenste 2:ff4efefe7a1f 50
kueenste 2:ff4efefe7a1f 51 // MOTOR
kueenste 2:ff4efefe7a1f 52
kueenste 2:ff4efefe7a1f 53 pwmLeft.period(0.00005); // Setzt die Periode auf 50 μs
kueenste 2:ff4efefe7a1f 54 pwmRight.period(0.00005);
kueenste 2:ff4efefe7a1f 55 pwmLeft = 0.5; // Setzt die Duty-Cycle auf 50%
kueenste 2:ff4efefe7a1f 56 pwmRight = 0.5;
kueenste 2:ff4efefe7a1f 57 enableMotorDriver = 1; // Schaltet den Leistungstreiber ein
kueenste 2:ff4efefe7a1f 58
kueenste 2:ff4efefe7a1f 59
kueenste 1:b87369992345 60 /*
kueenste 1:b87369992345 61 bit0 = 0; // Wahl des Sensors mit dem Multiplexer (Sensor vorne)
kueenste 1:b87369992345 62 bit1 = 0;
kueenste 1:b87369992345 63 bit2 = 0;
kueenste 1:b87369992345 64 */
kueenste 1:b87369992345 65
kueenste 0:17b906055a44 66 while(1) {
kueenste 1:b87369992345 67 /*
kueenste 0:17b906055a44 68 myled = 1; // LED is ON
kueenste 0:17b906055a44 69 wait(0.2); // 200 ms
kueenste 0:17b906055a44 70 myled = 0; // LED is OFF
kueenste 1:b87369992345 71 wait(0.2); // 1 sec
kueenste 1:b87369992345 72
kueenste 1:b87369992345 73 led1 = 1; // LED is ON
kueenste 1:b87369992345 74 wait(0.2); // 200 ms
kueenste 1:b87369992345 75 led1 = 0; // LED is OFF
kueenste 1:b87369992345 76 wait(0.2); // 1 sec
kueenste 1:b87369992345 77
kueenste 1:b87369992345 78 led2 = 1; // LED is ON
kueenste 1:b87369992345 79 wait(0.2); // 200 ms
kueenste 1:b87369992345 80 led2 = 0; // LED is OFF
kueenste 1:b87369992345 81 wait(0.2); // 1 sec
kueenste 1:b87369992345 82
kueenste 1:b87369992345 83 led3 = 1; // LED is ON
kueenste 1:b87369992345 84 wait(0.2); // 200 ms
kueenste 1:b87369992345 85 led3 = 0; // LED is OFF
kueenste 1:b87369992345 86 wait(0.2); // 1 sec
kueenste 1:b87369992345 87
kueenste 1:b87369992345 88 led4 = 1; // LED is ON
kueenste 1:b87369992345 89 wait(0.2); // 200 ms
kueenste 1:b87369992345 90 led4 = 0; // LED is OFF
kueenste 1:b87369992345 91 wait(0.2); // 1 sec
kueenste 1:b87369992345 92
kueenste 1:b87369992345 93 led5 = 1; // LED is ON
kueenste 1:b87369992345 94 wait(0.2); // 200 ms
kueenste 1:b87369992345 95 led5 = 0; // LED is OFF
kueenste 1:b87369992345 96 wait(0.2); // 1 sec
kueenste 1:b87369992345 97 */
kueenste 1:b87369992345 98
kueenste 1:b87369992345 99 /*wait(0.5);
kueenste 1:b87369992345 100 d = -0.58f*sqrt(distance)+0.58f; // Lesen der Distanz in [m]
kueenste 1:b87369992345 101 printf("Mein Wert: %f\n",d);
kueenste 1:b87369992345 102 */
kueenste 2:ff4efefe7a1f 103
kueenste 2:ff4efefe7a1f 104 // Motoren drehen primitiv
kueenste 2:ff4efefe7a1f 105 //pwmLeft = 0.55; // Duty-Cycle von 55%
kueenste 2:ff4efefe7a1f 106 //pwmRight = 0.55;
kueenste 2:ff4efefe7a1f 107
kueenste 2:ff4efefe7a1f 108 // Motoren per Drehzahlregler
kueenste 2:ff4efefe7a1f 109 controller.setDesiredSpeedLeft(50.0f); // Drehzahl in [rpm]
kueenste 2:ff4efefe7a1f 110 controller.setDesiredSpeedRight(-50.0f);
kueenste 2:ff4efefe7a1f 111
kueenste 2:ff4efefe7a1f 112 // Ausgabe für Putty
kueenste 2:ff4efefe7a1f 113 printf("Speed aktuell links: %f, rechts: %f \r\n",controller.getSpeedLeft(),controller.getSpeedRight());
kueenste 1:b87369992345 114
kueenste 1:b87369992345 115
kueenste 1:b87369992345 116 float distance0 = irSensor0.read(); // gibt die Distanz in [m] zurueck
kueenste 1:b87369992345 117 float distance1 = irSensor1.read();
kueenste 1:b87369992345 118 float distance2 = irSensor2.read();
kueenste 1:b87369992345 119 float distance3 = irSensor3.read();
kueenste 1:b87369992345 120 float distance4 = irSensor4.read();
kueenste 1:b87369992345 121 float distance5 = irSensor5.read();
kueenste 2:ff4efefe7a1f 122
kueenste 1:b87369992345 123 led0 = 0;
kueenste 1:b87369992345 124 led1 = 0;
kueenste 1:b87369992345 125 led2 = 0;
kueenste 1:b87369992345 126 led3 = 0;
kueenste 1:b87369992345 127 led4 = 0;
kueenste 1:b87369992345 128 led5 = 0;
kueenste 2:ff4efefe7a1f 129
kueenste 2:ff4efefe7a1f 130
kueenste 1:b87369992345 131
kueenste 1:b87369992345 132 if(distance0 < 0.2f) {
kueenste 1:b87369992345 133 led0 = 1;
kueenste 2:ff4efefe7a1f 134 }
kueenste 1:b87369992345 135 if(distance1 < 0.2f) {
kueenste 1:b87369992345 136 led1 = 1;
kueenste 1:b87369992345 137 }
kueenste 1:b87369992345 138 if(distance2 < 0.2f) {
kueenste 1:b87369992345 139 led2 = 1;
kueenste 1:b87369992345 140 }
kueenste 1:b87369992345 141 if(distance3 < 0.2f) {
kueenste 1:b87369992345 142 led3 = 1;
kueenste 1:b87369992345 143 }
kueenste 1:b87369992345 144 if(distance4 < 0.2f) {
kueenste 1:b87369992345 145 led4 = 1;
kueenste 1:b87369992345 146 }
kueenste 1:b87369992345 147 if(distance5 < 0.2f) {
kueenste 1:b87369992345 148 led5 = 1;
kueenste 1:b87369992345 149 }
kueenste 2:ff4efefe7a1f 150
kueenste 1:b87369992345 151
kueenste 0:17b906055a44 152 }
kueenste 0:17b906055a44 153 }