St Knz
/
ROME2_P1_Fertig
P1 Fertig
main.cpp@3:86f7471eaa79, 2018-02-23 (annotated)
- 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?
User | Revision | Line number | New 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 | } |