R1 code for micro:bit based train controller code, requires second micro:bit running tx code to operate - see https://meanderingpi.wordpress.com/ for more information

Fork of mbed-dev-bin by Lancaster University

Committer:
DavidMS
Date:
Tue May 23 10:42:56 2017 +0000
Revision:
4:1a27ae39e33f
Parent:
0:e1a608bb55e8
First working micro:bit motor control rx code, need be run with matching tx code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jamesadevine 0:e1a608bb55e8 1 /* mbed Microcontroller Library
jamesadevine 0:e1a608bb55e8 2 * Copyright (c) 2006-2013 ARM Limited
jamesadevine 0:e1a608bb55e8 3 *
jamesadevine 0:e1a608bb55e8 4 * Licensed under the Apache License, Version 2.0 (the "License");
jamesadevine 0:e1a608bb55e8 5 * you may not use this file except in compliance with the License.
jamesadevine 0:e1a608bb55e8 6 * You may obtain a copy of the License at
jamesadevine 0:e1a608bb55e8 7 *
jamesadevine 0:e1a608bb55e8 8 * http://www.apache.org/licenses/LICENSE-2.0
jamesadevine 0:e1a608bb55e8 9 *
jamesadevine 0:e1a608bb55e8 10 * Unless required by applicable law or agreed to in writing, software
jamesadevine 0:e1a608bb55e8 11 * distributed under the License is distributed on an "AS IS" BASIS,
jamesadevine 0:e1a608bb55e8 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
jamesadevine 0:e1a608bb55e8 13 * See the License for the specific language governing permissions and
jamesadevine 0:e1a608bb55e8 14 * limitations under the License.
jamesadevine 0:e1a608bb55e8 15 */
jamesadevine 0:e1a608bb55e8 16 #ifndef MBED_DIGITALINOUT_H
jamesadevine 0:e1a608bb55e8 17 #define MBED_DIGITALINOUT_H
jamesadevine 0:e1a608bb55e8 18
jamesadevine 0:e1a608bb55e8 19 #include "platform.h"
jamesadevine 0:e1a608bb55e8 20
jamesadevine 0:e1a608bb55e8 21 #include "gpio_api.h"
jamesadevine 0:e1a608bb55e8 22
jamesadevine 0:e1a608bb55e8 23 namespace mbed {
jamesadevine 0:e1a608bb55e8 24
jamesadevine 0:e1a608bb55e8 25 /** A digital input/output, used for setting or reading a bi-directional pin
jamesadevine 0:e1a608bb55e8 26 */
jamesadevine 0:e1a608bb55e8 27 class DigitalInOut {
jamesadevine 0:e1a608bb55e8 28
jamesadevine 0:e1a608bb55e8 29 public:
jamesadevine 0:e1a608bb55e8 30 /** Create a DigitalInOut connected to the specified pin
jamesadevine 0:e1a608bb55e8 31 *
jamesadevine 0:e1a608bb55e8 32 * @param pin DigitalInOut pin to connect to
jamesadevine 0:e1a608bb55e8 33 */
jamesadevine 0:e1a608bb55e8 34 DigitalInOut(PinName pin) : gpio() {
jamesadevine 0:e1a608bb55e8 35 gpio_init_in(&gpio, pin);
jamesadevine 0:e1a608bb55e8 36 }
jamesadevine 0:e1a608bb55e8 37
jamesadevine 0:e1a608bb55e8 38 /** Create a DigitalInOut connected to the specified pin
jamesadevine 0:e1a608bb55e8 39 *
jamesadevine 0:e1a608bb55e8 40 * @param pin DigitalInOut pin to connect to
jamesadevine 0:e1a608bb55e8 41 * @param direction the initial direction of the pin
jamesadevine 0:e1a608bb55e8 42 * @param mode the initial mode of the pin
jamesadevine 0:e1a608bb55e8 43 * @param value the initial value of the pin if is an output
jamesadevine 0:e1a608bb55e8 44 */
jamesadevine 0:e1a608bb55e8 45 DigitalInOut(PinName pin, PinDirection direction, PinMode mode, int value) : gpio() {
jamesadevine 0:e1a608bb55e8 46 gpio_init_inout(&gpio, pin, direction, mode, value);
jamesadevine 0:e1a608bb55e8 47 }
jamesadevine 0:e1a608bb55e8 48
jamesadevine 0:e1a608bb55e8 49 /** Set the output, specified as 0 or 1 (int)
jamesadevine 0:e1a608bb55e8 50 *
jamesadevine 0:e1a608bb55e8 51 * @param value An integer specifying the pin output value,
jamesadevine 0:e1a608bb55e8 52 * 0 for logical 0, 1 (or any other non-zero value) for logical 1
jamesadevine 0:e1a608bb55e8 53 */
jamesadevine 0:e1a608bb55e8 54 void write(int value) {
jamesadevine 0:e1a608bb55e8 55 gpio_write(&gpio, value);
jamesadevine 0:e1a608bb55e8 56 }
jamesadevine 0:e1a608bb55e8 57
jamesadevine 0:e1a608bb55e8 58 /** Return the output setting, represented as 0 or 1 (int)
jamesadevine 0:e1a608bb55e8 59 *
jamesadevine 0:e1a608bb55e8 60 * @returns
jamesadevine 0:e1a608bb55e8 61 * an integer representing the output setting of the pin if it is an output,
jamesadevine 0:e1a608bb55e8 62 * or read the input if set as an input
jamesadevine 0:e1a608bb55e8 63 */
jamesadevine 0:e1a608bb55e8 64 int read() {
jamesadevine 0:e1a608bb55e8 65 return gpio_read(&gpio);
jamesadevine 0:e1a608bb55e8 66 }
jamesadevine 0:e1a608bb55e8 67
jamesadevine 0:e1a608bb55e8 68 /** Set as an output
jamesadevine 0:e1a608bb55e8 69 */
jamesadevine 0:e1a608bb55e8 70 void output() {
jamesadevine 0:e1a608bb55e8 71 gpio_dir(&gpio, PIN_OUTPUT);
jamesadevine 0:e1a608bb55e8 72 }
jamesadevine 0:e1a608bb55e8 73
jamesadevine 0:e1a608bb55e8 74 /** Set as an input
jamesadevine 0:e1a608bb55e8 75 */
jamesadevine 0:e1a608bb55e8 76 void input() {
jamesadevine 0:e1a608bb55e8 77 gpio_dir(&gpio, PIN_INPUT);
jamesadevine 0:e1a608bb55e8 78 }
jamesadevine 0:e1a608bb55e8 79
jamesadevine 0:e1a608bb55e8 80 /** Set the input pin mode
jamesadevine 0:e1a608bb55e8 81 *
jamesadevine 0:e1a608bb55e8 82 * @param mode PullUp, PullDown, PullNone, OpenDrain
jamesadevine 0:e1a608bb55e8 83 */
jamesadevine 0:e1a608bb55e8 84 void mode(PinMode pull) {
jamesadevine 0:e1a608bb55e8 85 gpio_mode(&gpio, pull);
jamesadevine 0:e1a608bb55e8 86 }
jamesadevine 0:e1a608bb55e8 87
jamesadevine 0:e1a608bb55e8 88 /** Return the output setting, represented as 0 or 1 (int)
jamesadevine 0:e1a608bb55e8 89 *
jamesadevine 0:e1a608bb55e8 90 * @returns
jamesadevine 0:e1a608bb55e8 91 * Non zero value if pin is connected to uc GPIO
jamesadevine 0:e1a608bb55e8 92 * 0 if gpio object was initialized with NC
jamesadevine 0:e1a608bb55e8 93 */
jamesadevine 0:e1a608bb55e8 94 int is_connected() {
jamesadevine 0:e1a608bb55e8 95 return gpio_is_connected(&gpio);
jamesadevine 0:e1a608bb55e8 96 }
jamesadevine 0:e1a608bb55e8 97
jamesadevine 0:e1a608bb55e8 98 #ifdef MBED_OPERATORS
jamesadevine 0:e1a608bb55e8 99 /** A shorthand for write()
jamesadevine 0:e1a608bb55e8 100 */
jamesadevine 0:e1a608bb55e8 101 DigitalInOut& operator= (int value) {
jamesadevine 0:e1a608bb55e8 102 write(value);
jamesadevine 0:e1a608bb55e8 103 return *this;
jamesadevine 0:e1a608bb55e8 104 }
jamesadevine 0:e1a608bb55e8 105
jamesadevine 0:e1a608bb55e8 106 DigitalInOut& operator= (DigitalInOut& rhs) {
jamesadevine 0:e1a608bb55e8 107 write(rhs.read());
jamesadevine 0:e1a608bb55e8 108 return *this;
jamesadevine 0:e1a608bb55e8 109 }
jamesadevine 0:e1a608bb55e8 110
jamesadevine 0:e1a608bb55e8 111 /** A shorthand for read()
jamesadevine 0:e1a608bb55e8 112 */
jamesadevine 0:e1a608bb55e8 113 operator int() {
jamesadevine 0:e1a608bb55e8 114 return read();
jamesadevine 0:e1a608bb55e8 115 }
jamesadevine 0:e1a608bb55e8 116 #endif
jamesadevine 0:e1a608bb55e8 117
jamesadevine 0:e1a608bb55e8 118 protected:
jamesadevine 0:e1a608bb55e8 119 gpio_t gpio;
jamesadevine 0:e1a608bb55e8 120 };
jamesadevine 0:e1a608bb55e8 121
jamesadevine 0:e1a608bb55e8 122 } // namespace mbed
jamesadevine 0:e1a608bb55e8 123
jamesadevine 0:e1a608bb55e8 124 #endif