Class library for a L298 H-Bridge

Committer:
Armand
Date:
Tue Feb 14 09:48:32 2017 +0000
Revision:
0:85a98c7707c9
Child:
1:0af00b1a2b52
First commit

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 0:85a98c7707c9 56 /** Return the current pulse duration as microseconds (us).
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 0:85a98c7707c9 62 /** Return the current pulse duration as centimeters (cm).
Armand 0:85a98c7707c9 63 * @param
Armand 0:85a98c7707c9 64 * PWMPercentage Gjhgjhgsjsgdjhsgdjhsgd
Armand 0:85a98c7707c9 65 * @return
Armand 0:85a98c7707c9 66 * None
Armand 0:85a98c7707c9 67 */
Armand 0:85a98c7707c9 68 void Speed(float PWMPercentage);
Armand 0:85a98c7707c9 69
Armand 0:85a98c7707c9 70 private:
Armand 0:85a98c7707c9 71 PwmOut _en;
Armand 0:85a98c7707c9 72 DigitalOut _fwd, _rev;
Armand 0:85a98c7707c9 73 };
Armand 0:85a98c7707c9 74
Armand 0:85a98c7707c9 75 #endif