The London Hackspace bandwidth meter

Dependencies:   LPD8806 MODSERIAL mbed picojson

See:

Committer:
Jasper
Date:
Sun Jun 10 23:05:12 2012 +0000
Revision:
2:81155674a852
Parent:
1:e384e7146746
Child:
3:7fca72f96711
fix a bit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jasper 0:0a6f193d5344 1 #include "mbed.h"
Jasper 0:0a6f193d5344 2
Jasper 0:0a6f193d5344 3 #include "LPD8806.h"
Jasper 0:0a6f193d5344 4
Jasper 0:0a6f193d5344 5 DigitalOut led1(LED1);
Jasper 0:0a6f193d5344 6 DigitalOut led2(LED2);
Jasper 0:0a6f193d5344 7 DigitalOut led3(LED3);
Jasper 0:0a6f193d5344 8 DigitalOut led4(LED4);
Jasper 0:0a6f193d5344 9
Jasper 1:e384e7146746 10 /* talk to the world */
Jasper 1:e384e7146746 11 Serial pc(USBTX, USBRX);
Jasper 0:0a6f193d5344 12
Jasper 1:e384e7146746 13 LPD8806 strip = LPD8806(32);
Jasper 0:0a6f193d5344 14
Jasper 0:0a6f193d5344 15 void setPixelsTop(int start, int end, int colour) {
Jasper 0:0a6f193d5344 16 int i;
Jasper 0:0a6f193d5344 17
Jasper 0:0a6f193d5344 18 for (i = start; i < end + 1 ; i++) {
Jasper 0:0a6f193d5344 19 strip.setPixelColor(i, colour);
Jasper 0:0a6f193d5344 20 }
Jasper 0:0a6f193d5344 21 }
Jasper 0:0a6f193d5344 22
Jasper 0:0a6f193d5344 23 void setPixelsBottom(int start, int end, int colour) {
Jasper 0:0a6f193d5344 24 int i;
Jasper 0:0a6f193d5344 25
Jasper 0:0a6f193d5344 26 for (i = start; i < end + 1 ; i++) {
Jasper 0:0a6f193d5344 27 strip.setPixelColor(16 + i, colour);
Jasper 0:0a6f193d5344 28 }
Jasper 0:0a6f193d5344 29 }
Jasper 0:0a6f193d5344 30
Jasper 1:e384e7146746 31 /* 0 - 16 */
Jasper 1:e384e7146746 32 void top_strip(int quantity){
Jasper 1:e384e7146746 33 if (quantity < 16) {
Jasper 1:e384e7146746 34 // blank unused bits.
Jasper 1:e384e7146746 35 setPixelsTop(quantity, 16, 0);
Jasper 1:e384e7146746 36 }
Jasper 1:e384e7146746 37
Jasper 1:e384e7146746 38 if (quantity == 0) return;
Jasper 1:e384e7146746 39
Jasper 1:e384e7146746 40 quantity --;
Jasper 1:e384e7146746 41
Jasper 1:e384e7146746 42 setPixelsTop(0, quantity < 12 ? quantity : 11, strip.Color(0, 127, 0));
Jasper 1:e384e7146746 43
Jasper 1:e384e7146746 44 if (quantity > 11)
Jasper 1:e384e7146746 45 setPixelsTop(12, quantity < 14 ? quantity : 14, strip.Color(127, 127, 0));
Jasper 1:e384e7146746 46
Jasper 1:e384e7146746 47 if (quantity > 13)
Jasper 1:e384e7146746 48 setPixelsTop(14, quantity < 16 ? quantity : 16, strip.Color(127, 0, 0));
Jasper 1:e384e7146746 49 }
Jasper 1:e384e7146746 50
Jasper 1:e384e7146746 51 void bottom_strip(int quantity){
Jasper 1:e384e7146746 52 if (quantity < 16) {
Jasper 1:e384e7146746 53 // blank unused bits.
Jasper 1:e384e7146746 54 setPixelsBottom(quantity, 16, 0);
Jasper 1:e384e7146746 55 }
Jasper 1:e384e7146746 56
Jasper 1:e384e7146746 57 if (quantity == 0) return;
Jasper 1:e384e7146746 58 quantity --;
Jasper 1:e384e7146746 59
Jasper 1:e384e7146746 60 setPixelsBottom(0, quantity < 12 ? quantity : 11, strip.Color(0, 127, 0));
Jasper 1:e384e7146746 61
Jasper 1:e384e7146746 62 if (quantity > 11)
Jasper 1:e384e7146746 63 setPixelsBottom(12, quantity < 14 ? quantity : 14, strip.Color(127, 127, 0));
Jasper 1:e384e7146746 64
Jasper 1:e384e7146746 65 if (quantity > 13)
Jasper 1:e384e7146746 66 setPixelsBottom(14, quantity < 16 ? quantity : 16, strip.Color(127, 0, 0));
Jasper 1:e384e7146746 67 }
Jasper 1:e384e7146746 68
Jasper 1:e384e7146746 69 #define s_looking 1
Jasper 1:e384e7146746 70 #define s_top 2
Jasper 1:e384e7146746 71 #define s_bottom 3
Jasper 1:e384e7146746 72
Jasper 0:0a6f193d5344 73 int main() {
Jasper 1:e384e7146746 74 int t = 0, b = 0;
Jasper 1:e384e7146746 75 int i, state = s_looking, tmp = 0, col = 1;
Jasper 1:e384e7146746 76 bool changed = false;
Jasper 1:e384e7146746 77 char got;
Jasper 0:0a6f193d5344 78
Jasper 0:0a6f193d5344 79 strip.begin();
Jasper 0:0a6f193d5344 80
Jasper 0:0a6f193d5344 81 for (i = 0 ; i < strip.numPixels() ; i++) {
Jasper 0:0a6f193d5344 82 // clear the strip
Jasper 0:0a6f193d5344 83 strip.setPixelColor(i, 0);
Jasper 0:0a6f193d5344 84 }
Jasper 0:0a6f193d5344 85
Jasper 0:0a6f193d5344 86 strip.show();
Jasper 0:0a6f193d5344 87
Jasper 0:0a6f193d5344 88 while(1) {
Jasper 0:0a6f193d5344 89
Jasper 1:e384e7146746 90 if (pc.readable()) {
Jasper 1:e384e7146746 91 got = pc.getc();
Jasper 1:e384e7146746 92 pc.putc(got); // remote echo
Jasper 1:e384e7146746 93
Jasper 1:e384e7146746 94 changed = false;
Jasper 1:e384e7146746 95
Jasper 1:e384e7146746 96 if (got == '\n' || got == '\r') {
Jasper 1:e384e7146746 97 if (state == s_top)
Jasper 1:e384e7146746 98 t = tmp;
Jasper 1:e384e7146746 99 if (state == s_bottom)
Jasper 1:e384e7146746 100 b = tmp;
Jasper 1:e384e7146746 101 state = s_looking;
Jasper 1:e384e7146746 102 tmp = 0;
Jasper 1:e384e7146746 103 col = 1;
Jasper 1:e384e7146746 104 if (t > 16) t = 16;
Jasper 1:e384e7146746 105 if (b > 16) b = 16;
Jasper 1:e384e7146746 106 printf("t: %d b: %d\n", t, b);
Jasper 1:e384e7146746 107 changed = true;
Jasper 1:e384e7146746 108 } else if (got == 'b') {
Jasper 1:e384e7146746 109 state = s_bottom;
Jasper 1:e384e7146746 110 } else if (got == 't') {
Jasper 1:e384e7146746 111 state = s_top;
Jasper 1:e384e7146746 112 } else if (got <= '9' and got >= '0') {
Jasper 1:e384e7146746 113 tmp += (got - '0') * col;
Jasper 1:e384e7146746 114 col = col * 10;
Jasper 1:e384e7146746 115 }
Jasper 1:e384e7146746 116 }
Jasper 1:e384e7146746 117 if (changed)
Jasper 0:0a6f193d5344 118 {
Jasper 2:81155674a852 119 led1 = led1 ? 0 : 1;
Jasper 1:e384e7146746 120 top_strip(t);
Jasper 1:e384e7146746 121 bottom_strip(b);
Jasper 0:0a6f193d5344 122 strip.show();
Jasper 0:0a6f193d5344 123 }
Jasper 0:0a6f193d5344 124 }
Jasper 0:0a6f193d5344 125 }