Dependencies:   Farbsensor IRSensorLib PID_Control Servo mbed PixyLib

main.cpp

Committer:
ZHAW_Prometheus
Date:
2017-05-20
Revision:
10:10bcb7fee9a6
Parent:
9:b83994ef4b08
Child:
12:472b26872a42

File content as of revision 10:10bcb7fee9a6:

#include "mbed.h"
#include "cstdlib"
#include "IRSensor.h"
#include "Servo.h"
//#include "Pixy.h"
#include "Farbauswertung.h"
#include "Fahren.h"
#include "liftAnsteuerung.h"
#include "Pixy.h"
#include "PID_Control.h"
#include "Button.h"

/**
*Aus- und Eingänge initialisieren
*/
//Button
DigitalIn       usrButton(USER_BUTTON);

//Serielle Ports deklarieren
Serial          pc(USBTX,USBRX);
Serial          cam(PA_9, PA_10);

PID_Control     pid;

//IRSensoren
DigitalOut      enable(PC_1);
DigitalOut      bit0(PH_1);
DigitalOut      bit1(PC_2);
DigitalOut      bit2(PC_3);
AnalogIn        distance(PB_1);
//Motoren
DigitalOut      enableMotorDriver(PB_2);
PwmOut          pwmLeft(PA_8);
PwmOut          pwmRight(PA_9);
//LED's
DigitalOut      led0(PC_8);
DigitalOut      led1(PC_6);
DigitalOut      led5(PC_9);
DigitalOut      led3(PA_7);
//Farbauswertung
AnalogIn        SensorG(PA_0);
AnalogIn        SensorR(PA_1);
Servo           ServoAusw(PB_7);
Servo           ServoFoerder(PC_7);
//Lift
Servo           ServoLift(PB_6);
//Kamera
Pixy            pixy(cam);

//Robotersteuerung
Button          userButton(2, usrButton);
Farbauswertung  farbauswertung(&SensorG, &SensorR, &ServoAusw);
Fahren          fahren(&enable, &bit0, &bit1, &bit2, &distance, &enableMotorDriver, pwmLeft, pwmRight, pixy, pid, userButton);
LiftAnsteuerung lift(10, 1, &ServoLift);


int main() 
{
    //farbauswertung.setSerialOutput(&pc);
    //fahren.setSerialOutput(&pc);
    pid.setPIDValues( 0.001f, 0.001f, 0.00015f, 0.3f, -0.3f, 1000);
    
    //ServoLift = 1.2f; //1.2
    ServoFoerder = 0.1f; //0.1
    
    fahren.fahrInit();
    
    Ticker farbe;
    farbe.attach(&farbauswertung, &Farbauswertung::auswertung, 0.01);
    
    Ticker drive;
    drive.attach(&fahren, &Fahren::fahrRutine, 0.01);
    
    Ticker elevator;
    elevator.attach(&lift, &LiftAnsteuerung::steuerung, 0.1);
    
    Ticker inputUserButton;
    inputUserButton.attach(&userButton, &Button::setState, 1);
    
    
    
    while (1) {
        pc.printf("State Button: %d\n\r", userButton.getState());
        wait(5.0);
        
    }
}