sef

Dependencies:   mbed

Fork of Bewegungen_mit_Sensor by kings

Committer:
EHess
Date:
Tue Mar 21 14:57:54 2017 +0000
Revision:
0:96f88638114b
Child:
1:d40ff07e2fe0
Hallo ka

Who changed what in which revision?

UserRevisionLine numberNew 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 }