7 Segment disp

Dependencies:   mbed

Fork of Part4 by Pranav Sahay

main.cpp

Committer:
jaredwil
Date:
2015-02-08
Revision:
1:82e1e022a6d5
Parent:
0:288c00e3c1ae

File content as of revision 1:82e1e022a6d5:

//Part 4
//This code is similar to part 3 but displays the dot
//or dash on a seven segment display. Again dot or 
//dash is determined by length of input by user

#include "mbed.h"

//Initialize Interrupt
InterruptIn pound(p25);
//Initialize Digital I/O
DigitalOut myled(LED1);
DigitalOut dot(p20);
DigitalOut dash(p19);
//Initialize Timers
Timer t1;
Timer t2;

//Serial Interface for Debugging 
Serial pc(USBTX, USBRX);

//Function to be called when button is pressed
void pPress () {
        t2.stop();            //stop space timer
        if(t2.read_ms() > 400)//if the length is greater than 400ms
         dot = 1;             //turn of dot
         dash= 1;             //turn of dash
         pc.printf(" ");      //space is added         
        t1.start();           //start dot/dash timer
        myled = 1;            //turn on led for debugging
    }
    
//Function to be called when button is released
void pRelease() {
        t1.stop();          //stop dot/dash timer
        if(t1.read_ms() > 30 && t1.read_ms() <= 200){
            dot = 0;        //turn on dot 
            pc.printf(".");
        }
        else if (t1.read_ms() > 200) {
            pc.printf("-");   //register dash don't turn on because already on
        }
        //delay for stability
        wait(0.1);
        
        //reset timers
        t1.reset();
        t2.reset();
        
        dot = 1;              //turn dot off
        dash = 1;             //turn dash off
        myled = 0;            //turn off led
        //start space timer
        t2.start();
    }
int main() {
    //Int State for LEDs
    dot=1;
    dash=1;
    myled = 0;
    //Initialize Inturrupt funct rise/fall edge
    pound.rise(&pPress);
    pound.fall(&pRelease);
    t2.start();     //start space timer
    while(1) {
        if(t1.read_ms()> 200) { //if this is true then button is depressed still 
            dash = 0;           //dash is registered
            wait(0.1);          //wait short duration for stability
            dash = 1;           //turn off then back on if still depressed
            }
    }
}