Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: IMU MODSERIAL Servo mbed
Fork of RTOS_Controller_v2 by
Diff: esc.h
- Revision:
- 0:116260c66d88
- Child:
- 1:735702ea5519
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/esc.h Fri Jul 19 03:11:05 2013 +0000
@@ -0,0 +1,125 @@
+#ifndef _ESC_H_
+#define _ESC_H_
+
+/** ESC class used to controll standard Electronic Speed Controllers for brushless motors of RC models.
+ * Simple usage example:
+ * @code
+ *
+#include "mbed.h"
+#include "esc.h" //include the ESC class
+
+
+int main()
+{
+ ESC esc1(p26); //declare the ESC as connected to pin p26.
+ float throttle_var = 0.5 //that means 50%.
+
+ while(1)
+ {
+ //... update throttle_var ...
+
+ esc1 = throttle_var; //memorize the throttle value (it doesn't send it to the ESC).
+
+ //... do whatever you want - e.g. call esc1.setThrottle(throttle_var) again ...
+
+ esc1(); //actually sets the throttle to the ESC.
+
+ wait_ms(20); //20ms is the default period of the ESC pwm; the ESC may not run faster.
+ }
+}
+ * @endcode
+ *
+ * Another example:
+ *
+ * @code
+ *
+#include "mbed.h"
+#include "esc.h"
+
+ESC esc1(PTD4);
+ESC esc2(PTA12);
+ESC esc3(PTA4);
+ESC esc4(PTA5);
+
+Serial pc(USBTX, USBRX); // tx, rx
+
+int main() {
+
+ char c;
+ int var = 0;
+
+ while(1) {
+ c = pc.getc();
+
+ if (c == 'u') {
+ if (var < 100) {
+ var++;
+ }
+ if (esc1.setThrottle(var) && esc2.setThrottle(var) && esc3.setThrottle(var) && esc4.setThrottle(var)) {
+ printf("%i\r\n", var);
+ }
+ }
+ else if (c == 'd') {
+ if (var > 0) {
+ var--;
+ }
+ if (esc1.setThrottle(var) && esc2.setThrottle(var) && esc3.setThrottle(var) && esc4.setThrottle(var)) {
+ printf("%i\r\n", var);
+ }
+ }
+ else if (c == 'r') {
+ var = 0;
+ if (esc1.setThrottle(var) && esc2.setThrottle(var) && esc3.setThrottle(var) && esc4.setThrottle(var)) {
+ printf("%i\r\n", var);
+ }
+ }
+
+ esc1.pulse();
+ esc2.pulse();
+ esc3.pulse();
+ esc4.pulse();
+ wait_ms(20); // 20ms is the default period of the ESC pwm
+ }
+}
+ * @endcode
+ */
+
+class ESC
+{
+ private:
+
+ PwmOut esc;
+ int period;
+ int throttle;
+
+ public:
+
+ /** Initializes the PwmOut for minimum throttle (1000us).
+ * @param pwmPinOut is the pin connected to the ESC.
+ * @param period is the PWM period in ms (default is 20ms).
+ */
+ ESC (const PinName pwmPinOut, const int period=20);
+
+ /** Sets the throttle value without output (see pulse()).
+ * @param t in in the range [0.0;1.0]
+ * @return true if throttle value is in range; false otherwise.
+ */
+ inline bool setThrottle (const float t);
+ ///Alias of setThrottle(float)
+ inline bool operator= (const float t);
+
+ /** Get the last setted throttle value
+ * @return throttle in range [0.0-1.0].
+ */
+ inline float getThrottle () const;
+ ///Alias of getThrottle()
+ inline operator float () const;
+
+ /** Output the throttle value to the ESC.
+ */
+ inline void pulse ();
+ ///Alias of pulse()
+ inline void operator() ();
+ };
+
+#endif
\ No newline at end of file
