LPC824

Dependencies:   mbed

Fork of CubeFine by wu le

Revision:
2:7964622fb5a5
Parent:
1:54a2d380f8c7
--- a/Microduino_Motor.cpp	Fri Jul 01 09:41:15 2016 +0000
+++ b/Microduino_Motor.cpp	Mon Jul 04 07:17:39 2016 +0000
@@ -1,34 +1,16 @@
 #include "Microduino_Motor.h"
 
-static motor_t motors[10];                          // static array of key structures
-
-uint8_t MotorCount = 0;                                     // the total number of attached keys
-
 Motor::Motor(PinName _motor_pinA, PinName _motor_pinB)
 {
-    if ( MotorCount < 10) {
-        this->motorIndex = MotorCount++;                    // assign a key index to this instance
-        //if (_motor_pinA < NUM_DIGITAL_PINS && _motor_pinB < NUM_DIGITAL_PINS) {
-        if (true) {
-
             _period_us = 255; // 500Hz
             pwmout_init(&_pwmA, _motor_pinA);
             pwmout_period_us(&_pwmA, _period_us); // 500Hz
-            pwmout_pulsewidth_us(&_pwmA, 1);
-
-            motors[this->motorIndex].Pin.nbr_A = _motor_pinA;
+            pwmout_pulsewidth_us(&_pwmA, 0);
 
-            pwmout_init(&_pwmB, _motor_pinB);
-            pwmout_period_us(&_pwmB, _period_us); // 500Hz
-            pwmout_pulsewidth_us(&_pwmB, 1);
 
-            motors[this->motorIndex].Pin.nbr_B = _motor_pinB;
+            gpio_init_out(&gpioB, _motor_pinB);
 
             this->fix=1;
-        }
-    } else {
-        this->motorIndex = 255 ;  // too many keys
-    }
 }
 
 void Motor::Fix(float _fix)
@@ -53,102 +35,38 @@
     else if (this->_motor_vol < -255)
         this->_motor_vol = -255;
 
-    //this->_motor_vol *= fix;
+    this->_motor_vol *= fix;
 
     return this->_motor_vol;
 }
 
-#if 0
-void Motor::Driver(int16_t _motor_driver)
-{
-    int8_t channel_A = motors[this->motorIndex].Pin.nbr_A;
-    int8_t channel_B = motors[this->motorIndex].Pin.nbr_B;
-    if (_motor_driver == 0)   {
-        digitalWrite(channel_A, LOW);
-        digitalWrite(channel_B, LOW);
-    } else if (_motor_driver > 0)   {
-        analogWrite(channel_A, _motor_driver);
-        digitalWrite(channel_B, LOW);
-    } else  {
-        analogWrite(channel_A, 255 + _motor_driver);
-        digitalWrite(channel_B, HIGH);
-    }
-}
-#else
 void Motor::Driver(int16_t _motor_driver)
 {
-    //static bool flag = true;
     uint32_t pulseWidth = 0;
-    //PinName channel_A = motors[this->motorIndex].Pin.nbr_A;
-    //PinName channel_B = motors[this->motorIndex].Pin.nbr_B;
-    #if 0
-    pwmout_pulsewidth_us(&_pwmA, _period_us/2);
-    pwmout_pulsewidth_us(&_pwmB, 0);
-    return;
-    #endif
-    #if 0
-    pwmout_pulsewidth_us(&_pwmA, 0);
-    pwmout_pulsewidth_us(&_pwmB, _period_us/2);
-    return;
-    #endif
+
     if (_motor_driver == 0) {
         pwmout_pulsewidth_us(&_pwmA, 0);
-        pwmout_pulsewidth_us(&_pwmB, 0);
+        gpio_write(&gpioB, 0);
     } else if (_motor_driver > 0) {
-        #if 1
         pulseWidth = _period_us / 255 * _motor_driver;
         pwmout_pulsewidth_us(&_pwmA, pulseWidth);
-        pwmout_pulsewidth_us(&_pwmB, 2);
-        #else
-        pwmout_pulsewidth_us(&_pwmA, _period_us/2);
-        pwmout_pulsewidth_us(&_pwmB, 0);
-        #endif
+        gpio_write(&gpioB, 0);
     } else {
-        #if 0
-        _motor_driver = 255 + _motor_driver;
-        pulseWidth = _period_us / 255 * _motor_driver;
-        pwmout_pulsewidth_us(&_pwmA, 0);
-        pwmout_pulsewidth_us(&_pwmB, pulseWidth);
-        #elif 1
-        _motor_driver = abs(_motor_driver);
-        pulseWidth = _period_us / 255 * _motor_driver;
-        pwmout_pulsewidth_us(&_pwmA, 2);
-        pwmout_pulsewidth_us(&_pwmB, pulseWidth);
-        #elif 0
-        _motor_driver = 255 + _motor_driver;
-        pulseWidth = _period_us / 255 * _motor_driver;
-        pwmout_pulsewidth_us(&_pwmA, _period_us);
-        pwmout_pulsewidth_us(&_pwmB, pulseWidth);
-        #else
-        pwmout_pulsewidth_us(&_pwmA, 0);
-        pwmout_pulsewidth_us(&_pwmB, 241);
-        #endif
+        //_motor_driver = abs(_motor_driver);
+        pulseWidth = _period_us / 255 * (255 + _motor_driver);
+        pwmout_pulsewidth_us(&_pwmA, pulseWidth);
+        gpio_write(&gpioB, 1);
     }
 }
-#endif
 
 void Motor::Free()
 {
-    int8_t channel_A = motors[this->motorIndex].Pin.nbr_A;
-    int8_t channel_B = motors[this->motorIndex].Pin.nbr_B;
-#if 0
-    digitalWrite(channel_A, LOW);
-    digitalWrite(channel_B, LOW);
-#else
     pwmout_pulsewidth_us(&_pwmA, 0);
-    pwmout_pulsewidth_us(&_pwmB, 0);
-#endif
+    gpio_write(&gpioB, 0);
 }
 
 void Motor::Brake()
 {
-    int8_t channel_A = motors[this->motorIndex].Pin.nbr_A;
-    int8_t channel_B = motors[this->motorIndex].Pin.nbr_B;
-#if 0
-    digitalWrite(channel_A, HIGH);
-    digitalWrite(channel_B, HIGH);
-#else
     pwmout_pulsewidth_us(&_pwmA, _period_us);
-    pwmout_pulsewidth_us(&_pwmB, _period_us);
-#endif
+    gpio_write(&gpioB, 1);
 }
\ No newline at end of file