
7-segment mission-4
main_4.cpp@1:d5a26a9f0707, 2022-04-22 (annotated)
- Committer:
- leejieun
- Date:
- Fri Apr 22 07:24:49 2022 +0000
- Revision:
- 1:d5a26a9f0707
- Parent:
- 0:56f6b651effc
7-segment mission-4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
leejieun | 0:56f6b651effc | 1 | #include "mbed.h" |
leejieun | 0:56f6b651effc | 2 | |
leejieun | 0:56f6b651effc | 3 | DigitalOut greenLed(LED1); |
leejieun | 0:56f6b651effc | 4 | BusOut my7Seg(PA_8, PA_9, PA_10, PC_9, PC_8, PC_7, PC_6, PA_11); |
leejieun | 0:56f6b651effc | 5 | //DigitalIn exButton(PC_11); |
leejieun | 0:56f6b651effc | 6 | |
leejieun | 0:56f6b651effc | 7 | |
leejieun | 0:56f6b651effc | 8 | DigitalOut inLed(LED1); |
leejieun | 0:56f6b651effc | 9 | DigitalOut exLed(PA_12); |
leejieun | 0:56f6b651effc | 10 | DigitalIn inButton(PC_13); |
leejieun | 0:56f6b651effc | 11 | DigitalIn exButton(PC_11); |
leejieun | 0:56f6b651effc | 12 | |
leejieun | 0:56f6b651effc | 13 | |
leejieun | 0:56f6b651effc | 14 | Serial pc(SERIAL_TX, SERIAL_RX); |
leejieun | 0:56f6b651effc | 15 | //Serial pc(PA_2, PA_3); |
leejieun | 0:56f6b651effc | 16 | //Serial pc(USBTX, USBRX); |
leejieun | 0:56f6b651effc | 17 | |
leejieun | 0:56f6b651effc | 18 | DigitalOut myled(LED1); |
leejieun | 0:56f6b651effc | 19 | |
leejieun | 0:56f6b651effc | 20 | void WriteData(int event) |
leejieun | 0:56f6b651effc | 21 | { |
leejieun | 0:56f6b651effc | 22 | myled = !myled; |
leejieun | 0:56f6b651effc | 23 | } |
leejieun | 0:56f6b651effc | 24 | |
leejieun | 0:56f6b651effc | 25 | #define EX4 |
leejieun | 0:56f6b651effc | 26 | |
leejieun | 0:56f6b651effc | 27 | #ifdef EX4 |
leejieun | 0:56f6b651effc | 28 | char rxData[4]; |
leejieun | 0:56f6b651effc | 29 | bool flagRx = 0; |
leejieun | 0:56f6b651effc | 30 | |
leejieun | 0:56f6b651effc | 31 | void ReceiveInt() |
leejieun | 0:56f6b651effc | 32 | { |
leejieun | 0:56f6b651effc | 33 | char inChar; |
leejieun | 0:56f6b651effc | 34 | static char rxCount = 0; |
leejieun | 0:56f6b651effc | 35 | static char rxBuf[4]; |
leejieun | 0:56f6b651effc | 36 | |
leejieun | 0:56f6b651effc | 37 | while(1 == pc.readable()) { |
leejieun | 0:56f6b651effc | 38 | inChar = pc.getc(); |
leejieun | 0:56f6b651effc | 39 | if ('<' == inChar) |
leejieun | 0:56f6b651effc | 40 | { |
leejieun | 0:56f6b651effc | 41 | rxCount = 1; |
leejieun | 0:56f6b651effc | 42 | } |
leejieun | 0:56f6b651effc | 43 | else if (rxCount > 0 && rxCount < 5) |
leejieun | 0:56f6b651effc | 44 | { |
leejieun | 0:56f6b651effc | 45 | rxBuf[rxCount-1] = inChar; |
leejieun | 0:56f6b651effc | 46 | rxCount++; |
leejieun | 0:56f6b651effc | 47 | } |
leejieun | 0:56f6b651effc | 48 | else if (5 == rxCount && '>' == inChar) |
leejieun | 0:56f6b651effc | 49 | { |
leejieun | 0:56f6b651effc | 50 | rxCount = 0; |
leejieun | 0:56f6b651effc | 51 | flagRx = 1; |
leejieun | 0:56f6b651effc | 52 | memcpy(rxData, rxBuf, 4); |
leejieun | 0:56f6b651effc | 53 | // myled = !myled; |
leejieun | 0:56f6b651effc | 54 | // pc.putc(rxData[0]); |
leejieun | 0:56f6b651effc | 55 | // pc.putc(rxData[1]); |
leejieun | 0:56f6b651effc | 56 | // pc.putc(rxData[2]); |
leejieun | 0:56f6b651effc | 57 | // pc.putc(rxData[3]); |
leejieun | 0:56f6b651effc | 58 | |
leejieun | 0:56f6b651effc | 59 | // pc.puts(rxData); |
leejieun | 0:56f6b651effc | 60 | } |
leejieun | 0:56f6b651effc | 61 | |
leejieun | 0:56f6b651effc | 62 | } |
leejieun | 0:56f6b651effc | 63 | } |
leejieun | 0:56f6b651effc | 64 | |
leejieun | 0:56f6b651effc | 65 | |
leejieun | 0:56f6b651effc | 66 | int main() |
leejieun | 0:56f6b651effc | 67 | { |
leejieun | 0:56f6b651effc | 68 | pc.baud(115200); |
leejieun | 0:56f6b651effc | 69 | |
leejieun | 0:56f6b651effc | 70 | pc.puts("\nStart!\n"); |
leejieun | 0:56f6b651effc | 71 | pc.printf("<LD01> : 0 ~ <LD15> : F\n"); |
leejieun | 0:56f6b651effc | 72 | pc.attach(&ReceiveInt, Serial::RxIrq); // RxIrq, TxIrq |
leejieun | 0:56f6b651effc | 73 | // pc.attach(&ReceiveInt); // This operates same function like the above line |
leejieun | 0:56f6b651effc | 74 | |
leejieun | 0:56f6b651effc | 75 | char tmpCommand[3]; |
leejieun | 0:56f6b651effc | 76 | int rxVal; |
leejieun | 0:56f6b651effc | 77 | my7Seg = 0xFF; |
leejieun | 0:56f6b651effc | 78 | greenLed = 1; |
leejieun | 0:56f6b651effc | 79 | |
leejieun | 0:56f6b651effc | 80 | int myseg; |
leejieun | 0:56f6b651effc | 81 | char temp7Seg; |
leejieun | 0:56f6b651effc | 82 | |
leejieun | 0:56f6b651effc | 83 | int n = 0; |
leejieun | 0:56f6b651effc | 84 | int preStatus = 0; |
leejieun | 0:56f6b651effc | 85 | float tempVal = 0; |
leejieun | 0:56f6b651effc | 86 | |
leejieun | 0:56f6b651effc | 87 | while(1) |
leejieun | 0:56f6b651effc | 88 | { |
leejieun | 0:56f6b651effc | 89 | if (1 == flagRx) |
leejieun | 0:56f6b651effc | 90 | { |
leejieun | 0:56f6b651effc | 91 | flagRx = 0; |
leejieun | 0:56f6b651effc | 92 | tmpCommand[0] = rxData[0]; |
leejieun | 0:56f6b651effc | 93 | tmpCommand[1] = rxData[1]; |
leejieun | 0:56f6b651effc | 94 | tmpCommand[2] = 0; |
leejieun | 0:56f6b651effc | 95 | rxVal = atoi(rxData+2); |
leejieun | 0:56f6b651effc | 96 | |
leejieun | 0:56f6b651effc | 97 | if (0 == strcmp(tmpCommand, "LD")) { |
leejieun | 0:56f6b651effc | 98 | |
leejieun | 0:56f6b651effc | 99 | pc.printf("val = %d\n", rxVal); |
leejieun | 0:56f6b651effc | 100 | n = rxVal; |
leejieun | 0:56f6b651effc | 101 | myled = (1 == rxVal)? 1:0; |
leejieun | 0:56f6b651effc | 102 | // myled = rxVal? 1:0; |
leejieun | 0:56f6b651effc | 103 | } |
leejieun | 0:56f6b651effc | 104 | } |
leejieun | 0:56f6b651effc | 105 | |
leejieun | 0:56f6b651effc | 106 | |
leejieun | 0:56f6b651effc | 107 | preStatus = exButton; |
leejieun | 0:56f6b651effc | 108 | |
leejieun | 0:56f6b651effc | 109 | switch(n) { |
leejieun | 0:56f6b651effc | 110 | case 0: |
leejieun | 0:56f6b651effc | 111 | temp7Seg = ~0x3F; |
leejieun | 0:56f6b651effc | 112 | break; |
leejieun | 0:56f6b651effc | 113 | case 1: |
leejieun | 0:56f6b651effc | 114 | temp7Seg = ~0x06; |
leejieun | 0:56f6b651effc | 115 | break; |
leejieun | 0:56f6b651effc | 116 | case 2: |
leejieun | 0:56f6b651effc | 117 | temp7Seg = ~0x5B; |
leejieun | 0:56f6b651effc | 118 | break; |
leejieun | 0:56f6b651effc | 119 | case 3: |
leejieun | 0:56f6b651effc | 120 | temp7Seg = ~0x4F; |
leejieun | 0:56f6b651effc | 121 | break; |
leejieun | 0:56f6b651effc | 122 | case 4: |
leejieun | 0:56f6b651effc | 123 | temp7Seg = ~0x66; |
leejieun | 0:56f6b651effc | 124 | break; |
leejieun | 0:56f6b651effc | 125 | case 5: |
leejieun | 0:56f6b651effc | 126 | temp7Seg = ~0x6D; |
leejieun | 0:56f6b651effc | 127 | break; |
leejieun | 0:56f6b651effc | 128 | case 6: |
leejieun | 0:56f6b651effc | 129 | temp7Seg = ~0x7D; |
leejieun | 0:56f6b651effc | 130 | break; |
leejieun | 0:56f6b651effc | 131 | case 7: |
leejieun | 0:56f6b651effc | 132 | temp7Seg = ~0x07; |
leejieun | 0:56f6b651effc | 133 | break; |
leejieun | 0:56f6b651effc | 134 | case 8: |
leejieun | 0:56f6b651effc | 135 | temp7Seg = ~0x7F; |
leejieun | 0:56f6b651effc | 136 | break; |
leejieun | 0:56f6b651effc | 137 | case 9: |
leejieun | 0:56f6b651effc | 138 | temp7Seg = ~0x6F; |
leejieun | 0:56f6b651effc | 139 | break; |
leejieun | 0:56f6b651effc | 140 | case 10: |
leejieun | 0:56f6b651effc | 141 | temp7Seg = ~0x77; |
leejieun | 0:56f6b651effc | 142 | break; |
leejieun | 0:56f6b651effc | 143 | case 11: |
leejieun | 0:56f6b651effc | 144 | temp7Seg = ~0x7C; |
leejieun | 0:56f6b651effc | 145 | break; |
leejieun | 0:56f6b651effc | 146 | case 12: |
leejieun | 0:56f6b651effc | 147 | temp7Seg = ~0x39; |
leejieun | 0:56f6b651effc | 148 | break; |
leejieun | 0:56f6b651effc | 149 | case 13: |
leejieun | 0:56f6b651effc | 150 | temp7Seg = ~0x5E; |
leejieun | 0:56f6b651effc | 151 | break; |
leejieun | 0:56f6b651effc | 152 | case 14: |
leejieun | 0:56f6b651effc | 153 | temp7Seg = ~0x79; |
leejieun | 0:56f6b651effc | 154 | break; |
leejieun | 0:56f6b651effc | 155 | case 15: |
leejieun | 0:56f6b651effc | 156 | temp7Seg = ~0x71; |
leejieun | 0:56f6b651effc | 157 | break; |
leejieun | 0:56f6b651effc | 158 | |
leejieun | 0:56f6b651effc | 159 | |
leejieun | 0:56f6b651effc | 160 | } |
leejieun | 0:56f6b651effc | 161 | greenLed = !greenLed; |
leejieun | 0:56f6b651effc | 162 | my7Seg = (temp7Seg & 0x7F) | ((greenLed & 0x01)<<7); |
leejieun | 0:56f6b651effc | 163 | |
leejieun | 0:56f6b651effc | 164 | wait(0.25); |
leejieun | 0:56f6b651effc | 165 | |
leejieun | 0:56f6b651effc | 166 | } |
leejieun | 0:56f6b651effc | 167 | } |
leejieun | 0:56f6b651effc | 168 | |
leejieun | 0:56f6b651effc | 169 | #endif // end of ex4 |
leejieun | 0:56f6b651effc | 170 | |
leejieun | 0:56f6b651effc | 171 | |
leejieun | 0:56f6b651effc | 172 | |
leejieun | 0:56f6b651effc | 173 | |
leejieun | 0:56f6b651effc | 174 |