diff options
author | Jakob Stendahl <14180120+JakobST1n@users.noreply.github.com> | 2021-06-08 00:59:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-08 00:59:02 +0200 |
commit | 26d844c4149af823cd84e68417a5722352346ba7 (patch) | |
tree | 551cb9c8ebb59a676c04ee4a05993d112491f231 /inc | |
parent | 4d417f386472502636fe8e3e9b9be5ae8442aa77 (diff) | |
parent | ba195268ca0778fccc30d13356c40b0f0c7fe848 (diff) | |
download | hoverbit-ble-26d844c4149af823cd84e68417a5722352346ba7.tar.gz hoverbit-ble-26d844c4149af823cd84e68417a5722352346ba7.zip |
Merge pull request #8 from JakobST1n/dev1.0.0
Dev
Diffstat (limited to 'inc')
-rw-r--r-- | inc/HoverBitController.h | 76 | ||||
-rw-r--r-- | inc/Screen.h | 110 |
2 files changed, 186 insertions, 0 deletions
diff --git a/inc/HoverBitController.h b/inc/HoverBitController.h new file mode 100644 index 0000000..f2c10b7 --- /dev/null +++ b/inc/HoverBitController.h @@ -0,0 +1,76 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 British Broadcasting Corporation. +This software is provided by Lancaster University by arrangement with the BBC. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ +#ifndef HOVERBITCONTROLLER_H_ +#define HOVERBITCONTROLLER_H_ + +#include <MicroBit.h> + +#define BATTERY_LOW_LIMIT 3500 +#define FSAFE_TLIM_THROTTLE 1000 // When to cut the throttle +#define FSAFE_TLIM_ARM 5000 // When to disarm + +extern MicroBit uBit; + +/** + * This class can be used to interface with a AirBit card for controlling a HOVER:BIT kit. + * + * A lot of the features of the airbit is ignored here and made easy to understand if all + * you want to do is use it for a hoverbit. + */ +class HoverBitController { + private: + int buzzer; + int servo_1; + int arm; + int roll; + int pitch; + int yaw; + int throttle; + unsigned long lastReceiveTime; + + bool mainController; + bool bBatteryEmpty; + int batteryMilliVolt; + float batteryFactor; + + bool failSafe(void); + void checkBattery(); + void AirBit(int Pitch,int Arm,int Roll,int Throttle,int Yaw,int Aux1,int Aux2); + + public: + void init(); + unsigned int GetBatteryVoltage(void); + void HoverControl(); + + int Throttle(); + void Throttle(int _throttle); + int Rudder(); + void Rudder(int _rudder); + bool Arm(); + void Arm(bool _arm); + bool BatteryEmpty(); +}; + +#endif // HOVERBITCONTROLLER_H_ diff --git a/inc/Screen.h b/inc/Screen.h new file mode 100644 index 0000000..0ea7b8c --- /dev/null +++ b/inc/Screen.h @@ -0,0 +1,110 @@ +/* +The MIT License (MIT) + +Copyright (c) 2016 British Broadcasting Corporation. +This software is provided by Lancaster University by arrangement with the BBC. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +*/ +#ifndef SCREEN_H_ +#define SCREEN_H_ + +#include <MicroBit.h> +#include "HoverBitController.h" + +extern MicroBit uBit; +extern HoverBitController controller; + +enum DisplayMainScreenMode { GRAPHS, BATTERY, OFF }; + +const char* const strBattDead = "\ + 000,255,255,255,000\n\ + 255,000,255,000,255\n\ + 255,255,255,255,255\n\ + 000,255,000,255,000\n\ + 000,255,000,255,000\n"; +const char* const strBattLow = "\ + 000,000,255,000,000\n\ + 000,255,255,255,000\n\ + 000,255,000,255,000\n\ + 000,255,000,255,000\n\ + 000,255,255,255,000\n"; +static const char* const strBattLevel[] = { + "\ + 000,000,255,000,000\n\ + 000,255,000,255,000\n\ + 000,255,000,255,000\n\ + 000,255,000,255,000\n\ + 000,255,255,255,000\n", + "\ + 000,000,255,000,000\n\ + 000,255,000,255,000\n\ + 000,255,000,255,000\n\ + 000,255,255,255,000\n\ + 000,255,255,255,000\n", + "\ + 000,000,255,000,000\n\ + 000,255,000,255,000\n\ + 000,255,255,255,000\n\ + 000,255,255,255,000\n\ + 000,255,255,255,000\n", + "\ + 000,000,255,000,000\n\ + 000,255,255,255,000\n\ + 000,255,255,255,000\n\ + 000,255,255,255,000\n\ + 000,255,255,255,000\n" +}; +const char* const bluetoothSymbol = "\ + 000,000,255,255,000\n\ + 255,000,255,000,255\n\ + 000,255,255,255,000\n\ + 255,000,255,000,255\n\ + 000,000,255,255,000\n"; + +class HoverBitDisplay { + private: + DisplayMainScreenMode screenMode; + unsigned int tmpTimer; + bool BLEconnected; + bool isPause; + + void lowBattery(); + void BLENotConnected(); + void mainScreen(); + void showGraphs(); + + public: + void mode(DisplayMainScreenMode mode); + DisplayMainScreenMode mode(); + void nextMode(); + void pause(); + void pause(bool p); + void update(); + void updateBLEState(bool connected); +}; + +void plotYLine(int y1, int y2, int x); +void plotXLine(int x1, int x2, int y); +void iconBatteryDead(); +void iconBatteryLow(); +void iconBatteryCharging(); +void batteryLevelFullScreen(); + +#endif // SCREEN_H_ |