Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Hotboards_keypad TextLCD mbed
Fork of Chronometer_V2 by
Revision 1:26bcd89c18e5, committed 2018-03-26
- Comitter:
- Ghiri
- Date:
- Mon Mar 26 21:13:28 2018 +0000
- Parent:
- 0:1a92e4a37697
- Commit message:
- Keypad program test
Changed in this revision
--- /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" );
}
}
}
