mbed demo and driver of 14 segment 4 digit Starburst LED display

Dependencies:   mbed

Committer:
wim
Date:
Thu Nov 10 19:29:32 2011 +0000
Revision:
0:85a63648158b
First release

Who changed what in which revision?

UserRevisionLine numberNew 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