KRAI ITB GARUDAGO / Mbed 2 deprecated frictionwheel

Dependencies:   mbed

Committer:
putriliza
Date:
Tue Nov 23 10:35:12 2021 +0000
Revision:
0:62ded4362bbc
tes friction wheel (belum PID)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
putriliza 0:62ded4362bbc 1 /* mbed simple H-bridge motor controller
putriliza 0:62ded4362bbc 2 * Copyright (c) 2007-2010, sford
putriliza 0:62ded4362bbc 3 *
putriliza 0:62ded4362bbc 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
putriliza 0:62ded4362bbc 5 * of this software and associated documentation files (the "Software"), to deal
putriliza 0:62ded4362bbc 6 * in the Software without restriction, including without limitation the rights
putriliza 0:62ded4362bbc 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
putriliza 0:62ded4362bbc 8 * copies of the Software, and to permit persons to whom the Software is
putriliza 0:62ded4362bbc 9 * furnished to do so, subject to the following conditions:
putriliza 0:62ded4362bbc 10 *
putriliza 0:62ded4362bbc 11 * The above copyright notice and this permission notice shall be included in
putriliza 0:62ded4362bbc 12 * all copies or substantial portions of the Software.
putriliza 0:62ded4362bbc 13 *
putriliza 0:62ded4362bbc 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
putriliza 0:62ded4362bbc 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
putriliza 0:62ded4362bbc 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
putriliza 0:62ded4362bbc 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
putriliza 0:62ded4362bbc 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
putriliza 0:62ded4362bbc 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
putriliza 0:62ded4362bbc 20 * THE SOFTWARE.
putriliza 0:62ded4362bbc 21 */
putriliza 0:62ded4362bbc 22
putriliza 0:62ded4362bbc 23 #ifndef MBED_MOTOR_H
putriliza 0:62ded4362bbc 24 #define MBED_MOTOR_H
putriliza 0:62ded4362bbc 25
putriliza 0:62ded4362bbc 26 #include "mbed.h"
putriliza 0:62ded4362bbc 27
putriliza 0:62ded4362bbc 28 #define BRAKE_HIGH 1
putriliza 0:62ded4362bbc 29 #define BRAKE_LOW 0
putriliza 0:62ded4362bbc 30
putriliza 0:62ded4362bbc 31 /** Interface to control a standard DC motor
putriliza 0:62ded4362bbc 32 * with an H-bridge using a PwmOut and 2 DigitalOuts
putriliza 0:62ded4362bbc 33 */
putriliza 0:62ded4362bbc 34 class Motor {
putriliza 0:62ded4362bbc 35 public:
putriliza 0:62ded4362bbc 36
putriliza 0:62ded4362bbc 37 /** Create a motor control interface
putriliza 0:62ded4362bbc 38 *
putriliza 0:62ded4362bbc 39 * @param pwm A PwmOut pin, driving the H-bridge enable line to control the speed
putriliza 0:62ded4362bbc 40 * @param fwd A DigitalOut, set high when the motor should go forward
putriliza 0:62ded4362bbc 41 * @param rev A DigitalOut, set high when the motor should go backwards
putriliza 0:62ded4362bbc 42 */
putriliza 0:62ded4362bbc 43 Motor(PinName pwm, PinName fwd, PinName rev);
putriliza 0:62ded4362bbc 44
putriliza 0:62ded4362bbc 45 /** Set the speed of the motor
putriliza 0:62ded4362bbc 46 *
putriliza 0:62ded4362bbc 47 * @param speed The speed of the motor as a normalised value between -1.0 and 1.0
putriliza 0:62ded4362bbc 48 */
putriliza 0:62ded4362bbc 49 void speed(float speed);
putriliza 0:62ded4362bbc 50
putriliza 0:62ded4362bbc 51 /** Set the period of the pwm duty cycle.
putriliza 0:62ded4362bbc 52 *
putriliza 0:62ded4362bbc 53 * Wrapper for PwmOut::period()
putriliza 0:62ded4362bbc 54 *
putriliza 0:62ded4362bbc 55 * @param seconds - Pwm duty cycle in seconds.
putriliza 0:62ded4362bbc 56 */
putriliza 0:62ded4362bbc 57 void period(float period);
putriliza 0:62ded4362bbc 58
putriliza 0:62ded4362bbc 59 /** Brake the H-bridge to GND or VCC.
putriliza 0:62ded4362bbc 60 *
putriliza 0:62ded4362bbc 61 * Defaults to breaking to VCC.
putriliza 0:62ded4362bbc 62 *
putriliza 0:62ded4362bbc 63 * Brake to GND => inA = inB = 0
putriliza 0:62ded4362bbc 64 * Brake to VCC => inA = inB = 1
putriliza 0:62ded4362bbc 65 */
putriliza 0:62ded4362bbc 66 void brake(int highLow = BRAKE_HIGH);
putriliza 0:62ded4362bbc 67
putriliza 0:62ded4362bbc 68 /**
putriliza 0:62ded4362bbc 69 *Brake lebih baik
putriliza 0:62ded4362bbc 70 **/
putriliza 0:62ded4362bbc 71 void forcebrake();
putriliza 0:62ded4362bbc 72
putriliza 0:62ded4362bbc 73 protected:
putriliza 0:62ded4362bbc 74 PwmOut _pwm;
putriliza 0:62ded4362bbc 75 DigitalOut _fwd;
putriliza 0:62ded4362bbc 76 DigitalOut _rev;
putriliza 0:62ded4362bbc 77
putriliza 0:62ded4362bbc 78 };
putriliza 0:62ded4362bbc 79
putriliza 0:62ded4362bbc 80 #endif