reading a group of switches or one only
Dependencies: Hotboards_switches mbed
main.cpp
- Committer:
- RomanValenciaP
- Date:
- 2016-03-15
- Revision:
- 2:57ea023c5aec
- Parent:
- 1:5a47f2b970eb
File content as of revision 2:57ea023c5aec:
/* Library: Hotboards_switches.h
* Project: inputs
* File: main.cpp
* Author: Diego Perez
* Modified by: Roman Valencia
* Contact: http://www.hotboards.org/
*
* Read the value from 4 sw's (dip switch) and also read the value from a single sw.
*/
#include "mbed.h"
#include "Hotboards_switches.h"
// Creates two sw objects, this interrupt will give us a LOW(0) value when close
// because our dip switch works with pull-ups.
Hotboards_switches dip1( PA_9 , PA_8 , PB_10 , PB_4 );
Hotboards_switches sw1( PA_6 );
// 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 dip1( PA_9 , PA_8 , PB_10 , PB_4 , 1 );
// Hotboards_swtiches sw1( PA_6 , 1 );
// In any case the function 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 binary, decimal;
int main()
{
while(1)
{
//Asks for the state of the sw1
if( sw1.read( ) )
{
pc.printf( "sw1 = close (on)\r" );
}
else
{
pc.printf( "sw1 = open (off)\r" );
}
//Asks for the state of an specific sw from the dip switch dip1
if( dip1.read( 2 ) )
{
pc.printf( "dip sw2 = close (on)\r" );
}
else
{
pc.printf( "dip sw2 = open (off)\r" );
}
// Reads the dip switch value and puts it in binary
binary = dip1.read();
// Inverts the read value to make it coincide with the state of each
// switch in binary
binary = ~binary;
// Applies a mask(00001111) to extract the value of the dip switch
decimal = binary&0x0F;
// Sends throught USB serial the value in decimal
pc.printf( "dec = " );
pc.printf( "%d\r" , decimal );
// Sends through USB serial the value in binary
pc.printf( "bin = " );
for(i=0;i<4;i++) //Extracts and shows the binary value of each sw
{
j = binary&0x08; //Applies a mask(00001000) to extract the value of the bit in turn
j>>=3; //Moves this bit 3 positions to the right
pc.printf("%d",j); //Sends through USB serial the value of the extracted bit
binary <<=1; //Moves the position 1 bit to the left to extract the next bit
}
pc.printf( "\n\r" );
wait( 2 );
}
}
Roman Valencia