light encoding code

Dependencies:   mbed

main.cpp

Committer:
limdan7
Date:
2014-09-21
Revision:
0:8bfa74e1293b

File content as of revision 0:8bfa74e1293b:

#include "mbed.h"
Serial pc(USBTX, USBRX); // tx, rx
 
DigitalIn switch1(D13); // input switch
DigitalOut led(D12); // light on.

AnalogIn p1(A0);
AnalogIn p2(A1);
AnalogIn p3(A2);
AnalogIn p4(A3);
AnalogIn p5(A4);

int sw1 = 0; // input variable

int p1s=0; // individual input with switches
int p2s=0;
int p3s=0;
int p4s=0;
int p5s=0;

float ps[] = {0, 0, 0, 0, 0};
int psl[] = {0,0,0,0,0};

int binary = 0; // binary input
int ascii_c = 0; // capital
int ascii_l = 0; // lower letter
bool CAPS =0;// Caps Lock history variable.

bool lastButton = 0;
bool currentButton = 0; 
bool current =0;

bool debounce(bool last) // function for debounce
{
    sw1 = switch1.read(); // reads current switch status
    current = sw1;
    if (last != current)
    {
        wait(0.01); //eliminating bouncing with delayx
        current = sw1;    
    }
    return current;        
}

int encode(int reading)
{
    ps[0] = p1.read();
    ps[1] = p2.read();
    ps[2] = p3.read();
    ps[3] = p4.read();
    ps[4] = p5.read();
    for(int i =0;i<5;i++)
    {
    if(ps[i]>0.005)
    {
        psl[i] =1;
    }
    else 
    {
        psl[i] =0;
    }
    }
    binary = psl[4]*16 + psl[3]*8 + psl[2]*4+psl[1]*2+psl[0]*1;
    return binary;
    }

int main(){
 
    while(1)
    {
    led =1;  // led on!
        
    currentButton = debounce(lastButton);
    if (lastButton ==0 && currentButton ==1)
    {
    encode(binary);
    if(binary<=25)// 0-25 : A-Z.
    {
    switch(CAPS)
    {
    case 0 : // Capital
    ascii_c = binary + 65; 
    pc.printf("%c",ascii_c);
    break ;
    
    case 1 : //lower case    
    ascii_c = binary +97;
    pc.printf("%c",ascii_c);
    break;
    
    }
    }
    //else if for CAPS
    else
    {
        switch(binary)
        {
            case 26 :
            ascii_c = binary + 20; // prints out '.' 
            pc.printf("%c",ascii_c);   
            break;
            
            case 27 :
            ascii_c = binary + 36; // prints out '?' 
            pc.printf("%c",ascii_c);   
            break;
            
            case 28 :
            ascii_c = binary + 4; // prints out 'space' 
            pc.printf("%c",ascii_c);   
            break;
            
            case 29 :
            ascii_c = binary -21; // backspace
            pc.printf("%c",ascii_c);   
            break;
            
            case 30 :
            ascii_c = binary - 17; // prints out 'enter' 
            pc.printf("\n%c",ascii_c);   
            break;
            
            case 31 : //CAPS Lock 
            CAPS =! CAPS;
            break;
    
            }
    }
    
    }    
    lastButton = currentButton;

    }
}