Class library for a L298 H-Bridge
L298HBridge.h@1:0af00b1a2b52, 2017-02-14 (annotated)
- 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?
User | Revision | Line number | New 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 |