Sensoren auslesen/umwandeln/codieren und State Maschine
Dependencies: mbed
Fork of StateMachine_1 by
Diff: main.cpp
- Revision:
- 4:91a9737e4821
- Parent:
- 2:a227732e1412
--- a/main.cpp Thu Apr 19 12:04:49 2018 +0000 +++ b/main.cpp Fri Apr 20 17:49:36 2018 +0000 @@ -1,75 +1,54 @@ -#include <mbed.h> -#include "EncoderCounter.h" -#include "Controller.h" -#include "IRSensor.h" +// Main zum Testen der IR Sensoren +//V04.18 +// V. Ahlers -// DigitalOut myled(LED1); +#include <mbed.h> +#include "IRSensor.h" +#include"StateMachine.h" -//DigitalOut led0(PC_8); -//DigitalOut led1(PC_6); -//DigitalOut led2(PB_12); -//DigitalOut led3(PA_7); -//DigitalOut led4(PC_0); -//DigitalOut led5(PC_9); -//AnalogIn distance(PB_1); -//DigitalOut enable(PC_1); -//DigitalOut bit0(PH_1); -//DigitalOut bit1(PC_2); -//DigitalOut bit2(PC_3); - -IRSensor irSensorF(PC_2); -IRSensor irSensorR(PC_3); -IRSensor irSensorL(PC_5); +AnalogIn IrRight(PC_3); +AnalogIn IrLeft (PC_5); +AnalogIn IrFront(PC_2); +float disR = 0; +float disL = 0; +float disF = 0; -BottomSensor lineDetector(RX/D0); - -DigitalOut enableMotorDriver(PB_2); -DigitalIn motorDriverFault(PB_14); -DigitalIn motorDriverWarning(PB_15); - -PwmOut pwmLeft(PA_9); -PwmOut pwmRight(PA_8); - -EncoderCounter counterLeft(PB_6, PB_7); -EncoderCounter counterRight(PA_6, PC_7); +float dis2R = 0; +float dis2L = 0; +float dis2F = 0; +int IrR = 0; +int IrL = 0; +int IrF = 0; +int caseDrive = 0; -Controller controller(pwmLeft, pwmRight, counterLeft, counterRight); +IRSensor iRSensor(IrRight, IrLeft, IrFront, dis2R, dis2L, dis2F); +StateMachine stateMachine(IrR, IrL, IrF); -int main() -{ + - controller.setDesiredSpeedLeft(150.0f); // Drehzahl in [rpm] - controller.setDesiredSpeedRight(-150.0f); - enable = 1; - enableMotorDriver = 1; // Schaltet den Leistungstreiber ein - +int main() { + + + printf("\n die Distanzen sind\n"); while(1) { - - myled =! myled; - - if (irSensorf.read() < 0.2f) led0 = 1; - else led0 = 0; + float disR = iRSensor.readR(); // Distanz in mm + float disL = iRSensor.readL(); + float disF = iRSensor.readF(); + dis2R = disR; + dis2L = disL; + dis2F = disF; + int IrR = iRSensor.codeR(); // min Distanz unterschritten = 1 + int IrL = iRSensor.codeL(); + int IrF = iRSensor.codeF(); + int caseDrive = stateMachine.drive(); //entscheidung welcher Drive Case - if (irSensorR.read() < 0.2f) led1 = 1; - else led1 = 0; - if (irSensorL.read() < 0.2f) led2 = 1; - else led2 = 0; - - //if (irSensor3.read() < 0.2f) led3 = 1; - //else led3 = 0; - - //if (irSensor4.read() < 0.2f) led4 = 1; - //else led4 = 0; - - //if (irSensor5.read() < 0.2f) led5 = 1; - //else led0 = 5; - - printf("iSumLeft: %f, iSumRight: %f, counterDiff; %d \n\r", controller.getIntegralLeft(), controller.getIntegralRight(), (counterLeft.read()+counterRight.read())); - - wait(0.2f); // 100 ms - + printf ("IR Right = %f \n", disR); + printf("IR Left = %f \n",disL); + printf("IR Front = %f\n",disF); + + wait (1.0); } -} +} \ No newline at end of file