BusIn

Use the BusIn class to create a number of DigitalIn pins that can be read as one value.

You can use any of the numbered mbed pins as a DigitalIn in the BusIn.

API

Public Member Functions

 BusIn (PinName p0, PinName p1=NC, PinName p2=NC, PinName p3=NC, PinName p4=NC, PinName p5=NC, PinName p6=NC, PinName p7=NC, PinName p8=NC, PinName p9=NC, PinName p10=NC, PinName p11=NC, PinName p12=NC, PinName p13=NC, PinName p14=NC, PinName p15=NC)
 BusIn (PinName pins[16])
int read ()
void mode (PinMode pull)
int mask ()
 operator int ()
DigitalInoperator[] (int index)

Additional Inherited Members

- Protected Member Functions inherited from mbed::NonCopyable< BusIn >
 NonCopyable ()
 ~NonCopyable ()

Hello World!


/* mbed Example Program
 * Copyright (c) 2006-2014 ARM Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "mbed.h"

BusIn nibble(D0, D1, D2, D3); // Change these pins to buttons on your board.

int main() {
    
    // Optional: set mode as PullUp/PullDown/PullNone/OpenDrain
    nibble.mode(PullNone); 
    
    while(1) {
        // check bits set in nibble
        switch(nibble & nibble.mask()) { // read the bus and mask out bits not being used
            case 0x0: printf("0b0000, D3,D2,D1,D0 are low  \n\r");break;
            case 0x1: printf("0b0001,          D0  is high \n\r");break;
            case 0x2: printf("0b0010,       D1     is high \n\r");break; 
            case 0x3: printf("0b0011,       D1,D0 are high \n\r");break;
            case 0x4: printf("0b0100,    D2        is high \n\r");break;
            case 0x5: printf("0b0101,    D2,  ,D0 are high \n\r");break;
            case 0x6: printf("0b0110,    D2,D1    are high \n\r");break;
            case 0x7: printf("0b0111,    D2,D1,D0 are high \n\r");break;
            case 0x8: printf("0b1000, D3           is high \n\r");break; 
            // ...
            case 0xF: printf("0b1111, D3,D2,D1,D0 are high \n\r");break;
        }
        wait(1);
    }
}