Magang KRTMI Day 1 : Program Motor Driver Nucleo

Dependencies:   mbed

Committer:
tifanysaulina
Date:
Wed Mar 20 16:55:17 2019 +0000
Revision:
0:7a67707b5b88
yup

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tifanysaulina 0:7a67707b5b88 1 /*mbed simple H-bridge motor controller
tifanysaulina 0:7a67707b5b88 2 * Copyright (c) 2007-2010, sford
tifanysaulina 0:7a67707b5b88 3 *
tifanysaulina 0:7a67707b5b88 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
tifanysaulina 0:7a67707b5b88 5 * of this software and associated documentation files (the "Software"), to deal
tifanysaulina 0:7a67707b5b88 6 * in the Software without restriction, including without limitation the rights
tifanysaulina 0:7a67707b5b88 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
tifanysaulina 0:7a67707b5b88 8 * copies of the Software, and to permit persons to whom the Software is
tifanysaulina 0:7a67707b5b88 9 * furnished to do so, subject to the following conditions:
tifanysaulina 0:7a67707b5b88 10 *
tifanysaulina 0:7a67707b5b88 11 * The above copyright notice and this permission notice shall be included in
tifanysaulina 0:7a67707b5b88 12 * all copies or substantial portions of the Software.
tifanysaulina 0:7a67707b5b88 13 *
tifanysaulina 0:7a67707b5b88 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
tifanysaulina 0:7a67707b5b88 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
tifanysaulina 0:7a67707b5b88 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
tifanysaulina 0:7a67707b5b88 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
tifanysaulina 0:7a67707b5b88 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
tifanysaulina 0:7a67707b5b88 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
tifanysaulina 0:7a67707b5b88 20 * THE SOFTWARE.
tifanysaulina 0:7a67707b5b88 21 */
tifanysaulina 0:7a67707b5b88 22
tifanysaulina 0:7a67707b5b88 23 #include "mbed.h"
tifanysaulina 0:7a67707b5b88 24 #include "Motor.h"
tifanysaulina 0:7a67707b5b88 25 #include <iostream>
tifanysaulina 0:7a67707b5b88 26
tifanysaulina 0:7a67707b5b88 27 //--Library--//
tifanysaulina 0:7a67707b5b88 28
tifanysaulina 0:7a67707b5b88 29 Motor::Motor(PinName pwm, PinName fwd, PinName rev):
tifanysaulina 0:7a67707b5b88 30 _pwm(pwm), _fwd(fwd), _revr(ev) {
tifanysaulina 0:7a67707b5b88 31
tifanysaulina 0:7a67707b5b88 32 _pwm.period(0.002);
tifanysaulina 0:7a67707b5b88 33 _pwm = 0;
tifanysaulina 0:7a67707b5b88 34 _fwd = 0;
tifanysaulina 0:7a67707b5b88 35 _rev = 0;
tifanysaulina 0:7a67707b5b88 36 }
tifanysaulina 0:7a67707b5b88 37
tifanysaulina 0:7a67707b5b88 38 void Motor::speed(float speed) {
tifanysaulina 0:7a67707b5b88 39 _fwd = (speed > (float)0.0);
tifanysaulina 0:7a67707b5b88 40 _rev = (speed < (float)0.0);
tifanysaulina 0:7a67707b5b88 41 _pwm = fabs(speed);
tifanysaulina 0:7a67707b5b88 42 }
tifanysaulina 0:7a67707b5b88 43
tifanysaulina 0:7a67707b5b88 44 void Motor::period(float period){
tifanysaulina 0:7a67707b5b88 45 _pwm.period(period);
tifanysaulina 0:7a67707b5b88 46
tifanysaulina 0:7a67707b5b88 47 }
tifanysaulina 0:7a67707b5b88 48
tifanysaulina 0:7a67707b5b88 49 void Motor::brake(int highLow){
tifanysaulina 0:7a67707b5b88 50 if(highLow == BRAKE_HIGH){
tifanysaulina 0:7a67707b5b88 51 _fwd = 1;
tifanysaulina 0:7a67707b5b88 52 _rev = 1;
tifanysaulina 0:7a67707b5b88 53 }
tifanysaulina 0:7a67707b5b88 54 else if(highLow == BRAKE_LOW){
tifanysaulina 0:7a67707b5b88 55 _fwd = 0;
tifanysaulina 0:7a67707b5b88 56 _rev = 0;
tifanysaulina 0:7a67707b5b88 57 }
tifanysaulina 0:7a67707b5b88 58 }
tifanysaulina 0:7a67707b5b88 59
tifanysaulina 0:7a67707b5b88 60 void Motor::forcebrake(){
tifanysaulina 0:7a67707b5b88 61 _pwm = 1.0;
tifanysaulina 0:7a67707b5b88 62 _fwd = 1;
tifanysaulina 0:7a67707b5b88 63 _rev = 1;
tifanysaulina 0:7a67707b5b88 64 }
tifanysaulina 0:7a67707b5b88 65
tifanysaulina 0:7a67707b5b88 66 //--Program Motor--//
tifanysaulina 0:7a67707b5b88 67
tifanysaulina 0:7a67707b5b88 68 int main()
tifanysaulina 0:7a67707b5b88 69 {
tifanysaulina 0:7a67707b5b88 70 string arah, rotate;
tifanysaulina 0:7a67707b5b88 71
tifanysaulina 0:7a67707b5b88 72 Motor depan();
tifanysaulina 0:7a67707b5b88 73 Motor kiri();
tifanysaulina 0:7a67707b5b88 74 Motor kanan();
tifanysaulina 0:7a67707b5b88 75
tifanysaulina 0:7a67707b5b88 76 do {
tifanysaulina 0:7a67707b5b88 77 getline (cin, arah);
tifanysaulina 0:7a67707b5b88 78 getline (cin, rotate);
tifanysaulina 0:7a67707b5b88 79
tifanysaulina 0:7a67707b5b88 80 if (arah == "maju"){ //Bergerak ke depan
tifanysaulina 0:7a67707b5b88 81 kiri.speed(-1.0);
tifanysaulina 0:7a67707b5b88 82 kanan.speed(1.0);
tifanysaulina 0:7a67707b5b88 83 depan.speed(0.0);
tifanysaulina 0:7a67707b5b88 84 }
tifanysaulina 0:7a67707b5b88 85
tifanysaulina 0:7a67707b5b88 86 if (arah == "mundur"){ //Bergerak ke belakang
tifanysaulina 0:7a67707b5b88 87 kanan.speed(-1.0);
tifanysaulina 0:7a67707b5b88 88 kiri.speed(1.0);
tifanysaulina 0:7a67707b5b88 89 depan.speed(0.0);
tifanysaulina 0:7a67707b5b88 90 }
tifanysaulina 0:7a67707b5b88 91
tifanysaulina 0:7a67707b5b88 92 if (arah == "kiri") { //Bergerak ke kiri
tifanysaulina 0:7a67707b5b88 93 depan.speed(1.0);
tifanysaulina 0:7a67707b5b88 94 kiri.speed(-1.0);
tifanysaulina 0:7a67707b5b88 95 kanan.speed(-1.0);
tifanysaulina 0:7a67707b5b88 96 }
tifanysaulina 0:7a67707b5b88 97 if (arah == "kanan") { //Bergerak ke kanan
tifanysaulina 0:7a67707b5b88 98 depan.speed(-1.0);
tifanysaulina 0:7a67707b5b88 99 kiri.speed(1.0);
tifanysaulina 0:7a67707b5b88 100 kanan.speed(1.0);
tifanysaulina 0:7a67707b5b88 101 }
tifanysaulina 0:7a67707b5b88 102
tifanysaulina 0:7a67707b5b88 103 if (rotate == "counterclock") { //Bergerak berlawanan jarum jam (pivot kiri)
tifanysaulina 0:7a67707b5b88 104 depan.speed(1.0);
tifanysaulina 0:7a67707b5b88 105 kiri.speed(1.0);
tifanysaulina 0:7a67707b5b88 106 kanan.speed(1.0);
tifanysaulina 0:7a67707b5b88 107 }
tifanysaulina 0:7a67707b5b88 108
tifanysaulina 0:7a67707b5b88 109 if (rotate == "clockwise") { //Bergerak searah jarum jam (pivot kanan)
tifanysaulina 0:7a67707b5b88 110 depan.speed(-1.0);
tifanysaulina 0:7a67707b5b88 111 kiri.speed(-1.0);
tifanysaulina 0:7a67707b5b88 112 kanan.speed(-1.0);
tifanysaulina 0:7a67707b5b88 113 }
tifanysaulina 0:7a67707b5b88 114
tifanysaulina 0:7a67707b5b88 115 if (arah == "kanan" && rotate == "clockwise"){ //Berputar sambil maju (kayaknya kak hehe)
tifanysaulina 0:7a67707b5b88 116 depan.speed(1);
tifanysaulina 0:7a67707b5b88 117 kiri.speed(0.75);
tifanysaulina 0:7a67707b5b88 118 kanan.speed(0.5);
tifanysaulina 0:7a67707b5b88 119 }
tifanysaulina 0:7a67707b5b88 120 } while();
tifanysaulina 0:7a67707b5b88 121 }