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

Committer:
edy05
Date:
Fri Oct 27 10:30:06 2017 +0000
Revision:
11:002927b2675d
Parent:
9:86a5af9935b1
Child:
12:18b31682dfe9
Child:
25:69190c222dbf
Updated mbed, added function for writint errorLogs - not tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edy05 0:5cefadfd5898 1 #include "mbed.h"
edy05 2:d172c9963f87 2 #include "rtos.h"
edy05 2:d172c9963f87 3 #include "hardware.h"
edy05 2:d172c9963f87 4 #include "Server.h"
edy05 1:3a5a074b39e0 5 #include "PpmRegen.h"
edy05 2:d172c9963f87 6 #include "distanceRegulation.h"
edy05 2:d172c9963f87 7 #include "hcsr04.h"
edy05 2:d172c9963f87 8 #include "PID.h"
edy05 8:b5128641d4cf 9 #include "ConfigFile.h"
edy05 0:5cefadfd5898 10
edy05 8:b5128641d4cf 11 //TEMP
edy05 11:002927b2675d 12
edy05 0:5cefadfd5898 13
edy05 2:d172c9963f87 14 //VARIABLES
edy05 2:d172c9963f87 15 uint16_t ppmInChannelsValue[CHANNELS];
edy05 2:d172c9963f87 16 volatile uint16_t distance = 0;
edy05 0:5cefadfd5898 17
edy05 0:5cefadfd5898 18 //FUNCTIONS
edy05 0:5cefadfd5898 19 void print_ppmIn(void);
edy05 0:5cefadfd5898 20
edy05 0:5cefadfd5898 21 int main(){
edy05 2:d172c9963f87 22
edy05 3:6c9f80f5e865 23 // INITIALIZE CLASSES
edy05 2:d172c9963f87 24 _ppmRegen = new PpmRegen(_interruptPort);
edy05 2:d172c9963f87 25 _sonic = new HCSR04(p29, p30);
edy05 2:d172c9963f87 26 _groundDistance = new PID(10, 0, 0, 2);
edy05 1:3a5a074b39e0 27
edy05 3:6c9f80f5e865 28 // STARTING THREADS
edy05 2:d172c9963f87 29 serverThread.start(serverRun);
edy05 2:d172c9963f87 30 distanceThread.start(distanceRegulationThread);
edy05 2:d172c9963f87 31
edy05 2:d172c9963f87 32 wait(1);
edy05 3:6c9f80f5e865 33
edy05 0:5cefadfd5898 34 while(1){
edy05 3:6c9f80f5e865 35 Thread::wait(osWaitForever);
edy05 0:5cefadfd5898 36 }
edy05 0:5cefadfd5898 37
edy05 0:5cefadfd5898 38 }
edy05 0:5cefadfd5898 39
edy05 2:d172c9963f87 40
edy05 0:5cefadfd5898 41 void print_ppmIn(){
edy05 2:d172c9963f87 42 _ppmRegen->getAllChannels(ppmInChannelsValue);
edy05 2:d172c9963f87 43 for(uint8_t channel= 0; channel < CHANNELS; channel++){
edy05 0:5cefadfd5898 44 pc.printf("PPM In Channel %d: %d \n\r", channel, ppmInChannelsValue[channel]);
edy05 0:5cefadfd5898 45 }
edy05 0:5cefadfd5898 46 pc.printf("\n\r");
edy05 0:5cefadfd5898 47 }