Press up counter

Dependencies:   mbed

main.cpp

Committer:
xZabanyax
Date:
2016-06-16
Revision:
0:63d1b5ee0d92

File content as of revision 0:63d1b5ee0d92:

#include "mbed.h"
Ticker counter;
int count;
float adc, volts, inches;
bool one;
int iterations;
int timeout;
PortOut Rows(PortC,0xFF);
PortOut Cols(PortD,0b111111111);

const char message[113]= {
    0b001111100,
    0b000010100,
    0b000010100,
    0b000000000,
    0b001000100,
    0b001111100,
    0b001000100,
    0b000000000,
    0b001111100,
    0b000011000,
    0b000110000,
    0b001111100,
    0b000000000,
    0b001000100,
    0b001111100,
    0b001000100,
    0b000000000,
    0b001011000,
    0b001010100,
    0b000110100,
    0b000000000,
    0b001111100,
    0b000010000,
    0b001111100,
    0b000000000, //25, 0 starts at 25
    0b011111101, //0 26
    0b010000001,
    0b010000001,
    0b011111101,
    0b000000000,//1
    0b010000100,
    0b011111101,
    0b010000000,
    0b011110001,//2
    0b010010001,
    0b010010001,
    0b010011101,
    0b010010001,//3
    0b010010001,
    0b010010001,
    0b011111101,
    0b000011101,//4
    0b000010000,
    0b000010000,
    0b011111101,
    0b010011101,//5
    0b010010001,
    0b010010001,
    0b011110001,
    0b011111101,//6
    0b010010001,
    0b010010001,
    0b011110000,
    0b000000001,//7
    0b000000001,
    0b000000001,
    0b011111101,
    0b011111101,//8
    0b010010001,
    0b010010001,
    0b011111101,
    0b010011101,//9
    0b010010001,
    0b010010001,
    0b011111101,
    0b000000000,//s0 starts 66
    0b001111100,
    0b001000100,
    0b001111100,
    0b000000000,//s1
    0b001001000,
    0b001111100,
    0b001000000,
    0b000000000,//s2
    0b001110100,
    0b001010100,
    0b001011100,
    0b000000000,//s3
    0b001010100,
    0b001010100,
    0b001111100,
    0b000000000,//s4
    0b000011100,
    0b000010000,
    0b001111100,
    0b000000000,//s5
    0b001011100,
    0b001010100,
    0b001110100,
    0b000000000,//s6
    0b001111100,
    0b001010100,
    0b001110100,
    0b000000000,//s7
    0b000000100,
    0b000000100,
    0b001111100,
    0b000000000,//s8
    0b001111100,
    0b001010100,
    0b001111100,
    0b000000000,//s9
    0b001011100,
    0b001010100,
    0b001111100,
    0b001100100,//Zz  starts 106
    0b001110100,
    0b001011100,
    0b001001100,
    0b000000000,
    0b001100100,
    0b001010100,
    0b001011100,
};
AnalogIn ain(A0);

DigitalOut buzzer(PTE5);


float t = 0.001;

void printfinish(int fin)
{
    int rw,i,is;
    //write eyes
    is = fin;
    int j=is+8;
    for(i=is; i<j; i++) {
        rw=0;
        rw=1<<(i-is);
        Cols=rw;
// this inverts the row code so that only the desired row is low
        Rows=~message[i];
        wait(t);
        Rows = 0;
        Cols=0;
    }
}

void printunit(int ks)
{
    int rws,k;
    //write eyes
    int unitsortens;
    
    int l=ks+4;
    for(k=ks; k<l; k++) {
        rws=0;
        if (ks<63) {
        unitsortens=  k-ks;
    } else {
        unitsortens=k-ks+4;
    }
        rws=1<<unitsortens;
        Cols=rws;
// this inverts the row code so that only the desired row is low
        Rows=~message[k];
        wait(t);
        Rows = 0;
        Cols =0;
    }
}

