:)

Dependencies:   MbedJSONValue DebounceIn TextLCD USBDevice mbed WebSocketClient cc3000_hostdriver_mbedsocket Adafruit_LEDBackpack_2

main.cpp

Committer:
ddrew73
Date:
2014-11-18
Revision:
0:16d2619002d7
Child:
1:0183a7d38878

File content as of revision 0:16d2619002d7:

#include "mbed.h"
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
#include "TextLCD.h"
#include "DebounceIn.h"
#include "USBKeyboard.h"

//LED stuff
I2C i2c(D7,D6);
Adafruit_24bargraph ledbar=Adafruit_24bargraph(&i2c);
DebounceIn upbutton(D9);
DebounceIn downbutton(D8);


//Scanner stuff

DebounceIn scanbutton(D10);

DigitalOut A_in(D0);
DigitalOut B_in(D1);
DigitalOut C_in(D2);

DigitalOut A_out(PTC7);
DigitalOut B_out(PTC0);
DigitalOut C_out(PTC3);

AnalogOut dac(PTE30);
AnalogIn  adc(PTB0);

//USBKeyboard keyboard;


//LCD stuff
//TextLCD lcd(PTD0,PTD5,PTA12,PTD4,PTA2,PTA1,TextLCD::LCD20x4);

int main()
{

    //Scan init

    float test_val = .001;
    int con_mat[8][8] = {};
    int a1,b1,c1,a2,b2,c2;
    //dac = test_val;


    //LED init
    int redcount = 0, greencount = 0, rowselect = 0, rowselect_old = 0, moved = 1;
    ledbar.begin(0x70);
    ledbar.clear();
    ledbar.writeDisplay();

    //LCD init
    /*
    lcd.cls();
    string programname = "Dan's UI Test"
    float vddmeasure = 3.14259;
    lcd.printf("%s",programname.c_str());   //Is the .c_str necessary? Some people on stack overflow say so...
    lcd.locate(0,2);
    lcd.printf("%1.3f",vddmeasure);
    */



    while(1) {


        //Display

            ledbar.setBar(rowselect_old,LED_OFF);
            ledbar.setBar(rowselect,LED_GREEN);
            ledbar.writeDisplay();
        

        //Moving the selected row
        if (upbutton.read() == 0) {
            rowselect_old = rowselect;
            rowselect = rowselect-1;
            moved = 1;
            wait(0.75);
        }

        if (downbutton.read() == 0) {
            rowselect_old = rowselect;
            rowselect = rowselect+1;
            moved = 1;
            wait(0.75);
        }

        //Boundary checking
        if (rowselect > 23) {
            rowselect = 23;
        }
        if (rowselect < 0) {
            rowselect = 0;
        }

        //Implementing scanning

        if (scanbutton.read() == 0) {

            for (int x = 0; x < 8; x++) {
                for (int y = 0; y < 8; y++) {
                    // Stupid logic to convert count value to binary...
                    A_in = x%2;
                    a1 = x%2;
                    B_in = (x/2)%2;
                    b1 = (x/2)%2;
                    C_in = (x/4)%2;
                    c1 = (x/4)%2;

                    A_out = y%2;
                    int a2 = y%2;
                    B_out = (y/2)%2;
                    b2 = (y/2)%2;
                    C_out = (y/4)%2;
                    c2 = (y/4)%2;

                    // Now we do the scan test, results are stored in con_mat
                    //wait(0.01);
                    dac = test_val;
                    float in_val = adc.read();

                    if ((in_val > .0010) && (in_val < .0025))
                        con_mat[x][y] = 1;
                    else
                        con_mat[x][y] = 0;

                    //keyboard.printf("%f %f \n",dac.read(),in_val);
                    //keyboard.printf("%d %d %d\n",a2,b2,c2);
                }
            }
            
                /*
                for (int x=0;x<8;x++) {
                for (int y=0;y<8;y++) {
                    keyboard.printf("%d ",con_mat[x][y]);
                    }}
                */
            //Displaying all connected rows as red light!
            ledbar.clear();
            for (int i=0; i<8; i++) {
                if (con_mat[rowselect][i] == 1) {
                    ledbar.setBar(i,LED_RED);
                }
            }
            ledbar.writeDisplay();
            moved = 0;
            wait(2.5);
            ledbar.clear();
            ledbar.writeDisplay();

        }
    }




}