Keg sharing system

Dependencies:   4DGL-uLCD-SE TextLCD mbed

Committer:
taylornichols
Date:
Fri Dec 09 00:21:58 2016 +0000
Revision:
2:7d499335dda5
Parent:
1:f531f70a27c3
Child:
3:861e3433e5e1
Before uLCD;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taylornichols 0:dd375f44efef 1 #include "mbed.h"
taylornichols 1:f531f70a27c3 2 #include "uLCD_4DGL.h"
taylornichols 1:f531f70a27c3 3 #include "TextLCD.h"
taylornichols 0:dd375f44efef 4 #include <mpr121.h>
taylornichols 0:dd375f44efef 5
taylornichols 1:f531f70a27c3 6
taylornichols 0:dd375f44efef 7 // on-board LEDs
taylornichols 0:dd375f44efef 8 DigitalOut led1 ( LED1 ) ;
taylornichols 0:dd375f44efef 9 DigitalOut led2 ( LED2 ) ;
taylornichols 0:dd375f44efef 10 DigitalOut led3 ( LED3 ) ;
taylornichols 0:dd375f44efef 11 DigitalOut led4 ( LED4 ) ;
taylornichols 0:dd375f44efef 12
taylornichols 0:dd375f44efef 13 // COM port
taylornichols 1:f531f70a27c3 14 Serial com ( USBTX , USBRX , 9600 );
taylornichols 0:dd375f44efef 15
taylornichols 0:dd375f44efef 16 // keypad
taylornichols 0:dd375f44efef 17 InterruptIn interrupt ( p26 ) ;
taylornichols 0:dd375f44efef 18 I2C i2c ( p9 , p10 ) ;
taylornichols 0:dd375f44efef 19 Mpr121 keypad ( & i2c , Mpr121::ADD_VSS ) ;
taylornichols 0:dd375f44efef 20
taylornichols 1:f531f70a27c3 21 // LCD ( tx , rx , reset )
taylornichols 2:7d499335dda5 22 uLCD_4DGL lcd(p28,p27,p5); // serial tx, serial rx, reset pin;
taylornichols 2:7d499335dda5 23
taylornichols 1:f531f70a27c3 24 //uLCD_4DGL lcd( p28 , p27 , p30 );
taylornichols 1:f531f70a27c3 25 //uLCD_4DGL lcd( p28 , p27 , p11 );
taylornichols 1:f531f70a27c3 26 // text display
taylornichols 2:7d499335dda5 27
taylornichols 2:7d499335dda5 28 //TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD20x4); // rs, e, d4-d7
taylornichols 2:7d499335dda5 29 //TextLCD lcd ( p22 , p23 , p24 , p25 , p26 , p27 ) ; // rs, e, d4-d7
taylornichols 1:f531f70a27c3 30
taylornichols 1:f531f70a27c3 31 // flow meter
taylornichols 2:7d499335dda5 32
taylornichols 2:7d499335dda5 33
taylornichols 1:f531f70a27c3 34 InterruptIn pulse_interrupt ( p5 ) ;
taylornichols 2:7d499335dda5 35
taylornichols 1:f531f70a27c3 36 int unsigned pulse_count ( 0 ) ;
taylornichols 2:7d499335dda5 37
taylornichols 1:f531f70a27c3 38 void pulse ( )
taylornichols 1:f531f70a27c3 39 {
taylornichols 1:f531f70a27c3 40 ++ pulse_count ;
taylornichols 2:7d499335dda5 41 }
taylornichols 2:7d499335dda5 42
taylornichols 1:f531f70a27c3 43 // com.printf ( "PULSE (%d)" , pulse_count ) ;
taylornichols 1:f531f70a27c3 44 // lcd.locate ( 0 , 4 ) ;
taylornichols 1:f531f70a27c3 45 // lcd.printf ( "PULSE (%d)" , pulse_count ) ;
taylornichols 1:f531f70a27c3 46
taylornichols 0:dd375f44efef 47 int unsigned pin_count ( 0 ) ;
taylornichols 0:dd375f44efef 48 int unsigned pin_value ( 0 ) ;
taylornichols 0:dd375f44efef 49 void keypad_callback ( )
taylornichols 0:dd375f44efef 50 {
taylornichols 0:dd375f44efef 51 led2 = ! led2 ;
taylornichols 1:f531f70a27c3 52
taylornichols 1:f531f70a27c3 53 int value ( keypad.read(0x00) ) ; value += keypad.read(0x01) << 8 ;
taylornichols 1:f531f70a27c3 54
taylornichols 1:f531f70a27c3 55 switch ( value ) // map keys to keypad values
taylornichols 0:dd375f44efef 56 {
taylornichols 1:f531f70a27c3 57 case 0 : return ; // key release
taylornichols 0:dd375f44efef 58 case 0x1 : if ( pin_count != 0 ) -- pin_count ; pin_value /= 10 ; return ; // DELETE
taylornichols 0:dd375f44efef 59 case 0x10 : pin_value = pin_value * 10 ; break ; // 0
taylornichols 1:f531f70a27c3 60 case 0x100 : // DONE
taylornichols 1:f531f70a27c3 61 float const milliLiters ( ( ( float ) pulse_count ) / 0.450f ) ;
taylornichols 1:f531f70a27c3 62 com.printf ( "a%020f\n" , milliLiters ) ;
taylornichols 1:f531f70a27c3 63 pulse_count = 0 ;
taylornichols 1:f531f70a27c3 64 return ;
taylornichols 1:f531f70a27c3 65 case 0x2 : pin_value = pin_value * 10 + 1 ; break ; // 1
taylornichols 1:f531f70a27c3 66 case 0x20 : pin_value = pin_value * 10 + 2 ; break ; // 2
taylornichols 1:f531f70a27c3 67 case 0x200 : pin_value = pin_value * 10 + 3 ; break ; // 3
taylornichols 1:f531f70a27c3 68 case 0x4 : pin_value = pin_value * 10 + 4 ; break ; // 4
taylornichols 1:f531f70a27c3 69 case 0x40 : pin_value = pin_value * 10 + 5 ; break ; // 5
taylornichols 1:f531f70a27c3 70 case 0x400 : pin_value = pin_value * 10 + 6 ; break ; // 6
taylornichols 1:f531f70a27c3 71 case 0x8 : pin_value = pin_value * 10 + 7 ; break ; // 7
taylornichols 1:f531f70a27c3 72 case 0x80 : pin_value = pin_value * 10 + 8 ; break ; // 8
taylornichols 1:f531f70a27c3 73 case 0x800 : pin_value = pin_value * 10 + 9 ; break ; // 9
taylornichols 0:dd375f44efef 74 }
taylornichols 1:f531f70a27c3 75 // lcd.locate ( pin_count , 4 ) ;
taylornichols 1:f531f70a27c3 76 // lcd.printf ( "*" ) ;
taylornichols 1:f531f70a27c3 77 if ( pin_count == 3 )
taylornichols 0:dd375f44efef 78 {
taylornichols 1:f531f70a27c3 79 // lcd.locate ( 0 , 0 ) ;
taylornichols 1:f531f70a27c3 80 // lcd.locate( 4 , 5 ) ;
taylornichols 1:f531f70a27c3 81 // lcd.printf ( "Pin: %d" , pin_value ) ;
taylornichols 1:f531f70a27c3 82 com.printf ( "p%04d\n\r" , pin_value ) ; // transmit pin
taylornichols 0:dd375f44efef 83 pin_value = pin_count = 0 ;
taylornichols 0:dd375f44efef 84 // return ;
taylornichols 1:f531f70a27c3 85
taylornichols 1:f531f70a27c3 86 char readbuffer [ 2 ] ;
taylornichols 1:f531f70a27c3 87 com.gets( readbuffer , 2 ) ; // receive verification
taylornichols 1:f531f70a27c3 88
taylornichols 1:f531f70a27c3 89 // lcd.locate ( 0 , 0 ) ;
taylornichols 1:f531f70a27c3 90 switch ( readbuffer [ 0 ] ) // parse verification
taylornichols 1:f531f70a27c3 91 {
taylornichols 1:f531f70a27c3 92 case '0' : // INVALID
taylornichols 1:f531f70a27c3 93 // lcd.filled_rectangle ( 0 , 0 , 128 , 128 , RED ) ;
taylornichols 1:f531f70a27c3 94 // lcd.printf ( "INVALID PIN" ) ;
taylornichols 1:f531f70a27c3 95 led3 = ! led3 ;
taylornichols 1:f531f70a27c3 96 break ;
taylornichols 1:f531f70a27c3 97
taylornichols 1:f531f70a27c3 98 case '1' : // VALID
taylornichols 1:f531f70a27c3 99 // lcd.filled_rectangle ( 0 , 0 , 128 , 128 , GREEN ) ;
taylornichols 1:f531f70a27c3 100 // lcd.printf ( "PIN ACCEPTED" ) ;
taylornichols 1:f531f70a27c3 101 led4 = ! led4 ;
taylornichols 1:f531f70a27c3 102 char buffer [ 32 ] ;
taylornichols 1:f531f70a27c3 103 com.gets ( buffer , sizeof ( buffer ) ) ;
taylornichols 1:f531f70a27c3 104 // lcd.printf ( "You owe $%s" , buffer ) ;
taylornichols 1:f531f70a27c3 105 // float const owed ( atof ( buffer ) ) ;
taylornichols 1:f531f70a27c3 106 // lcd.locate ( 0 , 6 ) ;
taylornichols 1:f531f70a27c3 107 // lcd.printf (
taylornichols 1:f531f70a27c3 108 // charge account
taylornichols 1:f531f70a27c3 109 // com.printf ( "Poured %d milliliters of beer.\n" , milliliters ) ;
taylornichols 1:f531f70a27c3 110 break ;
taylornichols 1:f531f70a27c3 111
taylornichols 1:f531f70a27c3 112 default: // ERROR
taylornichols 1:f531f70a27c3 113 // lcd.filled_rectangle ( 0 , 0 , 128 , 128 , YELLOW ) ;
taylornichols 1:f531f70a27c3 114 // lcd.printf ( "TRANSMISSION ERROR" ) ;
taylornichols 1:f531f70a27c3 115 led2 = ! led2 ;
taylornichols 1:f531f70a27c3 116 break ;
taylornichols 1:f531f70a27c3 117 }
taylornichols 1:f531f70a27c3 118 return ;
taylornichols 0:dd375f44efef 119 }
taylornichols 0:dd375f44efef 120 ++ pin_count ;
taylornichols 0:dd375f44efef 121 }
taylornichols 0:dd375f44efef 122
taylornichols 0:dd375f44efef 123 int main ( )
taylornichols 0:dd375f44efef 124 {
taylornichols 2:7d499335dda5 125 lcd.printf("\nHello uLCD World\n"); //Default Green on black text
taylornichols 2:7d499335dda5 126 lcd.printf("\n Starting Demo...");
taylornichols 2:7d499335dda5 127 // return 0 ;
taylornichols 2:7d499335dda5 128 pulse_interrupt.rise ( & pulse ) ;
taylornichols 2:7d499335dda5 129
taylornichols 2:7d499335dda5 130 // ...
taylornichols 2:7d499335dda5 131
taylornichols 2:7d499335dda5 132 // lcd.locate(0,0);
taylornichols 2:7d499335dda5 133 // lcd.printf("tst");
taylornichols 2:7d499335dda5 134
taylornichols 0:dd375f44efef 135 // INIT
taylornichols 0:dd375f44efef 136 interrupt.fall ( & keypad_callback ) ;
taylornichols 0:dd375f44efef 137 interrupt.mode ( PullUp ) ;
taylornichols 1:f531f70a27c3 138 // txt.locate ( 0 , 0 ) ;
taylornichols 1:f531f70a27c3 139 // txt.printf ( "INITT" ) ;
taylornichols 1:f531f70a27c3 140 // lcd.locate ( 2 , 2 ) ;
taylornichols 1:f531f70a27c3 141 // lcd.printf ( "INIT" ) ;
taylornichols 1:f531f70a27c3 142 // lcd.set_background ( RED ) ;
taylornichols 1:f531f70a27c3 143
taylornichols 0:dd375f44efef 144
taylornichols 0:dd375f44efef 145 while(1)
taylornichols 0:dd375f44efef 146 {
taylornichols 0:dd375f44efef 147 led1 = 1;
taylornichols 0:dd375f44efef 148 wait(0.2);
taylornichols 0:dd375f44efef 149 led1 = 0;
taylornichols 0:dd375f44efef 150 wait(0.2);
taylornichols 0:dd375f44efef 151 }
taylornichols 0:dd375f44efef 152 }