Dependencies:   Farbsensor IRSensorLib PID_Control Servo mbed PixyLib

main.cpp

Committer:
ZHAW_Prometheus
Date:
2017-05-21
Revision:
14:bee8101aad45
Parent:
13:7ce78048b733
Child:
15:26dbcd6ff48d

File content as of revision 14:bee8101aad45:

#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);
//Berechnungsklassen
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(usrButton, 2);
Farbauswertung  farbauswertung(&SensorG, &SensorR, ServoAusw, ServoFoerder, userButton, 20, 40);
Fahren          fahren(enable, bit0, bit1, bit2, distance, enableMotorDriver, pwmLeft, pwmRight, pixy, pid, userButton);
LiftAnsteuerung lift(7, 1, ServoLift, userButton);


int main() 
{
    /*
    *Für Konsolenausgaben diese Zeilen aktivieren und in der While die dementsprechende Methode aufrufen.
    */
    //farbauswertung.setSerialOutput(&pc);
    //fahren.setSerialOutput(&pc);
    
    pid.setPIDValues( 0.001f, 0.001f, 0.00015f, 0.3f, -0.3f, 1000);
    fahren.fahrInit();    
    
    Ticker farbe;
    farbe.attach(&farbauswertung, &Farbauswertung::auswertung, 0.1);
    
    Ticker drive;
    drive.attach(&fahren, &Fahren::fahrRutine, 0.01);
    
    Ticker elevator;
    elevator.attach(&lift, &LiftAnsteuerung::steuerung, 2);
    
    Ticker inputUserButton;
    inputUserButton.attach(&userButton, &Button::setState, 1);
    
    
    
    while (1) {
        wait(100.0);
    }
}