Class library for a L298 H-Bridge

Committer:
Armand
Date:
Tue Feb 14 12:41:49 2017 +0000
Revision:
1:0af00b1a2b52
Parent:
0:85a98c7707c9
Child:
2:5802cf5f739f
Completed class

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 0:85a98c7707c9 30 /** Class library for a HC-SR04 Distance Sensor based on PwmOut (Trig) and InterruptIn (Echo).
Armand 0:85a98c7707c9 31 *
Armand 0:85a98c7707c9 32 * Example:
Armand 0:85a98c7707c9 33 * @code
Armand 0:85a98c7707c9 34 * #include "mbed.h"
Armand 0:85a98c7707c9 35 * #include "HCSR04.h"
Armand 0:85a98c7707c9 36 *
Armand 0:85a98c7707c9 37 * HCSR04 distance(PB_8, PA_1);
Armand 0:85a98c7707c9 38 *
Armand 0:85a98c7707c9 39 * int main() {
Armand 0:85a98c7707c9 40 * while(1){
Armand 0:85a98c7707c9 41 * SWO.printf("Distance = %d (us) %f (cm)\n", distance.read_us(), distance.read_cm());
Armand 0:85a98c7707c9 42 * }
Armand 0:85a98c7707c9 43 * }
Armand 0:85a98c7707c9 44 * @endcode
Armand 0:85a98c7707c9 45 */
Armand 0:85a98c7707c9 46
Armand 0:85a98c7707c9 47 class L298HBridge {
Armand 0:85a98c7707c9 48 public:
Armand 0:85a98c7707c9 49 /** Create a L298HBridge object connected to the specified pins. Once created, the PWM signal
Armand 0:85a98c7707c9 50 * on the Trig pin will start immediately and measurements will start in the background.
Armand 0:85a98c7707c9 51 * @param ENpin PwmOut compatible pin used to connect to HC-SR04's Trig pin
Armand 0:85a98c7707c9 52 * @param FWDpin InterruptIn compatible pin used to connect to HC-SR04's Echo pin
Armand 0:85a98c7707c9 53 */
Armand 0:85a98c7707c9 54 L298HBridge(PinName ENpin, PinName FWDpin, PinName REVpin);
Armand 0:85a98c7707c9 55
Armand 1:0af00b1a2b52 56 /** Setting the DC motor to spin in the forward directio.
Armand 0:85a98c7707c9 57 * @param
Armand 0:85a98c7707c9 58 * None
Armand 0:85a98c7707c9 59 */
Armand 0:85a98c7707c9 60 void Fwd();
Armand 0:85a98c7707c9 61
Armand 1:0af00b1a2b52 62 /** Setting the DC motor to spin in the Revers direction.
Armand 1:0af00b1a2b52 63 * @param
Armand 1:0af00b1a2b52 64 * None
Armand 1:0af00b1a2b52 65 */
Armand 1:0af00b1a2b52 66 void Rev();
Armand 1:0af00b1a2b52 67
Armand 1:0af00b1a2b52 68 /** Stopping the motor.
Armand 0:85a98c7707c9 69 * @param
Armand 1:0af00b1a2b52 70 * None
Armand 1:0af00b1a2b52 71 */
Armand 1:0af00b1a2b52 72 void Stop();
Armand 1:0af00b1a2b52 73
Armand 1:0af00b1a2b52 74 /** Set the speed of the motor.
Armand 1:0af00b1a2b52 75 * @param
Armand 1:0af00b1a2b52 76 * PWMPercentage, variable to set te speed of the motor (any value from 0.1 - 1).
Armand 0:85a98c7707c9 77 * @return
Armand 0:85a98c7707c9 78 * None
Armand 0:85a98c7707c9 79 */
Armand 0:85a98c7707c9 80 void Speed(float PWMPercentage);
Armand 0:85a98c7707c9 81
Armand 0:85a98c7707c9 82 private:
Armand 0:85a98c7707c9 83 PwmOut _en;
Armand 0:85a98c7707c9 84 DigitalOut _fwd, _rev;
Armand 0:85a98c7707c9 85 };
Armand 0:85a98c7707c9 86
Armand 0:85a98c7707c9 87 #endif