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:
Thu Oct 26 16:10:36 2017 +0000
Revision:
4:c909ed06dc1f
Parent:
2:d172c9963f87
Child:
5:1ad4ca4ee9d8
add config file comment

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 0:5cefadfd5898 9
edy05 4:c909ed06dc1f 10 //ad config file
edy05 0:5cefadfd5898 11
edy05 2:d172c9963f87 12 //VARIABLES
edy05 2:d172c9963f87 13 uint16_t ppmInChannelsValue[CHANNELS];
edy05 2:d172c9963f87 14 volatile uint16_t distance = 0;
edy05 0:5cefadfd5898 15
edy05 0:5cefadfd5898 16 //FUNCTIONS
edy05 0:5cefadfd5898 17 void print_ppmIn(void);
edy05 2:d172c9963f87 18 void dist(int);
edy05 2:d172c9963f87 19 //HCSR04 sonic(p6, p7);
edy05 2:d172c9963f87 20 //_ppmRegen = new PpmRegen(_interruptPort, _roll, _pitch, _yaw, _throttle, _aux1, _aux2);
edy05 0:5cefadfd5898 21
edy05 0:5cefadfd5898 22 int main(){
edy05 2:d172c9963f87 23
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 2:d172c9963f87 28 serverThread.start(serverRun);
edy05 2:d172c9963f87 29 distanceThread.start(distanceRegulationThread);
edy05 2:d172c9963f87 30 //_sonic.startUpdates();
edy05 2:d172c9963f87 31
edy05 2:d172c9963f87 32 wait(1);
edy05 0:5cefadfd5898 33 while(1){
edy05 1:3a5a074b39e0 34 //print_ppmIn();
edy05 2:d172c9963f87 35 //_sonic.checkDistance();
edy05 2:d172c9963f87 36 //distance = _sonic.getCurrentDistance();
edy05 2:d172c9963f87 37 //distance = sonic.getDistance();
edy05 2:d172c9963f87 38 //pc.printf("Distance: %d \n\r", distance);
edy05 2:d172c9963f87 39 Thread::wait(100);
edy05 2:d172c9963f87 40
edy05 0:5cefadfd5898 41 }
edy05 0:5cefadfd5898 42
edy05 0:5cefadfd5898 43 }
edy05 0:5cefadfd5898 44
edy05 2:d172c9963f87 45
edy05 2:d172c9963f87 46 void dist(int distan)
edy05 2:d172c9963f87 47 {
edy05 2:d172c9963f87 48 //pc.printf("Distance: %d \n\r", distan);
edy05 2:d172c9963f87 49 distance = distan;
edy05 2:d172c9963f87 50 }
edy05 2:d172c9963f87 51
edy05 0:5cefadfd5898 52 void print_ppmIn(){
edy05 2:d172c9963f87 53 _ppmRegen->getAllChannels(ppmInChannelsValue);
edy05 2:d172c9963f87 54 for(uint8_t channel= 0; channel < CHANNELS; channel++){
edy05 0:5cefadfd5898 55 pc.printf("PPM In Channel %d: %d \n\r", channel, ppmInChannelsValue[channel]);
edy05 0:5cefadfd5898 56 }
edy05 0:5cefadfd5898 57 pc.printf("\n\r");
edy05 0:5cefadfd5898 58 }