7 Segment disp

Dependencies:   mbed

Fork of Part4 by Pranav Sahay

Committer:
jaredwil
Date:
Sun Feb 08 16:00:09 2015 +0000
Revision:
1:82e1e022a6d5
Parent:
0:288c00e3c1ae
commented;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jaredwil 1:82e1e022a6d5 1 //Part 4
jaredwil 1:82e1e022a6d5 2 //This code is similar to part 3 but displays the dot
jaredwil 1:82e1e022a6d5 3 //or dash on a seven segment display. Again dot or
jaredwil 1:82e1e022a6d5 4 //dash is determined by length of input by user
jaredwil 1:82e1e022a6d5 5
psahay 0:288c00e3c1ae 6 #include "mbed.h"
psahay 0:288c00e3c1ae 7
jaredwil 1:82e1e022a6d5 8 //Initialize Interrupt
psahay 0:288c00e3c1ae 9 InterruptIn pound(p25);
jaredwil 1:82e1e022a6d5 10 //Initialize Digital I/O
psahay 0:288c00e3c1ae 11 DigitalOut myled(LED1);
psahay 0:288c00e3c1ae 12 DigitalOut dot(p20);
psahay 0:288c00e3c1ae 13 DigitalOut dash(p19);
jaredwil 1:82e1e022a6d5 14 //Initialize Timers
psahay 0:288c00e3c1ae 15 Timer t1;
psahay 0:288c00e3c1ae 16 Timer t2;
psahay 0:288c00e3c1ae 17
jaredwil 1:82e1e022a6d5 18 //Serial Interface for Debugging
psahay 0:288c00e3c1ae 19 Serial pc(USBTX, USBRX);
psahay 0:288c00e3c1ae 20
jaredwil 1:82e1e022a6d5 21 //Function to be called when button is pressed
psahay 0:288c00e3c1ae 22 void pPress () {
jaredwil 1:82e1e022a6d5 23 t2.stop(); //stop space timer
jaredwil 1:82e1e022a6d5 24 if(t2.read_ms() > 400)//if the length is greater than 400ms
jaredwil 1:82e1e022a6d5 25 dot = 1; //turn of dot
jaredwil 1:82e1e022a6d5 26 dash= 1; //turn of dash
jaredwil 1:82e1e022a6d5 27 pc.printf(" "); //space is added
jaredwil 1:82e1e022a6d5 28 t1.start(); //start dot/dash timer
jaredwil 1:82e1e022a6d5 29 myled = 1; //turn on led for debugging
psahay 0:288c00e3c1ae 30 }
jaredwil 1:82e1e022a6d5 31
jaredwil 1:82e1e022a6d5 32 //Function to be called when button is released
psahay 0:288c00e3c1ae 33 void pRelease() {
jaredwil 1:82e1e022a6d5 34 t1.stop(); //stop dot/dash timer
psahay 0:288c00e3c1ae 35 if(t1.read_ms() > 30 && t1.read_ms() <= 200){
jaredwil 1:82e1e022a6d5 36 dot = 0; //turn on dot
psahay 0:288c00e3c1ae 37 pc.printf(".");
psahay 0:288c00e3c1ae 38 }
psahay 0:288c00e3c1ae 39 else if (t1.read_ms() > 200) {
jaredwil 1:82e1e022a6d5 40 pc.printf("-"); //register dash don't turn on because already on
psahay 0:288c00e3c1ae 41 }
jaredwil 1:82e1e022a6d5 42 //delay for stability
psahay 0:288c00e3c1ae 43 wait(0.1);
jaredwil 1:82e1e022a6d5 44
jaredwil 1:82e1e022a6d5 45 //reset timers
psahay 0:288c00e3c1ae 46 t1.reset();
psahay 0:288c00e3c1ae 47 t2.reset();
psahay 0:288c00e3c1ae 48
jaredwil 1:82e1e022a6d5 49 dot = 1; //turn dot off
jaredwil 1:82e1e022a6d5 50 dash = 1; //turn dash off
jaredwil 1:82e1e022a6d5 51 myled = 0; //turn off led
jaredwil 1:82e1e022a6d5 52 //start space timer
psahay 0:288c00e3c1ae 53 t2.start();
psahay 0:288c00e3c1ae 54 }
psahay 0:288c00e3c1ae 55 int main() {
jaredwil 1:82e1e022a6d5 56 //Int State for LEDs
psahay 0:288c00e3c1ae 57 dot=1;
psahay 0:288c00e3c1ae 58 dash=1;
psahay 0:288c00e3c1ae 59 myled = 0;
jaredwil 1:82e1e022a6d5 60 //Initialize Inturrupt funct rise/fall edge
psahay 0:288c00e3c1ae 61 pound.rise(&pPress);
psahay 0:288c00e3c1ae 62 pound.fall(&pRelease);
jaredwil 1:82e1e022a6d5 63 t2.start(); //start space timer
psahay 0:288c00e3c1ae 64 while(1) {
jaredwil 1:82e1e022a6d5 65 if(t1.read_ms()> 200) { //if this is true then button is depressed still
jaredwil 1:82e1e022a6d5 66 dash = 0; //dash is registered
jaredwil 1:82e1e022a6d5 67 wait(0.1); //wait short duration for stability
jaredwil 1:82e1e022a6d5 68 dash = 1; //turn off then back on if still depressed
psahay 0:288c00e3c1ae 69 }
psahay 0:288c00e3c1ae 70 }
psahay 0:288c00e3c1ae 71 }