Magang KRTMI Day 1 : Program Motor Driver Nucleo

Dependencies:   mbed

Revision:
0:7a67707b5b88
diff -r 000000000000 -r 7a67707b5b88 Motor.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Motor.cpp	Wed Mar 20 16:55:17 2019 +0000
@@ -0,0 +1,121 @@
+/*mbed simple H-bridge motor controller
+ * Copyright (c) 2007-2010, sford
+ *
+ * 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.
+ */
+
+#include "mbed.h"
+#include "Motor.h"
+#include <iostream>
+
+//--Library--//
+
+Motor::Motor(PinName pwm, PinName fwd, PinName rev):
+        _pwm(pwm), _fwd(fwd), _revr(ev) {
+ 
+    _pwm.period(0.002);
+    _pwm = 0;
+    _fwd = 0;
+    _rev = 0;
+}
+
+void Motor::speed(float speed) {
+    _fwd = (speed > (float)0.0);
+    _rev = (speed < (float)0.0);
+    _pwm = fabs(speed);
+}
+
+void Motor::period(float period){
+    _pwm.period(period);
+ 
+}
+
+void Motor::brake(int highLow){
+    if(highLow == BRAKE_HIGH){
+        _fwd = 1;
+        _rev = 1;
+    }
+    else if(highLow == BRAKE_LOW){
+        _fwd = 0;
+        _rev = 0;
+    }
+}
+
+void Motor::forcebrake(){
+    _pwm = 1.0;
+    _fwd = 1;
+    _rev = 1;
+}
+ 
+//--Program Motor--//
+ 
+int main() 
+{
+    string arah, rotate;
+ 
+    Motor depan();
+    Motor kiri();
+    Motor kanan();
+ 
+    do {
+        getline (cin, arah);
+        getline (cin, rotate);
+    
+    if (arah == "maju"){        //Bergerak ke depan
+        kiri.speed(-1.0);
+            kanan.speed(1.0);
+        depan.speed(0.0);
+    }
+    
+    if (arah == "mundur"){      //Bergerak ke belakang
+        kanan.speed(-1.0);
+        kiri.speed(1.0);
+        depan.speed(0.0);
+    }
+    
+        if (arah == "kiri") {       //Bergerak ke kiri
+        depan.speed(1.0);
+        kiri.speed(-1.0);
+        kanan.speed(-1.0);
+    }
+        if (arah == "kanan") {      //Bergerak ke kanan
+            depan.speed(-1.0);
+            kiri.speed(1.0);
+        kanan.speed(1.0);
+    }
+ 
+    if (rotate == "counterclock") {        //Bergerak berlawanan jarum jam (pivot kiri)
+        depan.speed(1.0);
+        kiri.speed(1.0);
+        kanan.speed(1.0);
+    }
+    
+    if (rotate == "clockwise") {        //Bergerak searah jarum jam (pivot kanan)
+        depan.speed(-1.0);
+        kiri.speed(-1.0);
+        kanan.speed(-1.0);
+    }
+
+    if (arah == "kanan" && rotate == "clockwise"){      //Berputar sambil maju (kayaknya kak hehe)
+        depan.speed(1);                 
+        kiri.speed(0.75);
+        kanan.speed(0.5);
+    }
+} while();
+}
\ No newline at end of file