Class library for a L298 H-Bridge

Committer:
Armand
Date:
Tue Feb 14 13:09:00 2017 +0000
Revision:
3:63766c836789
Parent:
2:5802cf5f739f
Child:
4:4985f6b7422b
completed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Armand 0:85a98c7707c9 1 /* L298HBridge Library v1.0
Armand 0:85a98c7707c9 2 * Copyright (c) 2017 Armand Coetzer
Armand 0:85a98c7707c9 3 * xxxxxxxxxx@nmmu.ac.za
Armand 0:85a98c7707c9 4 *
Armand 0:85a98c7707c9 5 *
Armand 0:85a98c7707c9 6 * Permission is hereby granted, free of charge, to any person obtaining a copy
Armand 0:85a98c7707c9 7 * of this software and associated documentation files (the "Software"), to deal
Armand 0:85a98c7707c9 8 * in the Software without restriction, including without limitation the rights
Armand 0:85a98c7707c9 9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
Armand 0:85a98c7707c9 10 * copies of the Software, and to permit persons to whom the Software is
Armand 0:85a98c7707c9 11 * furnished to do so, subject to the following conditions:
Armand 0:85a98c7707c9 12 *
Armand 0:85a98c7707c9 13 * The above copyright notice and this permission notice shall be included in
Armand 0:85a98c7707c9 14 * all copies or substantial portions of the Software.
Armand 0:85a98c7707c9 15 *
Armand 0:85a98c7707c9 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
Armand 0:85a98c7707c9 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
Armand 0:85a98c7707c9 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
Armand 0:85a98c7707c9 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
Armand 0:85a98c7707c9 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Armand 0:85a98c7707c9 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
Armand 0:85a98c7707c9 22 * THE SOFTWARE.
Armand 0:85a98c7707c9 23 */
Armand 0:85a98c7707c9 24
Armand 0:85a98c7707c9 25 #ifndef L298HBridge_H
Armand 0:85a98c7707c9 26 #define L298HBridge_H
Armand 0:85a98c7707c9 27
Armand 0:85a98c7707c9 28 #include "mbed.h"
Armand 0:85a98c7707c9 29
Armand 3:63766c836789 30 /** Class library for a L298 H-Bridge.
Armand 0:85a98c7707c9 31 *
Armand 0:85a98c7707c9 32 * Example:
Armand 0:85a98c7707c9 33 * @code
Armand 3:63766c836789 34 *#include "mbed.h"
Armand 2:5802cf5f739f 35 *#include "L298HBridge.h"
Armand 0:85a98c7707c9 36 *
Armand 2:5802cf5f739f 37 *L298HBridge dcmotor(PA_5, PA_6, PA_10); //Create a L298HBridge object with enable pin on PA5, Fwd pin or PA6 and Rev pin on PA10
Armand 0:85a98c7707c9 38 *
Armand 2:5802cf5f739f 39 * int main()
Armand 2:5802cf5f739f 40 * {
Armand 2:5802cf5f739f 41 * while(1)
Armand 2:5802cf5f739f 42 * {
Armand 2:5802cf5f739f 43 * dcmotor.Fwd(); //setting the motor to spin forward
Armand 2:5802cf5f739f 44 * dcmotor.SetSpeed(0.5); //setting the speed the motor will spin
Armand 2:5802cf5f739f 45 * }
Armand 0:85a98c7707c9 46 * }
Armand 0:85a98c7707c9 47 * @endcode
Armand 0:85a98c7707c9 48 */
Armand 0:85a98c7707c9 49
Armand 0:85a98c7707c9 50 class L298HBridge {
Armand 0:85a98c7707c9 51 public:
Armand 2:5802cf5f739f 52 /** Create a L298HBridge object connected to the specified pins. Once created, The pins still need
Armand 2:5802cf5f739f 53 * to be set to a direction and also the speed via PWM.
Armand 2:5802cf5f739f 54 * @param ENpin PwmOut compatible pin used to set the speed of the motor.
Armand 2:5802cf5f739f 55 * @param FWDpin Used to spin the motor in the forward direction.
Armand 2:5802cf5f739f 56 * @param REVDpin Used to spin the motor in the Reverse direction.
Armand 0:85a98c7707c9 57 */
Armand 0:85a98c7707c9 58 L298HBridge(PinName ENpin, PinName FWDpin, PinName REVpin);
Armand 0:85a98c7707c9 59
Armand 1:0af00b1a2b52 60 /** Setting the DC motor to spin in the forward directio.
Armand 0:85a98c7707c9 61 * @param
Armand 0:85a98c7707c9 62 * None
Armand 0:85a98c7707c9 63 */
Armand 0:85a98c7707c9 64 void Fwd();
Armand 0:85a98c7707c9 65
Armand 1:0af00b1a2b52 66 /** Setting the DC motor to spin in the Revers direction.
Armand 1:0af00b1a2b52 67 * @param
Armand 1:0af00b1a2b52 68 * None
Armand 1:0af00b1a2b52 69 */
Armand 1:0af00b1a2b52 70 void Rev();
Armand 1:0af00b1a2b52 71
Armand 1:0af00b1a2b52 72 /** Stopping the motor.
Armand 0:85a98c7707c9 73 * @param
Armand 1:0af00b1a2b52 74 * None
Armand 1:0af00b1a2b52 75 */
Armand 1:0af00b1a2b52 76 void Stop();
Armand 1:0af00b1a2b52 77
Armand 1:0af00b1a2b52 78 /** Set the speed of the motor.
Armand 1:0af00b1a2b52 79 * @param
Armand 1:0af00b1a2b52 80 * PWMPercentage, variable to set te speed of the motor (any value from 0.1 - 1).
Armand 0:85a98c7707c9 81 * @return
Armand 0:85a98c7707c9 82 * None
Armand 0:85a98c7707c9 83 */
Armand 2:5802cf5f739f 84 void SetSpeed(float PWMPercentage);
Armand 0:85a98c7707c9 85
Armand 0:85a98c7707c9 86 private:
Armand 0:85a98c7707c9 87 PwmOut _en;
Armand 0:85a98c7707c9 88 DigitalOut _fwd, _rev;
Armand 0:85a98c7707c9 89 };
Armand 0:85a98c7707c9 90
Armand 0:85a98c7707c9 91 #endif