:)

Dependencies:   MbedJSONValue DebounceIn TextLCD USBDevice mbed WebSocketClient cc3000_hostdriver_mbedsocket Adafruit_LEDBackpack_2

Committer:
ddrew73
Date:
Wed Nov 19 23:35:41 2014 +0000
Revision:
1:0183a7d38878
Parent:
0:16d2619002d7
Child:
3:161fed8bd027
11/19;

Who changed what in which revision?

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