Team Phoenix Reborn (EE300 Sec2)
/
KeyPad
Mbed code for KeyPad
main.cpp@8:8155a917d4ec, 2017-12-09 (annotated)
- Committer:
- darksonic56
- Date:
- Sat Dec 09 21:45:18 2017 +0000
- Revision:
- 8:8155a917d4ec
- Parent:
- 7:630372bb8c15
final code for the report guys!
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
darksonic56 | 0:8032385fe022 | 1 | #include "mbed.h" |
KaanTayfun | 2:86bb9a494e13 | 2 | #include "Keypad.h" |
darksonic56 | 7:630372bb8c15 | 3 | #include <iostream> |
darksonic56 | 0:8032385fe022 | 4 | |
darksonic56 | 7:630372bb8c15 | 5 | //Ticker ticker; |
darksonic56 | 4:f840ae3a1abd | 6 | DigitalOut led1(LED1); |
darksonic56 | 4:f840ae3a1abd | 7 | DigitalOut led2(LED2); |
darksonic56 | 8:8155a917d4ec | 8 | CAN can2(p30,p29); //p30(rx) and p29(tx) |
darksonic56 | 8:8155a917d4ec | 9 | CAN can1(p9, p10); //p9 (rx) and p10(tx) |
darksonic56 | 7:630372bb8c15 | 10 | CANMessage msg; |
darksonic56 | 4:f840ae3a1abd | 11 | char counter = 0; |
darksonic56 | 4:f840ae3a1abd | 12 | |
darksonic56 | 3:a88e77be7ed9 | 13 | char Keytable[] = { '1', '2', '3', 'A', |
darksonic56 | 3:a88e77be7ed9 | 14 | '4', '5', '6', 'B', |
darksonic56 | 3:a88e77be7ed9 | 15 | '7', '8', '9', 'C', |
darksonic56 | 3:a88e77be7ed9 | 16 | '*', '0', '#', 'D' }; |
darksonic56 | 3:a88e77be7ed9 | 17 | |
darksonic56 | 3:a88e77be7ed9 | 18 | uint32_t Index; |
darksonic56 | 3:a88e77be7ed9 | 19 | uint32_t cbAfterInput(uint32_t index) { |
darksonic56 | 3:a88e77be7ed9 | 20 | Index = index; |
darksonic56 | 3:a88e77be7ed9 | 21 | return 0; |
darksonic56 | 3:a88e77be7ed9 | 22 | } |
darksonic56 | 3:a88e77be7ed9 | 23 | |
darksonic56 | 0:8032385fe022 | 24 | int main() { |
darksonic56 | 4:f840ae3a1abd | 25 | //variables declared |
darksonic56 | 4:f840ae3a1abd | 26 | char mainLvl, partLvl; |
darksonic56 | 8:8155a917d4ec | 27 | int toggle = 0; |
darksonic56 | 8:8155a917d4ec | 28 | int squareToggle = 0; |
darksonic56 | 4:f840ae3a1abd | 29 | int digpotAmp = 0; |
darksonic56 | 4:f840ae3a1abd | 30 | Keypad::Keypad keypad(p21, p22, p23, p24, p25, p26, p27, p28, 20); |
darksonic56 | 3:a88e77be7ed9 | 31 | keypad.attach(&cbAfterInput); |
darksonic56 | 3:a88e77be7ed9 | 32 | keypad.start(); |
darksonic56 | 3:a88e77be7ed9 | 33 | |
darksonic56 | 3:a88e77be7ed9 | 34 | Serial pc(USBTX, USBRX); |
darksonic56 | 3:a88e77be7ed9 | 35 | |
darksonic56 | 3:a88e77be7ed9 | 36 | while(1){ |
darksonic56 | 4:f840ae3a1abd | 37 | pc.printf("This is the Black Box Tester input controller\r\n"); |
darksonic56 | 4:f840ae3a1abd | 38 | pc.printf("Please select the desired command:\r\n"); |
darksonic56 | 4:f840ae3a1abd | 39 | pc.printf("1. DAC Setup\r\n"); |
darksonic56 | 4:f840ae3a1abd | 40 | pc.printf("2. Digital Potentiometer Setup\r\n"); |
darksonic56 | 4:f840ae3a1abd | 41 | pc.printf("3. ADC Setup\r\n"); |
darksonic56 | 4:f840ae3a1abd | 42 | pc.printf("\r\n"); |
darksonic56 | 6:0b280f50544d | 43 | |
darksonic56 | 3:a88e77be7ed9 | 44 | __wfi(); |
darksonic56 | 4:f840ae3a1abd | 45 | mainLvl = Keytable[Index]; |
darksonic56 | 7:630372bb8c15 | 46 | |
darksonic56 | 4:f840ae3a1abd | 47 | switch(mainLvl) |
darksonic56 | 4:f840ae3a1abd | 48 | { |
darksonic56 | 4:f840ae3a1abd | 49 | case '1': // DAC Setup |
darksonic56 | 4:f840ae3a1abd | 50 | while(partLvl != '*') |
darksonic56 | 4:f840ae3a1abd | 51 | { |
darksonic56 | 4:f840ae3a1abd | 52 | pc.printf("Please select the desired command:\r\n"); |
darksonic56 | 7:630372bb8c15 | 53 | pc.printf("1. Enable DAC\r\n"); |
darksonic56 | 7:630372bb8c15 | 54 | pc.printf("2. Disable DAC\r\n"); |
darksonic56 | 7:630372bb8c15 | 55 | pc.printf("3. Toggle Sin 1 HZ wave\r\n"); |
darksonic56 | 7:630372bb8c15 | 56 | pc.printf("4. Toggle Sin 10 HZ wave\r\n"); |
darksonic56 | 7:630372bb8c15 | 57 | pc.printf("5. Toggle Square 1 HZ wave\r\n"); |
darksonic56 | 7:630372bb8c15 | 58 | pc.printf("6. Toggle Square 10 HZ wave\r\n"); |
darksonic56 | 4:f840ae3a1abd | 59 | pc.printf("*: Please return to Main Menu\r\n"); |
darksonic56 | 4:f840ae3a1abd | 60 | pc.printf("\r\n"); |
darksonic56 | 4:f840ae3a1abd | 61 | __wfi(); |
darksonic56 | 4:f840ae3a1abd | 62 | partLvl = Keytable[Index]; |
darksonic56 | 8:8155a917d4ec | 63 | |
darksonic56 | 4:f840ae3a1abd | 64 | switch(partLvl) |
darksonic56 | 4:f840ae3a1abd | 65 | { |
darksonic56 | 7:630372bb8c15 | 66 | case '1': |
darksonic56 | 8:8155a917d4ec | 67 | counter = 5; |
darksonic56 | 8:8155a917d4ec | 68 | can1.write(CANMessage(1337, &counter, 1)); |
darksonic56 | 4:f840ae3a1abd | 69 | pc.printf("DAC Enabled\r\n"); |
darksonic56 | 4:f840ae3a1abd | 70 | pc.printf("\r\n"); |
darksonic56 | 6:0b280f50544d | 71 | |
darksonic56 | 4:f840ae3a1abd | 72 | break; |
darksonic56 | 4:f840ae3a1abd | 73 | |
darksonic56 | 7:630372bb8c15 | 74 | case '2': |
darksonic56 | 8:8155a917d4ec | 75 | counter = 0; |
darksonic56 | 8:8155a917d4ec | 76 | can1.write(CANMessage(1337, &counter, 1)); |
darksonic56 | 4:f840ae3a1abd | 77 | pc.printf("DAC Disabled\r\n"); |
darksonic56 | 4:f840ae3a1abd | 78 | pc.printf("\r\n"); |
darksonic56 | 6:0b280f50544d | 79 | |
darksonic56 | 4:f840ae3a1abd | 80 | break; |
darksonic56 | 4:f840ae3a1abd | 81 | |
darksonic56 | 7:630372bb8c15 | 82 | case '3': |
darksonic56 | 7:630372bb8c15 | 83 | pc.printf("Sinusoid wave 1 HZ wave selected\r\n"); |
darksonic56 | 8:8155a917d4ec | 84 | counter = 1; |
darksonic56 | 8:8155a917d4ec | 85 | can1.write(CANMessage(1337, &counter, 1)); |
darksonic56 | 4:f840ae3a1abd | 86 | toggle = 1; |
darksonic56 | 7:630372bb8c15 | 87 | break; |
darksonic56 | 7:630372bb8c15 | 88 | case '4': |
darksonic56 | 7:630372bb8c15 | 89 | pc.printf("Sinusoid wave 10 HZ wave selected\r\n"); |
darksonic56 | 8:8155a917d4ec | 90 | counter = 3; |
darksonic56 | 8:8155a917d4ec | 91 | can1.write(CANMessage(1337, &counter, 1)); |
darksonic56 | 7:630372bb8c15 | 92 | toggle = 10; |
darksonic56 | 7:630372bb8c15 | 93 | break; |
darksonic56 | 7:630372bb8c15 | 94 | case '5': |
darksonic56 | 7:630372bb8c15 | 95 | pc.printf("Square wave 1 HZ wave selected\r\n"); |
darksonic56 | 8:8155a917d4ec | 96 | counter = 2; |
darksonic56 | 8:8155a917d4ec | 97 | can1.write(CANMessage(1337, &counter, 1)); |
darksonic56 | 8:8155a917d4ec | 98 | squareToggle = 1; |
darksonic56 | 7:630372bb8c15 | 99 | break; |
darksonic56 | 7:630372bb8c15 | 100 | case '6': |
darksonic56 | 7:630372bb8c15 | 101 | pc.printf("Square wave 10 HZ wave selected\r\n"); |
darksonic56 | 8:8155a917d4ec | 102 | counter = 4; |
darksonic56 | 8:8155a917d4ec | 103 | can1.write(CANMessage(1337, &counter, 1)); |
darksonic56 | 8:8155a917d4ec | 104 | squareToggle = 10; |
darksonic56 | 8:8155a917d4ec | 105 | |
darksonic56 | 4:f840ae3a1abd | 106 | break; |
darksonic56 | 4:f840ae3a1abd | 107 | default: |
darksonic56 | 4:f840ae3a1abd | 108 | break; |
darksonic56 | 7:630372bb8c15 | 109 | } |
darksonic56 | 4:f840ae3a1abd | 110 | } |
darksonic56 | 4:f840ae3a1abd | 111 | partLvl = '0'; |
darksonic56 | 4:f840ae3a1abd | 112 | break; |
darksonic56 | 4:f840ae3a1abd | 113 | |
darksonic56 | 4:f840ae3a1abd | 114 | case '2': // Digital Potentiometer Setup |
darksonic56 | 4:f840ae3a1abd | 115 | while(partLvl != '*') |
darksonic56 | 4:f840ae3a1abd | 116 | { |
darksonic56 | 4:f840ae3a1abd | 117 | pc.printf("Please select the desired command:\r\n"); |
darksonic56 | 7:630372bb8c15 | 118 | pc.printf("0. Set the Output Amplitude to 0 V\r\n"); |
darksonic56 | 7:630372bb8c15 | 119 | pc.printf("1. Set the Output Amplitude to 1 V\r\n"); |
darksonic56 | 7:630372bb8c15 | 120 | pc.printf("2. Set the Output Amplitude to 2 V\r\n"); |
darksonic56 | 7:630372bb8c15 | 121 | pc.printf("3. Set the Output Amplitude to 3 V\r\n"); |
darksonic56 | 7:630372bb8c15 | 122 | pc.printf("4. Set the Output Amplitude to 4 V\r\n"); |
darksonic56 | 7:630372bb8c15 | 123 | pc.printf("5. Set the Output Amplitude to 5 V\r\n"); |
darksonic56 | 7:630372bb8c15 | 124 | pc.printf("6. Increase Output Amplitude\r\n"); |
darksonic56 | 7:630372bb8c15 | 125 | pc.printf("7. Decrease output Amplitude\r\n"); |
darksonic56 | 4:f840ae3a1abd | 126 | pc.printf("*: Please return to Main Menu\r\n"); |
darksonic56 | 4:f840ae3a1abd | 127 | pc.printf("\r\n"); |
darksonic56 | 4:f840ae3a1abd | 128 | __wfi(); |
darksonic56 | 4:f840ae3a1abd | 129 | partLvl = Keytable[Index]; |
darksonic56 | 8:8155a917d4ec | 130 | //send(); // sends the CAN message |
darksonic56 | 4:f840ae3a1abd | 131 | switch(partLvl) |
darksonic56 | 4:f840ae3a1abd | 132 | { |
darksonic56 | 7:630372bb8c15 | 133 | case '0': |
darksonic56 | 7:630372bb8c15 | 134 | digpotAmp = 0; |
darksonic56 | 7:630372bb8c15 | 135 | pc.printf("Digital Potentiometer Amplitude: %d volts\r\n", digpotAmp); |
darksonic56 | 7:630372bb8c15 | 136 | |
darksonic56 | 7:630372bb8c15 | 137 | break; |
darksonic56 | 7:630372bb8c15 | 138 | |
darksonic56 | 7:630372bb8c15 | 139 | case '1': |
darksonic56 | 7:630372bb8c15 | 140 | |
darksonic56 | 7:630372bb8c15 | 141 | digpotAmp=1; |
darksonic56 | 7:630372bb8c15 | 142 | pc.printf("Digital Potentiometer Amplitude: %d volts\r\n", digpotAmp); |
darksonic56 | 7:630372bb8c15 | 143 | |
darksonic56 | 7:630372bb8c15 | 144 | break; |
darksonic56 | 7:630372bb8c15 | 145 | |
darksonic56 | 7:630372bb8c15 | 146 | case '2': |
darksonic56 | 7:630372bb8c15 | 147 | |
darksonic56 | 7:630372bb8c15 | 148 | digpotAmp=2; |
darksonic56 | 7:630372bb8c15 | 149 | pc.printf("Digital Potentiometer Amplitude: %d volts\r\n", digpotAmp); |
darksonic56 | 7:630372bb8c15 | 150 | |
darksonic56 | 7:630372bb8c15 | 151 | break; |
darksonic56 | 7:630372bb8c15 | 152 | |
darksonic56 | 7:630372bb8c15 | 153 | case '3': |
darksonic56 | 7:630372bb8c15 | 154 | |
darksonic56 | 7:630372bb8c15 | 155 | digpotAmp=3; |
darksonic56 | 7:630372bb8c15 | 156 | pc.printf("Digital Potentiometer Amplitude: %d volts\r\n", digpotAmp); |
darksonic56 | 7:630372bb8c15 | 157 | |
darksonic56 | 7:630372bb8c15 | 158 | break; |
darksonic56 | 7:630372bb8c15 | 159 | |
darksonic56 | 7:630372bb8c15 | 160 | case '4': |
darksonic56 | 7:630372bb8c15 | 161 | |
darksonic56 | 7:630372bb8c15 | 162 | digpotAmp=4; |
darksonic56 | 7:630372bb8c15 | 163 | pc.printf("Digital Potentiometer Amplitude: %d volts\r\n", digpotAmp); |
darksonic56 | 7:630372bb8c15 | 164 | |
darksonic56 | 7:630372bb8c15 | 165 | break; |
darksonic56 | 7:630372bb8c15 | 166 | |
darksonic56 | 7:630372bb8c15 | 167 | case '5': |
darksonic56 | 7:630372bb8c15 | 168 | |
darksonic56 | 7:630372bb8c15 | 169 | digpotAmp=5; |
darksonic56 | 7:630372bb8c15 | 170 | pc.printf("Digital Potentiometer Amplitude: %d volts\r\n", digpotAmp); |
darksonic56 | 7:630372bb8c15 | 171 | |
darksonic56 | 7:630372bb8c15 | 172 | break; |
darksonic56 | 4:f840ae3a1abd | 173 | |
darksonic56 | 4:f840ae3a1abd | 174 | case '6': |
darksonic56 | 4:f840ae3a1abd | 175 | digpotAmp ++; |
darksonic56 | 4:f840ae3a1abd | 176 | if (digpotAmp == 6) |
darksonic56 | 4:f840ae3a1abd | 177 | digpotAmp = 5; |
darksonic56 | 4:f840ae3a1abd | 178 | pc.printf("Digital Potentiometer Amplitude: %d volts\r\n", digpotAmp); |
darksonic56 | 4:f840ae3a1abd | 179 | break; |
darksonic56 | 4:f840ae3a1abd | 180 | |
darksonic56 | 7:630372bb8c15 | 181 | case '7': |
darksonic56 | 4:f840ae3a1abd | 182 | digpotAmp --; |
darksonic56 | 4:f840ae3a1abd | 183 | if (digpotAmp == -1) |
darksonic56 | 4:f840ae3a1abd | 184 | digpotAmp = 0; |
darksonic56 | 4:f840ae3a1abd | 185 | pc.printf("Digital Potentiometer Amplitude: %d volts\r\n", digpotAmp); |
darksonic56 | 4:f840ae3a1abd | 186 | pc.printf("\r\n"); |
darksonic56 | 4:f840ae3a1abd | 187 | break; |
darksonic56 | 4:f840ae3a1abd | 188 | |
darksonic56 | 4:f840ae3a1abd | 189 | default: |
darksonic56 | 4:f840ae3a1abd | 190 | break; |
darksonic56 | 4:f840ae3a1abd | 191 | } |
darksonic56 | 4:f840ae3a1abd | 192 | } |
darksonic56 | 7:630372bb8c15 | 193 | |
darksonic56 | 4:f840ae3a1abd | 194 | partLvl = '0'; |
darksonic56 | 4:f840ae3a1abd | 195 | break; |
darksonic56 | 4:f840ae3a1abd | 196 | |
darksonic56 | 4:f840ae3a1abd | 197 | case '3': // ADC Setup |
darksonic56 | 4:f840ae3a1abd | 198 | { |
darksonic56 | 7:630372bb8c15 | 199 | |
darksonic56 | 4:f840ae3a1abd | 200 | while(partLvl != '*') |
darksonic56 | 4:f840ae3a1abd | 201 | { |
darksonic56 | 4:f840ae3a1abd | 202 | pc.printf("Please select the desired subfunction\r\n"); |
darksonic56 | 7:630372bb8c15 | 203 | pc.printf("1. Enable ADC\r\n"); |
darksonic56 | 7:630372bb8c15 | 204 | pc.printf("2. Disable ADC\r\n"); |
darksonic56 | 4:f840ae3a1abd | 205 | pc.printf("*: Return to Main Menu\r\n"); |
darksonic56 | 4:f840ae3a1abd | 206 | pc.printf("\r\n"); |
darksonic56 | 4:f840ae3a1abd | 207 | __wfi(); |
darksonic56 | 4:f840ae3a1abd | 208 | partLvl = Keytable[Index]; |
darksonic56 | 8:8155a917d4ec | 209 | //send(); // sends the CAN message |
darksonic56 | 4:f840ae3a1abd | 210 | switch(partLvl) |
darksonic56 | 4:f840ae3a1abd | 211 | { |
darksonic56 | 4:f840ae3a1abd | 212 | |
darksonic56 | 7:630372bb8c15 | 213 | case '1': |
darksonic56 | 8:8155a917d4ec | 214 | counter = 1; |
darksonic56 | 8:8155a917d4ec | 215 | can1.write(CANMessage(1337, &counter, 1)); |
darksonic56 | 4:f840ae3a1abd | 216 | pc.printf("ADC Enabled\r\n"); |
darksonic56 | 4:f840ae3a1abd | 217 | pc.printf("\r\n"); |
darksonic56 | 4:f840ae3a1abd | 218 | break; |
darksonic56 | 4:f840ae3a1abd | 219 | |
darksonic56 | 7:630372bb8c15 | 220 | case '2': |
darksonic56 | 8:8155a917d4ec | 221 | counter = 0; |
darksonic56 | 8:8155a917d4ec | 222 | can1.write(CANMessage(1337, &counter, 1)); |
darksonic56 | 4:f840ae3a1abd | 223 | pc.printf("ADC Disabled\r\n"); |
darksonic56 | 4:f840ae3a1abd | 224 | pc.printf("\r\n"); |
darksonic56 | 4:f840ae3a1abd | 225 | break; |
darksonic56 | 4:f840ae3a1abd | 226 | |
darksonic56 | 4:f840ae3a1abd | 227 | default: |
darksonic56 | 4:f840ae3a1abd | 228 | break; |
darksonic56 | 4:f840ae3a1abd | 229 | } |
darksonic56 | 4:f840ae3a1abd | 230 | } |
darksonic56 | 4:f840ae3a1abd | 231 | partLvl = '0'; |
darksonic56 | 4:f840ae3a1abd | 232 | break; |
darksonic56 | 4:f840ae3a1abd | 233 | } |
darksonic56 | 7:630372bb8c15 | 234 | } |
darksonic56 | 3:a88e77be7ed9 | 235 | } |
darksonic56 | 8:8155a917d4ec | 236 | } |