added gy80 dcm

Dependencies:   mbed DCM_AHRS_GY80 PID MMA8451Q

Fork of quadCommand by Greg Abdo

Revision:
0:8681037b9a18
Child:
38:9f33129afce2
diff -r 000000000000 -r 8681037b9a18 quadCommand/motor/motor.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/quadCommand/motor/motor.cpp	Sun Jun 09 22:13:59 2013 +0000
@@ -0,0 +1,74 @@
+/****************************** motor.cpp ********************************/
+/* Version: 1.0                                                          */
+/* Last Updated: June 1, 2013                                            */
+/*                                                                       */
+/* The motor class is used for motor control using a PWM ECS. When a     */
+/*a motor object is created you must pass the PWM pin as the only        */
+/*argument.                                                              */
+/*************************************************************************/
+
+#include "motor.h"
+
+/************************** motor( PinName ) *****************************/
+/* The motor constructor takes the pin to be used as for PWM and sets it */
+/*to default safe valuse.                                                */
+/*************************************************************************/
+
+motor::motor( PinName pin ) : _pwm(pin)
+{
+    _pwm.period( 0.020 );       // Set the period to 20ms.
+    setPulseMin( 0.001150 );    // Set default min pulse.
+    setPulseMax( 0.002 );       // Set default max pulse.
+    setSpeed( 0 );              // Set motor to stopped.
+}
+
+/************************** setSpeed( int ) ******************************/
+/* Set speed takes an int value between 0 and 100 and sets the speed of  */
+/*the motor based on passed in percent value of speed.                   */
+/*************************************************************************/
+
+void motor::setSpeed( int value )
+{
+    // Is the value to small?
+    if( value < 0 )             // Yup, just set to 0.
+        currentSpeed = 0;
+    
+    // Is the value to large?
+    else if( value > 100 )      // Yup, just set to 100.
+        currentSpeed = 100;
+    
+    // Value must be in the correct range.    
+    else    
+        currentSpeed = value;   // Set the new value.
+
+    // Calculate the value based on pulseMin, pulseMax and currentSpeed.
+    pulse = ((pulseMax - pulseMin ) / 100 * currentSpeed ) + pulseMin;
+    _pwm.pulsewidth( pulse );   // Write the pulse to the pin.
+}
+
+/************************** setPulseMin( float ) *************************/
+/*                                                                       */
+/*************************************************************************/
+
+void motor::setPulseMin( float value )
+{
+    pulseMin = value;
+}
+
+/************************** setPulseMax( float ) *************************/
+/*                                                                       */
+/*************************************************************************/
+
+void motor::setPulseMax( float value )
+{
+    pulseMax = value;
+}
+
+/*************************** float getPulse( ) ***************************/
+/* Get the current pulse value.                                          */
+/*************************************************************************/
+
+float motor::getPulse( void )
+{
+    return pulse;
+}
\ No newline at end of file