![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Keg sharing system
Dependencies: 4DGL-uLCD-SE TextLCD mbed
Diff: main.cpp
- Revision:
- 0:dd375f44efef
- Child:
- 1:f531f70a27c3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Dec 07 06:54:24 2016 +0000 @@ -0,0 +1,77 @@ +#include "mbed.h" +#include <mpr121.h> + +// on-board LEDs +DigitalOut led1 ( LED1 ) ; +DigitalOut led2 ( LED2 ) ; +DigitalOut led3 ( LED3 ) ; +DigitalOut led4 ( LED4 ) ; + +// COM port +Serial com( USBTX , USBRX , 9600 ); + +// keypad +InterruptIn interrupt ( p26 ) ; +I2C i2c ( p9 , p10 ) ; +Mpr121 keypad ( & i2c , Mpr121::ADD_VSS ) ; + +int unsigned pin_count ( 0 ) ; +int unsigned pin_value ( 0 ) ; +void keypad_callback ( ) +{ + // TEST + led2 = ! led2 ; +// com.putc ( 'y' ) ; +// com.putc ( 'z' ) ; +// com.putc ( '\n' ) ; + int value ( keypad.read(0x00) ) ; + value += keypad.read(0x01) << 8 ; +// com.printf( "%x\n" , value ) ; + if ( value == 0 ) return ; + + switch ( value ) + { +// case 0 : return ; + case 0x1 : if ( pin_count != 0 ) -- pin_count ; pin_value /= 10 ; return ; // DELETE + case 0x10 : pin_value = pin_value * 10 ; break ; // 0 + case 0x100 : pin_count = pin_value = 0 ; return ; // ENTER + case 0x2 : pin_value = pin_value * 10 + 1 ; break ; + case 0x20 : pin_value = pin_value * 10 + 2 ; break ; + case 0x200 : pin_value = pin_value * 10 + 3 ; break ; + case 0x4 : pin_value = pin_value * 10 + 4 ; break ; + case 0x40 : pin_value = pin_value * 10 + 5 ; break ; + case 0x400 : pin_value = pin_value * 10 + 6 ; break ; + case 0x8 : pin_value = pin_value * 10 + 7 ; break ; + case 0x80 : pin_value = pin_value * 10 + 8 ; break ; + case 0x800 : pin_value = pin_value * 10 + 9 ; break ; + } + if ( pin_count == 3 ) + { +// com.printf ( "{%d:%d}\n" , pin_value , pin_count ) ; + com.printf ( "%d\n\r" , pin_value ) ; + pin_value = pin_count = 0 ; + return ; +// send pin +// return ; + } +// com.printf ( "%d : %d\n" , pin_value , pin_count ) ; + ++ pin_count ; +// com.printf(8080) ; +// int unsigned num = 8080 ; +// com.write ( ) ; +} + +int main ( ) +{ + // INIT + interrupt.fall ( & keypad_callback ) ; + interrupt.mode ( PullUp ) ; + + while(1) + { + led1 = 1; + wait(0.2); + led1 = 0; + wait(0.2); + } +}