void printingtens(int tens)
{

    switch (tens) {
        case 0:
            printunit(25);
            break;
        case 1:
            printunit(29);
            break;
        case 2:
            printunit(33);
            break;
        case 3:
            printunit(37);
            break;
        case 4:
            printunit(41);
            break;
        case 5:
            printunit(45);
            break;
        case 6:
            printunit(49);
            break;
        case 7:
            printunit(53);
            break;
        case 8:
            printunit(57);
            break;
        case 9:
            printunit(61);
            break;
    }
}
void printingunits(int units)
{
    switch (units) {

        case 0:
            printunit(65);
            break;
        case 1:
            printunit(69);
            break;
        case 2:
            printunit(73);
            break;
        case 3:
            printunit(77);
            break;
        case 4:
            printunit(81);
            break;
        case 5:
            printunit(85);
            break;
        case 6:
            printunit(89);
            break;
        case 7:
            printunit(93);
            break;
        case 8:
            printunit(97);
            break;
        case 9:
            printunit(101);
            break;
    }
}
void finish()
{
    int delay=2100;
    while (delay<7200) {
        int cases = delay/300;
        switch (cases) {
                //case 0:
//                x1=0;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=1;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay=delay+1;
//                break;
//
//            case 1:
//                x1=0;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=1;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay=delay+1;
//                x7=0;
//                x8=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay= delay+1;
//                break;
//
//            case 2:
//                x1=0;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=1;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x6=0;
//                x7=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay= delay+1;
//                x7=0;
//                x8=1;
//                wait(t);
//                delay= delay+1;
//                break;
//            case 3:
//                x1=0;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=1;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x5=0;
//                x6=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay= delay+1;
//                x6=0;
//                x7=1;
//                wait(t);
//                delay= delay+1;
//                x7=0;
//                wait(t);
//                delay= delay+1;
//                break;
//            case 4:
//                x1=0;
//                x2=0;
//                x3=0;
//                x4=1;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x4=0;
//                x5=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay= delay+1;
//                x5=0;
//                x6=1;
//                wait(t);
//                delay= delay+1;
//                x6=0;
//                wait(t);
//                delay= delay+1;
//                x8=1;
//                y4=1;
//                y6=0;
//                wait(t);
//                delay= delay+1;
//                break;
//            case 5:
//                x1=0;
//                x2=0;
//                x3=1;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x3=0;
//                x4=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay= delay+1;
//                x4=0;
//                x5=1;
//                wait(t);
//                delay= delay+1;
//                x5=0;
//                wait(t);
//                delay= delay+1;
//                x7=1;
//                y4=1;
//                y6=0;
//                wait(t);
//                delay= delay+1;
//                x7=0;
//                x8=1;
//                y3=0;
//                y4=0;
//                y5=0;
//                wait(t);
//                delay= delay+1;
//                break;
//            case 6:
//                x1=0;
//                x2=1;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x2=0;
//                x3=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay= delay+1;
//                x3=0;
//                x4=1;
//                wait(t);
//                delay= delay+1;
//                x4=0;
//                wait(t);
//                delay= delay+1;
//                x6=1;
//                y4=1;
//                y6=0;
//                wait(t);
//                delay= delay+1;
//                x6=0;
//                x7=1;
//                y3=0;
//                y4=0;
//                y5=0;
//                wait(t);
//                delay= delay+1;
//                x7=0;
//                x8=1;
//                y3=1;
//                y4=1;
//                y5=1;
//                wait(t);
//                delay= delay+1;
//                break;
            case 7:
                printfinish(0);
                delay=delay+8;
                break;
            case 8:
                printfinish(1);
                delay=delay+8;
                break;
            case 9:
                printfinish(2);
                delay=delay+8;
                break;
            case 10:
                printfinish(3);
                delay=delay+8;
                break;
            case 11:
                printfinish(4);
                delay=delay+8;
                break;
            case 12:
                printfinish(5);
                delay=delay+8;
                break;
            case 13:
                printfinish(6);
                delay=delay+8;
                break;
            case 14:
                printfinish(7);
                delay=delay+8;
                break;
            case 15:
                printfinish(8);
                delay=delay+8;
                break;
            case 16:
                printfinish(9);
                delay=delay+8;
                break;
            case 17:
                printfinish(10);
                delay=delay+8;
                break;
            case 18:
                printfinish(11);
                delay=delay+8;
                break;
            case 19:
                printfinish(12);
                delay=delay+8;
                break;
            case 20:
                printfinish(13);
                delay=delay+8;
                break;
            case 21:
                printfinish(14);
                delay=delay+8;
                break;
            case 22:
                printfinish(15);
                delay=delay+8;
                break;
            case 23:
                printfinish(16);
                delay=delay+8;
                break;
                //case 24:
//                x1=1;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=1;
//                y3=0;
//                y4=0;
//                y5=1;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x1=0;
//                x2=1;
//                y2=0;
//                y3=1;
//                wait(t);
//                delay = delay+1;
//                x2=0;
//                x3=1;
//                y6=1;
//                y5=0;
//                wait(t);
//                delay = delay+1;
//                x3=0;
//                wait(t);
//                delay = delay+1;
//                x5=1;
//                y3=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x5=0;
//                x6=1;
//                y2=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay = delay+1;
//                x6=0;
//                x7=1;
//                y2=0;
//                y3=0;
//                y5=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x7=0;
//                break;
//            case 25:
//                x1=1;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=1;
//                y4=0;
//                y5=1;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x1=0;
//                x2=1;
//                y6=1;
//                y5=0;
//                wait(t);
//                delay = delay+1;
//                x2=0;
//                wait(t);
//                delay = delay+1;
//                x4=1;
//                y3=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x4=0;
//                x5=1;
//                y2=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay = delay+1;
//                x5=0;
//                x6=1;
//                y2=0;
//                y3=0;
//                y5=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x7=0;
//                x6=0;
//                break;
//            case 26:
//                x1=1;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=1;
//                y4=0;
//                y5=0;
//                y6=1;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x1=0;
//                wait(t);
//                delay = delay+1;
//                x3=1;
//                y3=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x3=0;
//                x4=1;
//                y2=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay = delay+1;
//                x4=0;
//                x5=1;
//                y2=0;
//                y3=0;
//                y5=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x7=0;
//                x6=0;
//                x5=0;
//                break;
//            case 27:
//                x1=0;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=1;
//                y4=0;
//                y5=0;
//                y6=1;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x2=1;
//                y3=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x2=0;
//                x3=1;
//                y2=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay = delay+1;
//                x3=0;
//                x4=1;
//                y2=0;
//                y3=0;
//                y5=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x7=0;
//                x6=0;
//                x5=0;
//                x4=0;
//                break;
//            case 28:
//                x1=1;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x1=0;
//                x2=1;
//                y2=1;
//                y3=1;
//                y5=1;
//                y6=1;
//                wait(t);
//                delay = delay+1;
//                x2=0;
//                x3=1;
//                y2=0;
//                y3=0;
//                y5=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x7=0;
//                x6=0;
//                x5=0;
//                x4=0;
//                x3=0;
//                break;
//            case 29:
//                x1=1;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=1;
//                y3=1;
//                y4=0;
//                y5=1;
//                y6=1;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x1=0;
//                x2=1;
//                y2=0;
//                y3=0;
//                y5=0;
//                y6=0;
//                wait(t);
//                delay = delay+1;
//                x7=0;
//                x6=0;
//                x5=0;
//                x4=0;
//                x3=0;
//                x2=0;
//                break;
//            case 30:
//                x1=1;
//                x2=0;
//                x3=0;
//                x4=0;
//                x5=0;
//                x6=0;
//                x7=0;
//                x8=0;
//                y1=1;
//                y2=0;
//                y3=0;
//                y4=0;
//                y5=0;
//                y6=0;
//                y7=1;
//                y8=1;
//                wait(t);
//                delay= delay+1;
//                x7=0;
//                x6=0;
//                x5=0;
//                x4=0;
//                x3=0;
//                x2=0;
//                x1=0;
//                break;

        }
    }
}
void counting()
{
    if (count ==00) {
        count = 99;
    }
    if (one == true) {
        adc = ain.read();           // read analog as a float
        volts = adc * 3.3;          // convert to volts
//        inches = (volts / 0.0064) ;    // 3.3V supply: ~6.4mV per inch
//        out = (int) inches;
//        printf("one is true %f\r\n", volts);
        if(volts < 0.055) {
            buzzer = 1;
            wait(0.01);
            buzzer = 0;
            one = false;
            timeout = 0;
        } else {
            buzzer = 0;
            timeout = timeout+1;   // ~20Hz update rate ; note we aren't
        }
    }
    if (one == false) {
        adc = ain.read();
        volts = adc*3.3;
//        printf("one is false %f\r\n", volts);
        if (volts > 0.1) {

            count = count -1;
            one = true;
            timeout = 0;
        } else {
            buzzer = 0;
            timeout = timeout+1;   // ~20Hz update rate ; note we aren't
        }
    }
}
void timeouts()
{
    printfinish(105);
}

int main()
{

    count = 10;
    one = true;
    iterations = 1;

    while (1) {
        while (iterations < 6) {

            int tens = count/10;
            int units = count % 10;
            if (timeout >200) {
                timeouts();
            } else {
                printingtens(tens);
                printingunits(units);
            }
            iterations= iterations+1;
        }
        if (count ==0) {
            finish();
        }
        counting();
        iterations = 1;
    }

}