reading a complete dip switch when it changes its value
Dependencies: Hotboards_switches mbed
main.cpp
- Committer:
- RomanValenciaP
- Date:
- 2016-03-15
- Revision:
- 1:11a5f3209b40
- Parent:
- 0:d5cdb8374e51
- Child:
- 2:eb1ab05e9a0a
File content as of revision 1:11a5f3209b40:
/* Library: Hotboards_switches.h * Project: dipsw_change * File: main.cpp * Author: Román Valencia * * Read an entire dip switch composed by 8 interrupts, only when it changes its value */ #include "mbed.h" #include "Hotboards_switches.h" // Creates a single sw object composed by 8 interrupts. theses interrupts will give us a // LOW(0) value when close because our dip switch works with pull-ups. Hotboards_switches dip_sw( PA_6 , PA_7 , PB_6 , PC_7 , PA_9 , PA_8 , PB_10 , PB_4 ); // If your dip switch will gave you a HIGH(1) value when close, then we need to create the sw // object with an extra parameter: // Hotboards_switches dip_sw( PA_6 , PA_7 , PB_6 , PC_7 , PA_9 , PA_8 , PB_10 , PB_4 , 1 ); // In any case the functions will return a HIGH(1) value any time the sw is closed // For this example we will use the USB serial port, here we initialize it Serial pc(USBTX,USBRX); int i, j; uint8_t value; int main() { while(1) { if( dip_sw.hasItChange( ) ) { // Reads the dip switch and puts it in value value = dip_sw.read(); // Inverts the read value to make it coincide with the state of each // switch in binary value = ~value; // Sends throught USB serial the value in decimal pc.printf( "dec = " ); pc.printf( "%d\r" , value ); // Sends through USB serial the value in binary pc.printf( "bin = " ); for(i=0;i<8;i++) //Extracts and shows the binary value of each sw { j = value&0x80; //Applies a mask(10000000) to extract the value of the bit in turn j>>=7; //Moves this bit 7 positions to the right pc.printf("%d",j); //Sends through USB serial the value of the extracted bit value <<=1; //Moves the position 1 bit to the left to extract the next bit } pc.printf( "\n\r" ); wait_ms( 250 ); } } }