example micro:bit pedometer

Fork of mbed-dev-bin by Lancaster University

Committer:
giobauermeister
Date:
Fri Apr 27 12:59:57 2018 +0000
Revision:
4:084689a02e93
Parent:
0:e1a608bb55e8
example micro:bit pedometer

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_PORTIN_H
jamesadevine 0:e1a608bb55e8 17 #define MBED_PORTIN_H
jamesadevine 0:e1a608bb55e8 18
jamesadevine 0:e1a608bb55e8 19 #include "platform.h"
jamesadevine 0:e1a608bb55e8 20
jamesadevine 0:e1a608bb55e8 21 #if DEVICE_PORTIN
jamesadevine 0:e1a608bb55e8 22
jamesadevine 0:e1a608bb55e8 23 #include "port_api.h"
jamesadevine 0:e1a608bb55e8 24
jamesadevine 0:e1a608bb55e8 25 namespace mbed {
jamesadevine 0:e1a608bb55e8 26
jamesadevine 0:e1a608bb55e8 27 /** A multiple pin digital input
jamesadevine 0:e1a608bb55e8 28 *
jamesadevine 0:e1a608bb55e8 29 * Example:
jamesadevine 0:e1a608bb55e8 30 * @code
jamesadevine 0:e1a608bb55e8 31 * // Switch on an LED if any of mbed pins 21-26 is high
jamesadevine 0:e1a608bb55e8 32 *
jamesadevine 0:e1a608bb55e8 33 * #include "mbed.h"
jamesadevine 0:e1a608bb55e8 34 *
jamesadevine 0:e1a608bb55e8 35 * PortIn p(Port2, 0x0000003F); // p21-p26
jamesadevine 0:e1a608bb55e8 36 * DigitalOut ind(LED4);
jamesadevine 0:e1a608bb55e8 37 *
jamesadevine 0:e1a608bb55e8 38 * int main() {
jamesadevine 0:e1a608bb55e8 39 * while(1) {
jamesadevine 0:e1a608bb55e8 40 * int pins = p.read();
jamesadevine 0:e1a608bb55e8 41 * if(pins) {
jamesadevine 0:e1a608bb55e8 42 * ind = 1;
jamesadevine 0:e1a608bb55e8 43 * } else {
jamesadevine 0:e1a608bb55e8 44 * ind = 0;
jamesadevine 0:e1a608bb55e8 45 * }
jamesadevine 0:e1a608bb55e8 46 * }
jamesadevine 0:e1a608bb55e8 47 * }
jamesadevine 0:e1a608bb55e8 48 * @endcode
jamesadevine 0:e1a608bb55e8 49 */
jamesadevine 0:e1a608bb55e8 50 class PortIn {
jamesadevine 0:e1a608bb55e8 51 public:
jamesadevine 0:e1a608bb55e8 52
jamesadevine 0:e1a608bb55e8 53 /** Create an PortIn, connected to the specified port
jamesadevine 0:e1a608bb55e8 54 *
jamesadevine 0:e1a608bb55e8 55 * @param port Port to connect to (Port0-Port5)
jamesadevine 0:e1a608bb55e8 56 * @param mask A bitmask to identify which bits in the port should be included (0 - ignore)
jamesadevine 0:e1a608bb55e8 57 */
jamesadevine 0:e1a608bb55e8 58 PortIn(PortName port, int mask = 0xFFFFFFFF) {
jamesadevine 0:e1a608bb55e8 59 port_init(&_port, port, mask, PIN_INPUT);
jamesadevine 0:e1a608bb55e8 60 }
jamesadevine 0:e1a608bb55e8 61
jamesadevine 0:e1a608bb55e8 62 /** Read the value currently output on the port
jamesadevine 0:e1a608bb55e8 63 *
jamesadevine 0:e1a608bb55e8 64 * @returns
jamesadevine 0:e1a608bb55e8 65 * An integer with each bit corresponding to associated port pin setting
jamesadevine 0:e1a608bb55e8 66 */
jamesadevine 0:e1a608bb55e8 67 int read() {
jamesadevine 0:e1a608bb55e8 68 return port_read(&_port);
jamesadevine 0:e1a608bb55e8 69 }
jamesadevine 0:e1a608bb55e8 70
jamesadevine 0:e1a608bb55e8 71 /** Set the input pin mode
jamesadevine 0:e1a608bb55e8 72 *
jamesadevine 0:e1a608bb55e8 73 * @param mode PullUp, PullDown, PullNone, OpenDrain
jamesadevine 0:e1a608bb55e8 74 */
jamesadevine 0:e1a608bb55e8 75 void mode(PinMode mode) {
jamesadevine 0:e1a608bb55e8 76 port_mode(&_port, mode);
jamesadevine 0:e1a608bb55e8 77 }
jamesadevine 0:e1a608bb55e8 78
jamesadevine 0:e1a608bb55e8 79 /** A shorthand for read()
jamesadevine 0:e1a608bb55e8 80 */
jamesadevine 0:e1a608bb55e8 81 operator int() {
jamesadevine 0:e1a608bb55e8 82 return read();
jamesadevine 0:e1a608bb55e8 83 }
jamesadevine 0:e1a608bb55e8 84
jamesadevine 0:e1a608bb55e8 85 private:
jamesadevine 0:e1a608bb55e8 86 port_t _port;
jamesadevine 0:e1a608bb55e8 87 };
jamesadevine 0:e1a608bb55e8 88
jamesadevine 0:e1a608bb55e8 89 } // namespace mbed
jamesadevine 0:e1a608bb55e8 90
jamesadevine 0:e1a608bb55e8 91 #endif
jamesadevine 0:e1a608bb55e8 92
jamesadevine 0:e1a608bb55e8 93 #endif