Keg sharing system

Dependencies:   4DGL-uLCD-SE TextLCD mbed

main.cpp

Committer:
taylornichols
Date:
2016-12-07
Revision:
0:dd375f44efef
Child:
1:f531f70a27c3

File content as of revision 0:dd375f44efef:

#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);
    }
}