Events
Dependencies: Hotboards_keypad mbed
main.cpp@0:2725d1115a41, 2016-03-08 (annotated)
- Committer:
- RomanValenciaP
- Date:
- Tue Mar 08 21:33:48 2016 +0000
- Revision:
- 0:2725d1115a41
comments
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RomanValenciaP | 0:2725d1115a41 | 1 | |
RomanValenciaP | 0:2725d1115a41 | 2 | #include "mbed.h" |
RomanValenciaP | 0:2725d1115a41 | 3 | #include "Hotboards_keypad.h" |
RomanValenciaP | 0:2725d1115a41 | 4 | |
RomanValenciaP | 0:2725d1115a41 | 5 | // Se define el arreglo keys con su respectivo número de renglones |
RomanValenciaP | 0:2725d1115a41 | 6 | // y columnas, y con el valor de cada una de las teclas |
RomanValenciaP | 0:2725d1115a41 | 7 | char keys[ 4 ][ 4 ] = |
RomanValenciaP | 0:2725d1115a41 | 8 | { |
RomanValenciaP | 0:2725d1115a41 | 9 | { '1' , '2' , '3' , 'A' }, |
RomanValenciaP | 0:2725d1115a41 | 10 | { '4' , '5' , '6' , 'B' }, |
RomanValenciaP | 0:2725d1115a41 | 11 | { '7' , '8' , '9' , 'C' }, |
RomanValenciaP | 0:2725d1115a41 | 12 | { '*' , '0' , '#' , 'D' } |
RomanValenciaP | 0:2725d1115a41 | 13 | }; |
RomanValenciaP | 0:2725d1115a41 | 14 | |
RomanValenciaP | 0:2725d1115a41 | 15 | // Se definen los pines que conectan a las filas |
RomanValenciaP | 0:2725d1115a41 | 16 | DigitalInOut rowPins[ 4 ] = { PA_6 , PA_7 , PB_6 , PC_7 }; |
RomanValenciaP | 0:2725d1115a41 | 17 | // Se definen los pines que conectan a las columnas |
RomanValenciaP | 0:2725d1115a41 | 18 | DigitalInOut colPins[ 4 ] = { PA_8 , PB_10 , PB_4 , PB_5 }; |
RomanValenciaP | 0:2725d1115a41 | 19 | |
RomanValenciaP | 0:2725d1115a41 | 20 | // Se crea un nuevo teclado con los valores anteriores |
RomanValenciaP | 0:2725d1115a41 | 21 | Keypad kpd( makeKeymap( keys ) , rowPins , colPins , 4 , 4 ); |
RomanValenciaP | 0:2725d1115a41 | 22 | |
RomanValenciaP | 0:2725d1115a41 | 23 | // Se configura el puerto serial |
RomanValenciaP | 0:2725d1115a41 | 24 | Serial pc( USBTX , USBRX ); |
RomanValenciaP | 0:2725d1115a41 | 25 | |
RomanValenciaP | 0:2725d1115a41 | 26 | |
RomanValenciaP | 0:2725d1115a41 | 27 | // Esta función se manda a llamar dentro de la función getKey |
RomanValenciaP | 0:2725d1115a41 | 28 | // cuando una tecla cambia su estado. |
RomanValenciaP | 0:2725d1115a41 | 29 | void kpdEvent( KeypadEvent key ) |
RomanValenciaP | 0:2725d1115a41 | 30 | { |
RomanValenciaP | 0:2725d1115a41 | 31 | // Se pide el estado de la tecla activa |
RomanValenciaP | 0:2725d1115a41 | 32 | switch( kpd.getState( ) ) |
RomanValenciaP | 0:2725d1115a41 | 33 | { |
RomanValenciaP | 0:2725d1115a41 | 34 | case PRESSED: // Se presionó |
RomanValenciaP | 0:2725d1115a41 | 35 | pc.printf( "%c\t" , key ); |
RomanValenciaP | 0:2725d1115a41 | 36 | pc.printf( "PRESSED\n\r" ); |
RomanValenciaP | 0:2725d1115a41 | 37 | break; |
RomanValenciaP | 0:2725d1115a41 | 38 | case RELEASED: // Se soltó |
RomanValenciaP | 0:2725d1115a41 | 39 | pc.printf( "%c\t" , key ); |
RomanValenciaP | 0:2725d1115a41 | 40 | pc.printf( "RELEASED\n\r" ); |
RomanValenciaP | 0:2725d1115a41 | 41 | break; |
RomanValenciaP | 0:2725d1115a41 | 42 | case HOLD: // Está presionada |
RomanValenciaP | 0:2725d1115a41 | 43 | pc.printf( "%c\t" , key ); |
RomanValenciaP | 0:2725d1115a41 | 44 | pc.printf( "HOLD\n\r" ); |
RomanValenciaP | 0:2725d1115a41 | 45 | break; |
RomanValenciaP | 0:2725d1115a41 | 46 | } |
RomanValenciaP | 0:2725d1115a41 | 47 | } |
RomanValenciaP | 0:2725d1115a41 | 48 | |
RomanValenciaP | 0:2725d1115a41 | 49 | int main() |
RomanValenciaP | 0:2725d1115a41 | 50 | { |
RomanValenciaP | 0:2725d1115a41 | 51 | // Se agrega la función kpdEvent como evento |
RomanValenciaP | 0:2725d1115a41 | 52 | kpd.addEventListener( kpdEvent ); |
RomanValenciaP | 0:2725d1115a41 | 53 | while(1) |
RomanValenciaP | 0:2725d1115a41 | 54 | { |
RomanValenciaP | 0:2725d1115a41 | 55 | // Se consulta constantemente para revisar si se presionó |
RomanValenciaP | 0:2725d1115a41 | 56 | // una tecla o cambió su estado, esto es necesario para que se |
RomanValenciaP | 0:2725d1115a41 | 57 | // llame a la función kdpEvent |
RomanValenciaP | 0:2725d1115a41 | 58 | kpd.getKey( ); |
RomanValenciaP | 0:2725d1115a41 | 59 | } |
RomanValenciaP | 0:2725d1115a41 | 60 | } |