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
hardware.h
- Committer:
- edy05
- Date:
- 2017-10-27
- Branch:
- DistanceRegulation
- Revision:
- 14:076ef843e1ba
- Parent:
- 13:33024b5880b3
- Child:
- 15:9cdf757269fb
File content as of revision 14:076ef843e1ba:
#ifndef HARDWARE_H #define HARDWARE_H #include "mbed.h" #include "PpmRegen.h" #include "PID.h" #include "hcsr04.h" #include "ConfigFile.h" void loadConfigFile(void); void writeSettingsToConfig(void); void writeErrorLog(char *message); void ConvertToCharArray(float number); void ConvertToCharArray(int number); Serial pc(USBTX, USBRX); // tx, rx PID* _groundDistance; HCSR04* _sonic; PpmRegen* _ppmRegen; ConfigFile _configFile; LocalFileSystem local("local"); Thread serverThread; Thread distanceThread; InterruptIn* _interruptPort = new InterruptIn(p28); PwmOut* _roll = new PwmOut(p21); PwmOut* _pitch = new PwmOut(p22); PwmOut* _throttle = new PwmOut(p23); PwmOut* _yaw = new PwmOut(p24); PwmOut* _aux1 = new PwmOut(p25); PwmOut* _aux2 = new PwmOut(p26); char* _str = new char[1024]; bool pidChanged = false; float _P = 0; float _I = 0; float _D = 0; int _groundSetPoint = 0; void loadConfigFile(void){ //reading configFile _configFile.read("/local/config.cfg"); char value[BUFSIZ]; if (_configFile.getValue("P", &value[0], sizeof(value))) _P = atof(value); if (_configFile.getValue("I", &value[0], sizeof(value))) _I = atof(value); if (_configFile.getValue("D", &value[0], sizeof(value))) _D = atof(value); if (_configFile.getValue("groundSetPoint", &value[0], sizeof(value))) _groundSetPoint = atof(value); } void writeSettingsToConfig(void){ ConvertToCharArray(_P); _configFile.setValue("P", _str); ConvertToCharArray(_I); _configFile.setValue("I", _str); ConvertToCharArray(_D); _configFile.setValue("D", _str); ConvertToCharArray(_groundSetPoint); _configFile.setValue("groundSetPoint", _str); _configFile.write("/local/config.cfg"); pidChanged = true; } void writeErrorLog(char *message){ FILE *fp = fopen("/local/errorlog.txt", "w"); fprintf(fp, message); fclose(fp); } //Converts float to char array void ConvertToCharArray(float number) { sprintf(_str, "%4.2f", number ); } //Converts integer to char array void ConvertToCharArray(int number) { sprintf(_str, "%d", number ); } #endif