It is a library for controlling Wallbot

Dependents:   wallbot_test

Committer:
jksoft
Date:
Sun Jul 28 08:20:17 2013 +0000
Revision:
0:f8571ffd252a
First

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jksoft 0:f8571ffd252a 1 /* mbed wallbot Library
jksoft 0:f8571ffd252a 2 *
jksoft 0:f8571ffd252a 3 * wallbot.h
jksoft 0:f8571ffd252a 4 *
jksoft 0:f8571ffd252a 5 * Copyright (c) 2010-2013 jksoft
jksoft 0:f8571ffd252a 6 *
jksoft 0:f8571ffd252a 7 * Permission is hereby granted, free of charge, to any person obtaining a copy
jksoft 0:f8571ffd252a 8 * of this software and associated documentation files (the "Software"), to deal
jksoft 0:f8571ffd252a 9 * in the Software without restriction, including without limitation the rights
jksoft 0:f8571ffd252a 10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
jksoft 0:f8571ffd252a 11 * copies of the Software, and to permit persons to whom the Software is
jksoft 0:f8571ffd252a 12 * furnished to do so, subject to the following conditions:
jksoft 0:f8571ffd252a 13 *
jksoft 0:f8571ffd252a 14 * The above copyright notice and this permission notice shall be included in
jksoft 0:f8571ffd252a 15 * all copies or substantial portions of the Software.
jksoft 0:f8571ffd252a 16 *
jksoft 0:f8571ffd252a 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
jksoft 0:f8571ffd252a 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
jksoft 0:f8571ffd252a 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
jksoft 0:f8571ffd252a 20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
jksoft 0:f8571ffd252a 21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
jksoft 0:f8571ffd252a 22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
jksoft 0:f8571ffd252a 23 * THE SOFTWARE.
jksoft 0:f8571ffd252a 24 */
jksoft 0:f8571ffd252a 25
jksoft 0:f8571ffd252a 26 #ifndef WALLBOT_H
jksoft 0:f8571ffd252a 27 #define WALLBOT_H
jksoft 0:f8571ffd252a 28
jksoft 0:f8571ffd252a 29 #include "mbed.h"
jksoft 0:f8571ffd252a 30 #include "HighSpeedAnalogIn.h"
jksoft 0:f8571ffd252a 31 #include "EthernetPowerControl.h"
jksoft 0:f8571ffd252a 32 #include "TB6612.h"
jksoft 0:f8571ffd252a 33
jksoft 0:f8571ffd252a 34 #define SENSOR_NOMAL 0
jksoft 0:f8571ffd252a 35 #define SENSOR_EXT 1
jksoft 0:f8571ffd252a 36 #define SENSOR_THRESHOLD 2500
jksoft 0:f8571ffd252a 37 /** wallbot control class
jksoft 0:f8571ffd252a 38 *
jksoft 0:f8571ffd252a 39 * Example:
jksoft 0:f8571ffd252a 40 * @code
jksoft 0:f8571ffd252a 41 * // Drive the wwallbot forward, turn left, back, turn right, at half speed for half a second
jksoft 0:f8571ffd252a 42
jksoft 0:f8571ffd252a 43 #include "mbed.h"
jksoft 0:f8571ffd252a 44 #include "wallbot.h"
jksoft 0:f8571ffd252a 45
jksoft 0:f8571ffd252a 46 wallbot wb;
jksoft 0:f8571ffd252a 47
jksoft 0:f8571ffd252a 48 int main() {
jksoft 0:f8571ffd252a 49
jksoft 0:f8571ffd252a 50 wait(0.5);
jksoft 0:f8571ffd252a 51
jksoft 0:f8571ffd252a 52 wb.forward(0.5);
jksoft 0:f8571ffd252a 53 wait (0.5);
jksoft 0:f8571ffd252a 54 wb.left(0.5);
jksoft 0:f8571ffd252a 55 wait (0.5);
jksoft 0:f8571ffd252a 56 wb.backward(0.5);
jksoft 0:f8571ffd252a 57 wait (0.5);
jksoft 0:f8571ffd252a 58 wb.right(0.5);
jksoft 0:f8571ffd252a 59 wait (0.5);
jksoft 0:f8571ffd252a 60
jksoft 0:f8571ffd252a 61 wb.stop();
jksoft 0:f8571ffd252a 62
jksoft 0:f8571ffd252a 63 }
jksoft 0:f8571ffd252a 64 * @endcode
jksoft 0:f8571ffd252a 65 */
jksoft 0:f8571ffd252a 66 class wallbot {
jksoft 0:f8571ffd252a 67
jksoft 0:f8571ffd252a 68 // Public functions
jksoft 0:f8571ffd252a 69 public:
jksoft 0:f8571ffd252a 70
jksoft 0:f8571ffd252a 71 /** Create the wallbot object connected to the default pins
jksoft 0:f8571ffd252a 72 */
jksoft 0:f8571ffd252a 73 wallbot();
jksoft 0:f8571ffd252a 74
jksoft 0:f8571ffd252a 75 /** Directly control the speed and direction of the left motor
jksoft 0:f8571ffd252a 76 *
jksoft 0:f8571ffd252a 77 * @param speed A normalised number -1.0 - 1.0 represents the full range.
jksoft 0:f8571ffd252a 78 */
jksoft 0:f8571ffd252a 79 void left_motor (float speed);
jksoft 0:f8571ffd252a 80
jksoft 0:f8571ffd252a 81 /** Directly control the speed and direction of the right motor
jksoft 0:f8571ffd252a 82 *
jksoft 0:f8571ffd252a 83 * @param speed A normalised number -1.0 - 1.0 represents the full range.
jksoft 0:f8571ffd252a 84 */
jksoft 0:f8571ffd252a 85 void right_motor (float speed);
jksoft 0:f8571ffd252a 86
jksoft 0:f8571ffd252a 87 /** Drive both motors forward as the same speed
jksoft 0:f8571ffd252a 88 *
jksoft 0:f8571ffd252a 89 * @param speed A normalised number 0 - 1.0 represents the full range.
jksoft 0:f8571ffd252a 90 */
jksoft 0:f8571ffd252a 91 void forward (float speed);
jksoft 0:f8571ffd252a 92
jksoft 0:f8571ffd252a 93 /** Drive both motors backward as the same speed
jksoft 0:f8571ffd252a 94 *
jksoft 0:f8571ffd252a 95 * @param speed A normalised number 0 - 1.0 represents the full range.
jksoft 0:f8571ffd252a 96 */
jksoft 0:f8571ffd252a 97 void backward (float speed);
jksoft 0:f8571ffd252a 98
jksoft 0:f8571ffd252a 99 /** Drive left motor backwards and right motor forwards at the same speed to turn on the spot
jksoft 0:f8571ffd252a 100 *
jksoft 0:f8571ffd252a 101 * @param speed A normalised number 0 - 1.0 represents the full range.
jksoft 0:f8571ffd252a 102 */
jksoft 0:f8571ffd252a 103 void left (float speed);
jksoft 0:f8571ffd252a 104
jksoft 0:f8571ffd252a 105 /** Drive left motor forward and right motor backwards at the same speed to turn on the spot
jksoft 0:f8571ffd252a 106 * @param speed A normalised number 0 - 1.0 represents the full range.
jksoft 0:f8571ffd252a 107 */
jksoft 0:f8571ffd252a 108 void right (float speed);
jksoft 0:f8571ffd252a 109
jksoft 0:f8571ffd252a 110 /** Stop both motors
jksoft 0:f8571ffd252a 111 *
jksoft 0:f8571ffd252a 112 */
jksoft 0:f8571ffd252a 113 void stop (void);
jksoft 0:f8571ffd252a 114
jksoft 0:f8571ffd252a 115 /** Get floorline position.(float value return.)
jksoft 0:f8571ffd252a 116 *
jksoft 0:f8571ffd252a 117 */
jksoft 0:f8571ffd252a 118 float GetLinePosition(void);
jksoft 0:f8571ffd252a 119
jksoft 0:f8571ffd252a 120 /** Get floorline position.(bit value return.)
jksoft 0:f8571ffd252a 121 *
jksoft 0:f8571ffd252a 122 */
jksoft 0:f8571ffd252a 123 void GetLinePosition(int *bit);
jksoft 0:f8571ffd252a 124
jksoft 0:f8571ffd252a 125 /** Get left switch .(switch OFF:0 or ON:1 return.)
jksoft 0:f8571ffd252a 126 *
jksoft 0:f8571ffd252a 127 */
jksoft 0:f8571ffd252a 128 int GetLeftSw(void);
jksoft 0:f8571ffd252a 129
jksoft 0:f8571ffd252a 130 /** Get GetRightSw switch .(switch OFF:0 or ON:1 return.)
jksoft 0:f8571ffd252a 131 *
jksoft 0:f8571ffd252a 132 */
jksoft 0:f8571ffd252a 133 int GetRightSw(void);
jksoft 0:f8571ffd252a 134
jksoft 0:f8571ffd252a 135 private :
jksoft 0:f8571ffd252a 136
jksoft 0:f8571ffd252a 137 TB6612 _right;
jksoft 0:f8571ffd252a 138 TB6612 _left;
jksoft 0:f8571ffd252a 139
jksoft 0:f8571ffd252a 140 HighSpeedAnalogIn _ain;
jksoft 0:f8571ffd252a 141
jksoft 0:f8571ffd252a 142 DigitalIn _left_sw;
jksoft 0:f8571ffd252a 143 DigitalIn _right_sw;
jksoft 0:f8571ffd252a 144
jksoft 0:f8571ffd252a 145 int _floorSensorThreshold;
jksoft 0:f8571ffd252a 146
jksoft 0:f8571ffd252a 147 };
jksoft 0:f8571ffd252a 148
jksoft 0:f8571ffd252a 149 #endif