Regenerating PPM signal based on distances from ultrasonic sensors, ESP8266 for connectin via wifi. Autonomous quadcopter behaviour, autonomou height holding. Flying direction based on front and back ultrasonic sensors.

Dependencies:   ConfigFile HCSR04 PID PPM2 mbed-rtos mbed

main.cpp

Committer:
edy05
Date:
2018-01-21
Branch:
DistanceRegulation
Revision:
30:4d1b3926a3cc
Parent:
27:5956d5e3ff63

File content as of revision 30:4d1b3926a3cc:

#include "mbed.h"
#include "rtos.h"
#include "hardware.h"
#include "Server.h"
#include "PpmRegen.h"
//#include "distanceRegulation.h"
#include "altitudeRegulation.h"
#include "ms5611Thread.h"
#include "hcsr04.h"
#include "PID.h"
#include "ConfigFile.h"
#include "ms5611.h"

//TEMP


//VARIABLES
uint16_t ppmInChannelsValue[CHANNELS];
volatile uint16_t distance = 0;

//FUNCTIONS
void print_ppmIn(void);

//RtosTimer distanceRegulation(distanceRegulationTask, osTimerPeriodic,  (void *)0);
float currentAltitude = 0.0;

int main(){
    pc.baud(115200);
    
    // INITIALIZE CLASSES
    _ppmRegen = new PpmRegen(_interruptPort);
    //_sonic = new HCSR04(p29, p30);
    _groundDistance = new PID(0, 0, 0, 0.005);
    
    // STARTING THREADS
    serverThread.start(serverRun);
    serverThread.set_priority(osPriorityLow);
    //_distanceThread = new Thread(distanceRegulationThread);
    //_distanceThread->set_priority(osPriorityRealtime);
    
    ms.cmd_reset();
    _ms5611Thread = new Thread(ms5611Thread);
    _ms5611Thread->set_priority(osPriorityHigh);
    
    _altitudeThread = new Thread(altitudeRegulationThread);
    _altitudeThread->set_priority(osPriorityRealtime);
    
    
    while(1){

        Thread::wait(osWaitForever);
    }
        
}


void print_ppmIn(){
    _ppmRegen->getAllChannels(ppmInChannelsValue);
    for(uint8_t channel= 0; channel < CHANNELS; channel++){
        pc.printf("PPM In Channel %d: %d \n\r", channel, ppmInChannelsValue[channel]);
    }
    pc.printf("\n\r");
}