Andrea Ghirardello / Mbed 2 deprecated Keypad_Example

Dependencies:   Hotboards_keypad TextLCD mbed

Fork of Chronometer_V2 by VR FabLab - RoboVal

Files at this revision

API Documentation at this revision

Comitter:
Ghiri
Date:
Mon Mar 26 21:13:28 2018 +0000
Parent:
0:1a92e4a37697
Commit message:
Keypad program test

Changed in this revision

Hotboards_keypad.lib Show annotated file Show diff for this revision Revisions of this file
TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Hotboards_keypad.lib	Mon Mar 26 21:13:28 2018 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/Hotboards/code/Hotboards_keypad/#e870110f753b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Mon Mar 26 21:13:28 2018 +0000
@@ -0,0 +1,1 @@
+http://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- a/main.cpp	Thu Nov 23 14:20:48 2017 +0000
+++ b/main.cpp	Mon Mar 26 21:13:28 2018 +0000
@@ -21,9 +21,9 @@
 //##############################################################
 
 #include <stdlib.h>
- 
 #include "mbed.h"
 #include "TextLCD.h"
+#include "Hotboards_keypad.h"
  
  
 // Default Number Lap
@@ -32,87 +32,54 @@
 // Reference for Low/Min Voltage battery
 #define VBAT_MIN 7.2
  
+// Defines the keys array with it's respective number of rows & cols,
+// and with the value of each key
+char keys[ 4 ][ 4 ] =
+{
+    { '1' , '2' , '3' , 'A' },
+    { '4' , '5' , '6' , 'B' },
+    { '7' , '8' , '9' , 'C' },
+    { '*' , '0' , '#' , 'D' }
+};
  
-typedef struct time_screen {
-   int cents;
-   int seconds;
-   int minutes;
-} measured_time;
+// Pin keypad 4x4
+//  1,    2,     3,    4,     5,    6,    7,    8
+//  C4,   C3,    C2,   C1,    R4,   R3,   R2,   R1
+// PB_0, PA_4 , PA_1 , PA_0, PA_13, PA_14, PC_14, PC_15
+// PC_15, PC_14, PA_14, PA_13, PA_0, PA_1, PA_4, PB_0
+// 
+// Defines the pins connected to the rows
+DigitalInOut rowPins[ 4 ] = { PB_0 , PA_4 , PA_1 , PA_0 };
+
+// Defines the pins connected to the cols
+DigitalInOut colPins[ 4 ] = { PB_0 , PA_4 , PA_1 , PA_0  };
  
+// Creates a new keyboard with the values entered before
+Keypad kpd( makeKeymap( keys ) , rowPins , colPins , 4 , 4 );
+ 
+// Configures the serial port
+Serial pc( USBTX , USBRX );
+ 
+
 
  // read Voltage battery
 DigitalOut heartbeat(LED1);
 
 // read Voltage battery, analog pin used PC_3 (Pin 37 of Morpho layout)
-AnalogIn vbat(PC_3);
+//AnalogIn vbat(PC_3);
  
 // User button pressure 
 InterruptIn user_button(USER_BUTTON); 
 
 // Sensor connected to digital input D9, alias PC7 on Morpho layout
+// Now p29 and p31
 InterruptIn proximity(D9); 
- 
-Timer t;
+
 
 // LCD Display (RS, E, D4, D5, D6, D7);
 TextLCD lcd(D2,D3,D4,D5,D6,D7); 
  
-int lap = 0;
-int last_read = 0;
-int lap_time = 0;
- 
- 
-// Conversion from millisecond to mm:ss:cc data format
-measured_time human_read(int ms){
-    measured_time read;
-    div_t qr = div(ms,1000);
-    
-    read.cents = qr.rem % 100;
-    
-    qr = div(qr.quot,60);
-    read.seconds = qr.rem;
-    
-    qr = div(qr.quot,60);
-    read.minutes = qr.rem;
-    
-    return read;    
-}
- 
-// Function to measure time elapsed 
-void measure_time(){
-    int read = t.read_ms();
-    
-    if(lap == 0){
-        t.start();
-        lap++;
-    }else{
-        //Dabouncing per evitare problemi
-        if(read - last_read > 1000){
-            
-            lap_time = read - last_read;
-            
-            if(lap >= NUM_LAP){
-                t.stop();
-                lap++;
-            }else{
-                lap++;
-            }
-            
-            last_read = read;     
-        }
-    }
-    
-}
 
-// Function to reset measure done
-void reset_measure(){
-    t.stop();
-    t.reset();
-    lap = 0;
-    last_read = 0;
-    lcd.cls();
-}
- 
  
  
 //------------------------------------------------------------ 
@@ -124,45 +91,25 @@
 int main() {
     
     proximity.mode(PullDown);
-    proximity.rise(&measure_time);    
-    user_button.fall(&reset_measure);
+  
     
-  
-   
-    
-    while(true) {
-        int read = t.read_ms(); 
-       
-        measured_time time = human_read(read);
+    while(true) {       
         
         lcd.locate(0,0);
-        lcd.printf("Totale %02d:%02d:%02d",time.minutes,time.seconds,time.cents);
-       
-        //Gestione dei parziali
-        if(lap > 1){
-            time = human_read(lap_time);
-            lcd.locate(0,1);
-            lcd.printf("Giro %d %02d:%02d:%02d",lap - 1,time.minutes,time.seconds,time.cents);
-        }
+        lcd.printf("Character: ");
         
         heartbeat = !heartbeat;
-        
+                
+        // Poll the keypad to look for any activation
+        char key = kpd.getKey( );
         
-        if(lap > 0 && lap <= NUM_LAP){
-            wait(0.1);
-        }else{
-            if(lap == 0){
-                //Controllo batteria con partitore resistivo
-                double battery =  ((3.3L * vbat) * 57) / 10;
-                if(battery < VBAT_MIN){
-                    lcd.locate(0,1);
-                    lcd.printf("LOW BAT %2.1f",battery);
-                }else{
-                    lcd.locate(0,1);
-                    lcd.printf("OK  BAT %2.1f",battery);
-                }
-            }
-            wait(1);
+        // If any key was pressed
+        if( key )
+        {
+            // Display the key pressed on serial port
+            lcd.locate(0,1);            
+            lcd.printf( "%c" , key );
+            //lcd.printf( "\n\r" );
         }
     }
 }