Wim Huiskamp
/
mbed_starburst
mbed demo and driver of 14 segment 4 digit Starburst LED display
main.cpp@0:85a63648158b, 2011-11-10 (annotated)
- Committer:
- wim
- Date:
- Thu Nov 10 19:29:32 2011 +0000
- Revision:
- 0:85a63648158b
First release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wim | 0:85a63648158b | 1 | #include "mbed.h" |
wim | 0:85a63648158b | 2 | #include "starburst.h" |
wim | 0:85a63648158b | 3 | |
wim | 0:85a63648158b | 4 | #define MOSI p5 |
wim | 0:85a63648158b | 5 | #define MISO p6 |
wim | 0:85a63648158b | 6 | #define SCK p7 |
wim | 0:85a63648158b | 7 | #define CE p8 |
wim | 0:85a63648158b | 8 | #define nOE p21 |
wim | 0:85a63648158b | 9 | |
wim | 0:85a63648158b | 10 | DigitalOut myled1(LED1); |
wim | 0:85a63648158b | 11 | DigitalOut myled2(LED2); |
wim | 0:85a63648158b | 12 | DigitalOut myled3(LED3); |
wim | 0:85a63648158b | 13 | DigitalOut heartbeatLED(LED4); |
wim | 0:85a63648158b | 14 | |
wim | 0:85a63648158b | 15 | SPI spi(MOSI, MISO, SCK); // mosi, miso, sclk |
wim | 0:85a63648158b | 16 | Starburst starburst(spi, CE, nOE); // Multiplexed Starburst Display, SPI controlled |
wim | 0:85a63648158b | 17 | |
wim | 0:85a63648158b | 18 | Serial pc(USBTX, USBRX); // tx, rx |
wim | 0:85a63648158b | 19 | |
wim | 0:85a63648158b | 20 | // Variables for Heartbeat and Status monitoring |
wim | 0:85a63648158b | 21 | Ticker heartbeat; |
wim | 0:85a63648158b | 22 | bool heartbeatflag=false; |
wim | 0:85a63648158b | 23 | |
wim | 0:85a63648158b | 24 | void show_menu() { |
wim | 0:85a63648158b | 25 | pc.printf("0: Exit\n\r"); |
wim | 0:85a63648158b | 26 | pc.printf("1: Show Menu\n\r"); |
wim | 0:85a63648158b | 27 | pc.printf("2: Send TEST\n\r"); |
wim | 0:85a63648158b | 28 | pc.printf("3: Send 1234\n\r"); |
wim | 0:85a63648158b | 29 | pc.printf("4: Blink On\n\r"); |
wim | 0:85a63648158b | 30 | pc.printf("5: Blink Off\n\r"); |
wim | 0:85a63648158b | 31 | pc.printf("6: Scroll On\n\r"); |
wim | 0:85a63648158b | 32 | pc.printf("7: Scroll Off\n\r"); |
wim | 0:85a63648158b | 33 | // pc.printf("A: sendMessage\n\r"); |
wim | 0:85a63648158b | 34 | // pc.printf("B: parseLFRNG\n\r"); |
wim | 0:85a63648158b | 35 | // pc.printf("P: parseMessage\n\r"); |
wim | 0:85a63648158b | 36 | pc.printf("\n\r"); |
wim | 0:85a63648158b | 37 | } |
wim | 0:85a63648158b | 38 | |
wim | 0:85a63648158b | 39 | |
wim | 0:85a63648158b | 40 | |
wim | 0:85a63648158b | 41 | |
wim | 0:85a63648158b | 42 | void show_LEDS () { |
wim | 0:85a63648158b | 43 | static int state = 0; |
wim | 0:85a63648158b | 44 | |
wim | 0:85a63648158b | 45 | switch (state) { |
wim | 0:85a63648158b | 46 | case 0: |
wim | 0:85a63648158b | 47 | myled1 = 1; |
wim | 0:85a63648158b | 48 | myled2 = 0; |
wim | 0:85a63648158b | 49 | myled3 = 0; |
wim | 0:85a63648158b | 50 | state = 1; |
wim | 0:85a63648158b | 51 | break; |
wim | 0:85a63648158b | 52 | case 1: |
wim | 0:85a63648158b | 53 | myled1 = 0; |
wim | 0:85a63648158b | 54 | myled2 = 1; |
wim | 0:85a63648158b | 55 | myled3 = 0; |
wim | 0:85a63648158b | 56 | state = 2; |
wim | 0:85a63648158b | 57 | break; |
wim | 0:85a63648158b | 58 | case 2: |
wim | 0:85a63648158b | 59 | myled1 = 0; |
wim | 0:85a63648158b | 60 | myled2 = 0; |
wim | 0:85a63648158b | 61 | myled3 = 1; |
wim | 0:85a63648158b | 62 | state = 0; |
wim | 0:85a63648158b | 63 | break; |
wim | 0:85a63648158b | 64 | } |
wim | 0:85a63648158b | 65 | } |
wim | 0:85a63648158b | 66 | |
wim | 0:85a63648158b | 67 | |
wim | 0:85a63648158b | 68 | |
wim | 0:85a63648158b | 69 | |
wim | 0:85a63648158b | 70 | // Heartbeat monitor |
wim | 0:85a63648158b | 71 | void pulse() { |
wim | 0:85a63648158b | 72 | heartbeatLED = !heartbeatLED; |
wim | 0:85a63648158b | 73 | |
wim | 0:85a63648158b | 74 | starburst.set_led(heartbeatLED); |
wim | 0:85a63648158b | 75 | |
wim | 0:85a63648158b | 76 | if (heartbeatLED) |
wim | 0:85a63648158b | 77 | starburst.set_bi_led(BI_RED); |
wim | 0:85a63648158b | 78 | else |
wim | 0:85a63648158b | 79 | starburst.set_bi_led(BI_GRN); |
wim | 0:85a63648158b | 80 | // starburst.set_bi_led(BI_YEL); |
wim | 0:85a63648158b | 81 | |
wim | 0:85a63648158b | 82 | } |
wim | 0:85a63648158b | 83 | |
wim | 0:85a63648158b | 84 | void heartbeat_start() { |
wim | 0:85a63648158b | 85 | heartbeat.attach(&pulse, 0.5); |
wim | 0:85a63648158b | 86 | heartbeatflag = true; |
wim | 0:85a63648158b | 87 | } |
wim | 0:85a63648158b | 88 | |
wim | 0:85a63648158b | 89 | void heartbeat_stop() { |
wim | 0:85a63648158b | 90 | heartbeat.detach(); |
wim | 0:85a63648158b | 91 | heartbeatflag = false; |
wim | 0:85a63648158b | 92 | } |
wim | 0:85a63648158b | 93 | |
wim | 0:85a63648158b | 94 | |
wim | 0:85a63648158b | 95 | |
wim | 0:85a63648158b | 96 | int main() { |
wim | 0:85a63648158b | 97 | bool running=true; |
wim | 0:85a63648158b | 98 | char command; |
wim | 0:85a63648158b | 99 | int count = 0; |
wim | 0:85a63648158b | 100 | |
wim | 0:85a63648158b | 101 | pc.printf("Hello World!\n\r"); |
wim | 0:85a63648158b | 102 | |
wim | 0:85a63648158b | 103 | heartbeat_start(); |
wim | 0:85a63648158b | 104 | |
wim | 0:85a63648158b | 105 | show_LEDS(); |
wim | 0:85a63648158b | 106 | |
wim | 0:85a63648158b | 107 | show_menu(); |
wim | 0:85a63648158b | 108 | |
wim | 0:85a63648158b | 109 | |
wim | 0:85a63648158b | 110 | starburst.locate(0); |
wim | 0:85a63648158b | 111 | starburst.printf("BILL"); |
wim | 0:85a63648158b | 112 | |
wim | 0:85a63648158b | 113 | // starburst.scroll_printf ("Hello World. The correct answer is %d ", 123456); |
wim | 0:85a63648158b | 114 | starburst.scroll_printf ("Hello World "); |
wim | 0:85a63648158b | 115 | |
wim | 0:85a63648158b | 116 | while(running) { |
wim | 0:85a63648158b | 117 | |
wim | 0:85a63648158b | 118 | // pc.printf("_str_len = %d, _scroll_ptr= %d \n\r", starburst._scroll_string_len, starburst._scroll_ptr); |
wim | 0:85a63648158b | 119 | |
wim | 0:85a63648158b | 120 | if(pc.readable()) { |
wim | 0:85a63648158b | 121 | command = pc.getc(); |
wim | 0:85a63648158b | 122 | pc.printf("command= %c \n\r", command); |
wim | 0:85a63648158b | 123 | show_LEDS(); |
wim | 0:85a63648158b | 124 | |
wim | 0:85a63648158b | 125 | switch (command) { |
wim | 0:85a63648158b | 126 | case '0' : |
wim | 0:85a63648158b | 127 | pc.printf("Done\n\r"); |
wim | 0:85a63648158b | 128 | running = false; |
wim | 0:85a63648158b | 129 | break; |
wim | 0:85a63648158b | 130 | |
wim | 0:85a63648158b | 131 | case '1' : |
wim | 0:85a63648158b | 132 | show_menu(); |
wim | 0:85a63648158b | 133 | break; |
wim | 0:85a63648158b | 134 | |
wim | 0:85a63648158b | 135 | case '2' : |
wim | 0:85a63648158b | 136 | pc.printf("TEST\n\r"); |
wim | 0:85a63648158b | 137 | |
wim | 0:85a63648158b | 138 | starburst.locate(0); |
wim | 0:85a63648158b | 139 | starburst.printf("TEST"); |
wim | 0:85a63648158b | 140 | break; |
wim | 0:85a63648158b | 141 | |
wim | 0:85a63648158b | 142 | case '3' : |
wim | 0:85a63648158b | 143 | pc.printf("1234\n\r"); |
wim | 0:85a63648158b | 144 | |
wim | 0:85a63648158b | 145 | starburst.locate(0); |
wim | 0:85a63648158b | 146 | starburst.printf("%4d", 1234); |
wim | 0:85a63648158b | 147 | break; |
wim | 0:85a63648158b | 148 | |
wim | 0:85a63648158b | 149 | case '4' : |
wim | 0:85a63648158b | 150 | pc.printf("Blink On\n\r"); |
wim | 0:85a63648158b | 151 | |
wim | 0:85a63648158b | 152 | starburst.set_blink_mode(true); |
wim | 0:85a63648158b | 153 | break; |
wim | 0:85a63648158b | 154 | |
wim | 0:85a63648158b | 155 | case '5' : |
wim | 0:85a63648158b | 156 | pc.printf("Blink Off\n\r"); |
wim | 0:85a63648158b | 157 | |
wim | 0:85a63648158b | 158 | starburst.set_blink_mode(false); |
wim | 0:85a63648158b | 159 | break; |
wim | 0:85a63648158b | 160 | |
wim | 0:85a63648158b | 161 | case '6' : |
wim | 0:85a63648158b | 162 | pc.printf("Scroll On\n\r"); |
wim | 0:85a63648158b | 163 | |
wim | 0:85a63648158b | 164 | starburst.set_scroll_mode(true); |
wim | 0:85a63648158b | 165 | break; |
wim | 0:85a63648158b | 166 | |
wim | 0:85a63648158b | 167 | case '7' : |
wim | 0:85a63648158b | 168 | pc.printf("Scroll Off\n\r"); |
wim | 0:85a63648158b | 169 | |
wim | 0:85a63648158b | 170 | starburst.set_scroll_mode(false); |
wim | 0:85a63648158b | 171 | break; |
wim | 0:85a63648158b | 172 | |
wim | 0:85a63648158b | 173 | |
wim | 0:85a63648158b | 174 | case 'A' : |
wim | 0:85a63648158b | 175 | break; |
wim | 0:85a63648158b | 176 | |
wim | 0:85a63648158b | 177 | case 'B' : |
wim | 0:85a63648158b | 178 | |
wim | 0:85a63648158b | 179 | break; |
wim | 0:85a63648158b | 180 | |
wim | 0:85a63648158b | 181 | case 'P' : |
wim | 0:85a63648158b | 182 | |
wim | 0:85a63648158b | 183 | break; |
wim | 0:85a63648158b | 184 | |
wim | 0:85a63648158b | 185 | } //switch |
wim | 0:85a63648158b | 186 | }//if |
wim | 0:85a63648158b | 187 | }//while |
wim | 0:85a63648158b | 188 | |
wim | 0:85a63648158b | 189 | pc.printf("Bye World!\n\r"); |
wim | 0:85a63648158b | 190 | }//main |