Gugus
Dependencies: mbed
main.cpp@0:96f88638114b, 2017-03-21 (annotated)
- Committer:
- EHess
- Date:
- Tue Mar 21 14:57:54 2017 +0000
- Revision:
- 0:96f88638114b
Hallo ka
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
EHess | 0:96f88638114b | 1 | #include "mbed.h" |
EHess | 0:96f88638114b | 2 | #include "IRSensor.h" |
EHess | 0:96f88638114b | 3 | |
EHess | 0:96f88638114b | 4 | //E. Hess |
EHess | 0:96f88638114b | 5 | //Robotterbewegungen |
EHess | 0:96f88638114b | 6 | |
EHess | 0:96f88638114b | 7 | DigitalOut led(LED1); |
EHess | 0:96f88638114b | 8 | |
EHess | 0:96f88638114b | 9 | //Erstellt In- / Outputs |
EHess | 0:96f88638114b | 10 | AnalogIn distance(PB_1); |
EHess | 0:96f88638114b | 11 | DigitalOut enable(PC_1); |
EHess | 0:96f88638114b | 12 | DigitalOut bit0(PH_1); |
EHess | 0:96f88638114b | 13 | DigitalOut bit1(PC_2); |
EHess | 0:96f88638114b | 14 | DigitalOut bit2(PC_3); |
EHess | 0:96f88638114b | 15 | IRSensor sensors[6]; //-> Was |
EHess | 0:96f88638114b | 16 | |
EHess | 0:96f88638114b | 17 | //LED Indikatoren rund um Roboter |
EHess | 0:96f88638114b | 18 | DigitalOut leds[] = { PC_8, PC_6, PB_12, PA_7, PC_0, PC_9 }; |
EHess | 0:96f88638114b | 19 | |
EHess | 0:96f88638114b | 20 | //Timer-Objekt für LED- und Distanzsensor |
EHess | 0:96f88638114b | 21 | Ticker t1; |
EHess | 0:96f88638114b | 22 | |
EHess | 0:96f88638114b | 23 | //Motoren |
EHess | 0:96f88638114b | 24 | DigitalOut enableMotorDriver(PB_2); //Erstellt das Objekt |
EHess | 0:96f88638114b | 25 | PwmOut pwmL(PA_8); |
EHess | 0:96f88638114b | 26 | PwmOut pwmR(PA_9); |
EHess | 0:96f88638114b | 27 | |
EHess | 0:96f88638114b | 28 | //DistanzLEDs ->Was |
EHess | 0:96f88638114b | 29 | void ledDistance(){ |
EHess | 0:96f88638114b | 30 | for( int ii = 0; ii<6; ++ii) |
EHess | 0:96f88638114b | 31 | sensors[ii]< 0.1f ? leds[ii] = 1 : leds[ii] = 0; |
EHess | 0:96f88638114b | 32 | } |
EHess | 0:96f88638114b | 33 | |
EHess | 0:96f88638114b | 34 | //Blinkt beim Start und startet die DistanzLEDs |
EHess | 0:96f88638114b | 35 | void ledShow(){ |
EHess | 0:96f88638114b | 36 | static int timer = 0; |
EHess | 0:96f88638114b | 37 | for( int ii = 0; ii<6; ++ii) |
EHess | 0:96f88638114b | 38 | leds[ii] = !leds[ii]; |
EHess | 0:96f88638114b | 39 | |
EHess | 0:96f88638114b | 40 | //Beendet den Ticker und startet die DistanzLED-Show |
EHess | 0:96f88638114b | 41 | if( ++timer > 10) { |
EHess | 0:96f88638114b | 42 | t1.detach(); |
EHess | 0:96f88638114b | 43 | t1.attach( &ledDistance, 0.01f ); |
EHess | 0:96f88638114b | 44 | } |
EHess | 0:96f88638114b | 45 | } |
EHess | 0:96f88638114b | 46 | |
EHess | 0:96f88638114b | 47 | int main() |
EHess | 0:96f88638114b | 48 | { |
EHess | 0:96f88638114b | 49 | pwmL.period(0.00005f); // Setzt die Periode auf 50 μs -> f speichert float anstatt double (schneller) |
EHess | 0:96f88638114b | 50 | pwmR.period(0.00005f); |
EHess | 0:96f88638114b | 51 | pwmL = 0.5f; // Setzt die Duty-Cycle auf 50% |
EHess | 0:96f88638114b | 52 | pwmR = 0.5f; |
EHess | 0:96f88638114b | 53 | enableMotorDriver = 1; |
EHess | 0:96f88638114b | 54 | |
EHess | 0:96f88638114b | 55 | t1.attach( &ledShow, 0.05f ); //->Was |
EHess | 0:96f88638114b | 56 | |
EHess | 0:96f88638114b | 57 | //Initialisiert Distanzsensoren |
EHess | 0:96f88638114b | 58 | for( int ii = 0; ii<6; ++ii) |
EHess | 0:96f88638114b | 59 | sensors[ii].init(&distance, &bit0, &bit1, &bit2, ii); |
EHess | 0:96f88638114b | 60 | |
EHess | 0:96f88638114b | 61 | enable = 1; |
EHess | 0:96f88638114b | 62 | |
EHess | 0:96f88638114b | 63 | while(1) { |
EHess | 0:96f88638114b | 64 | wait( 0.2f ); |
EHess | 0:96f88638114b | 65 | if(sensors[0].read() < 0.2f){ |
EHess | 0:96f88638114b | 66 | pwmL = 0.55f; |
EHess | 0:96f88638114b | 67 | pwmR = 0.55f; |
EHess | 0:96f88638114b | 68 | } |
EHess | 0:96f88638114b | 69 | else{ |
EHess | 0:96f88638114b | 70 | pwmL = 0.6f; |
EHess | 0:96f88638114b | 71 | pwmR = 0.4f; |
EHess | 0:96f88638114b | 72 | } |
EHess | 0:96f88638114b | 73 | //float x = sensor[0]; |
EHess | 0:96f88638114b | 74 | } |
EHess | 0:96f88638114b | 75 | } |