:)

Dependencies:   MbedJSONValue DebounceIn TextLCD USBDevice mbed WebSocketClient cc3000_hostdriver_mbedsocket Adafruit_LEDBackpack_2

Committer:
ddrew73
Date:
Tue Nov 18 01:20:00 2014 +0000
Revision:
0:16d2619002d7
Child:
1:0183a7d38878
It works!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ddrew73 0:16d2619002d7 1 #include "mbed.h"
ddrew73 0:16d2619002d7 2 #include "Adafruit_LEDBackpack.h"
ddrew73 0:16d2619002d7 3 #include "Adafruit_GFX.h"
ddrew73 0:16d2619002d7 4 #include "TextLCD.h"
ddrew73 0:16d2619002d7 5 #include "DebounceIn.h"
ddrew73 0:16d2619002d7 6 #include "USBKeyboard.h"
ddrew73 0:16d2619002d7 7
ddrew73 0:16d2619002d7 8 //LED stuff
ddrew73 0:16d2619002d7 9 I2C i2c(D7,D6);
ddrew73 0:16d2619002d7 10 Adafruit_24bargraph ledbar=Adafruit_24bargraph(&i2c);
ddrew73 0:16d2619002d7 11 DebounceIn upbutton(D9);
ddrew73 0:16d2619002d7 12 DebounceIn downbutton(D8);
ddrew73 0:16d2619002d7 13
ddrew73 0:16d2619002d7 14
ddrew73 0:16d2619002d7 15 //Scanner stuff
ddrew73 0:16d2619002d7 16
ddrew73 0:16d2619002d7 17 DebounceIn scanbutton(D10);
ddrew73 0:16d2619002d7 18
ddrew73 0:16d2619002d7 19 DigitalOut A_in(D0);
ddrew73 0:16d2619002d7 20 DigitalOut B_in(D1);
ddrew73 0:16d2619002d7 21 DigitalOut C_in(D2);
ddrew73 0:16d2619002d7 22
ddrew73 0:16d2619002d7 23 DigitalOut A_out(PTC7);
ddrew73 0:16d2619002d7 24 DigitalOut B_out(PTC0);
ddrew73 0:16d2619002d7 25 DigitalOut C_out(PTC3);
ddrew73 0:16d2619002d7 26
ddrew73 0:16d2619002d7 27 AnalogOut dac(PTE30);
ddrew73 0:16d2619002d7 28 AnalogIn adc(PTB0);
ddrew73 0:16d2619002d7 29
ddrew73 0:16d2619002d7 30 //USBKeyboard keyboard;
ddrew73 0:16d2619002d7 31
ddrew73 0:16d2619002d7 32
ddrew73 0:16d2619002d7 33 //LCD stuff
ddrew73 0:16d2619002d7 34 //TextLCD lcd(PTD0,PTD5,PTA12,PTD4,PTA2,PTA1,TextLCD::LCD20x4);
ddrew73 0:16d2619002d7 35
ddrew73 0:16d2619002d7 36 int main()
ddrew73 0:16d2619002d7 37 {
ddrew73 0:16d2619002d7 38
ddrew73 0:16d2619002d7 39 //Scan init
ddrew73 0:16d2619002d7 40
ddrew73 0:16d2619002d7 41 float test_val = .001;
ddrew73 0:16d2619002d7 42 int con_mat[8][8] = {};
ddrew73 0:16d2619002d7 43 int a1,b1,c1,a2,b2,c2;
ddrew73 0:16d2619002d7 44 //dac = test_val;
ddrew73 0:16d2619002d7 45
ddrew73 0:16d2619002d7 46
ddrew73 0:16d2619002d7 47 //LED init
ddrew73 0:16d2619002d7 48 int redcount = 0, greencount = 0, rowselect = 0, rowselect_old = 0, moved = 1;
ddrew73 0:16d2619002d7 49 ledbar.begin(0x70);
ddrew73 0:16d2619002d7 50 ledbar.clear();
ddrew73 0:16d2619002d7 51 ledbar.writeDisplay();
ddrew73 0:16d2619002d7 52
ddrew73 0:16d2619002d7 53 //LCD init
ddrew73 0:16d2619002d7 54 /*
ddrew73 0:16d2619002d7 55 lcd.cls();
ddrew73 0:16d2619002d7 56 string programname = "Dan's UI Test"
ddrew73 0:16d2619002d7 57 float vddmeasure = 3.14259;
ddrew73 0:16d2619002d7 58 lcd.printf("%s",programname.c_str()); //Is the .c_str necessary? Some people on stack overflow say so...
ddrew73 0:16d2619002d7 59 lcd.locate(0,2);
ddrew73 0:16d2619002d7 60 lcd.printf("%1.3f",vddmeasure);
ddrew73 0:16d2619002d7 61 */
ddrew73 0:16d2619002d7 62
ddrew73 0:16d2619002d7 63
ddrew73 0:16d2619002d7 64
ddrew73 0:16d2619002d7 65 while(1) {
ddrew73 0:16d2619002d7 66
ddrew73 0:16d2619002d7 67
ddrew73 0:16d2619002d7 68 //Display
ddrew73 0:16d2619002d7 69
ddrew73 0:16d2619002d7 70 ledbar.setBar(rowselect_old,LED_OFF);
ddrew73 0:16d2619002d7 71 ledbar.setBar(rowselect,LED_GREEN);
ddrew73 0:16d2619002d7 72 ledbar.writeDisplay();
ddrew73 0:16d2619002d7 73
ddrew73 0:16d2619002d7 74
ddrew73 0:16d2619002d7 75 //Moving the selected row
ddrew73 0:16d2619002d7 76 if (upbutton.read() == 0) {
ddrew73 0:16d2619002d7 77 rowselect_old = rowselect;
ddrew73 0:16d2619002d7 78 rowselect = rowselect-1;
ddrew73 0:16d2619002d7 79 moved = 1;
ddrew73 0:16d2619002d7 80 wait(0.75);
ddrew73 0:16d2619002d7 81 }
ddrew73 0:16d2619002d7 82
ddrew73 0:16d2619002d7 83 if (downbutton.read() == 0) {
ddrew73 0:16d2619002d7 84 rowselect_old = rowselect;
ddrew73 0:16d2619002d7 85 rowselect = rowselect+1;
ddrew73 0:16d2619002d7 86 moved = 1;
ddrew73 0:16d2619002d7 87 wait(0.75);
ddrew73 0:16d2619002d7 88 }
ddrew73 0:16d2619002d7 89
ddrew73 0:16d2619002d7 90 //Boundary checking
ddrew73 0:16d2619002d7 91 if (rowselect > 23) {
ddrew73 0:16d2619002d7 92 rowselect = 23;
ddrew73 0:16d2619002d7 93 }
ddrew73 0:16d2619002d7 94 if (rowselect < 0) {
ddrew73 0:16d2619002d7 95 rowselect = 0;
ddrew73 0:16d2619002d7 96 }
ddrew73 0:16d2619002d7 97
ddrew73 0:16d2619002d7 98 //Implementing scanning
ddrew73 0:16d2619002d7 99
ddrew73 0:16d2619002d7 100 if (scanbutton.read() == 0) {
ddrew73 0:16d2619002d7 101
ddrew73 0:16d2619002d7 102 for (int x = 0; x < 8; x++) {
ddrew73 0:16d2619002d7 103 for (int y = 0; y < 8; y++) {
ddrew73 0:16d2619002d7 104 // Stupid logic to convert count value to binary...
ddrew73 0:16d2619002d7 105 A_in = x%2;
ddrew73 0:16d2619002d7 106 a1 = x%2;
ddrew73 0:16d2619002d7 107 B_in = (x/2)%2;
ddrew73 0:16d2619002d7 108 b1 = (x/2)%2;
ddrew73 0:16d2619002d7 109 C_in = (x/4)%2;
ddrew73 0:16d2619002d7 110 c1 = (x/4)%2;
ddrew73 0:16d2619002d7 111
ddrew73 0:16d2619002d7 112 A_out = y%2;
ddrew73 0:16d2619002d7 113 int a2 = y%2;
ddrew73 0:16d2619002d7 114 B_out = (y/2)%2;
ddrew73 0:16d2619002d7 115 b2 = (y/2)%2;
ddrew73 0:16d2619002d7 116 C_out = (y/4)%2;
ddrew73 0:16d2619002d7 117 c2 = (y/4)%2;
ddrew73 0:16d2619002d7 118
ddrew73 0:16d2619002d7 119 // Now we do the scan test, results are stored in con_mat
ddrew73 0:16d2619002d7 120 //wait(0.01);
ddrew73 0:16d2619002d7 121 dac = test_val;
ddrew73 0:16d2619002d7 122 float in_val = adc.read();
ddrew73 0:16d2619002d7 123
ddrew73 0:16d2619002d7 124 if ((in_val > .0010) && (in_val < .0025))
ddrew73 0:16d2619002d7 125 con_mat[x][y] = 1;
ddrew73 0:16d2619002d7 126 else
ddrew73 0:16d2619002d7 127 con_mat[x][y] = 0;
ddrew73 0:16d2619002d7 128
ddrew73 0:16d2619002d7 129 //keyboard.printf("%f %f \n",dac.read(),in_val);
ddrew73 0:16d2619002d7 130 //keyboard.printf("%d %d %d\n",a2,b2,c2);
ddrew73 0:16d2619002d7 131 }
ddrew73 0:16d2619002d7 132 }
ddrew73 0:16d2619002d7 133
ddrew73 0:16d2619002d7 134 /*
ddrew73 0:16d2619002d7 135 for (int x=0;x<8;x++) {
ddrew73 0:16d2619002d7 136 for (int y=0;y<8;y++) {
ddrew73 0:16d2619002d7 137 keyboard.printf("%d ",con_mat[x][y]);
ddrew73 0:16d2619002d7 138 }}
ddrew73 0:16d2619002d7 139 */
ddrew73 0:16d2619002d7 140 //Displaying all connected rows as red light!
ddrew73 0:16d2619002d7 141 ledbar.clear();
ddrew73 0:16d2619002d7 142 for (int i=0; i<8; i++) {
ddrew73 0:16d2619002d7 143 if (con_mat[rowselect][i] == 1) {
ddrew73 0:16d2619002d7 144 ledbar.setBar(i,LED_RED);
ddrew73 0:16d2619002d7 145 }
ddrew73 0:16d2619002d7 146 }
ddrew73 0:16d2619002d7 147 ledbar.writeDisplay();
ddrew73 0:16d2619002d7 148 moved = 0;
ddrew73 0:16d2619002d7 149 wait(2.5);
ddrew73 0:16d2619002d7 150 ledbar.clear();
ddrew73 0:16d2619002d7 151 ledbar.writeDisplay();
ddrew73 0:16d2619002d7 152
ddrew73 0:16d2619002d7 153 }
ddrew73 0:16d2619002d7 154 }
ddrew73 0:16d2619002d7 155
ddrew73 0:16d2619002d7 156
ddrew73 0:16d2619002d7 157
ddrew73 0:16d2619002d7 158
ddrew73 0:16d2619002d7 159 }
ddrew73 0:16d2619002d7 160
ddrew73 0:16d2619002d7 161
ddrew73 0:16d2619002d7 162
ddrew73 0:16d2619002d7 163