Includes itoa implementation and functions for interacting with lcd display and joystick
bsp.cpp@0:60800820b5a8, 2012-02-16 (annotated)
- Committer:
- tylerjw
- Date:
- Thu Feb 16 14:28:40 2012 +0000
- Revision:
- 0:60800820b5a8
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tylerjw | 0:60800820b5a8 | 1 | #include "mbed.h" |
tylerjw | 0:60800820b5a8 | 2 | #include "TextLCD.h" |
tylerjw | 0:60800820b5a8 | 3 | #include "bsp.h" |
tylerjw | 0:60800820b5a8 | 4 | |
tylerjw | 0:60800820b5a8 | 5 | TextLCD lcd(p10, p11, p17, p18, p19, p20); // rs, e, d4-d7 |
tylerjw | 0:60800820b5a8 | 6 | AnalogIn joystick(p16); |
tylerjw | 0:60800820b5a8 | 7 | DigitalIn selectPin(p13); |
tylerjw | 0:60800820b5a8 | 8 | |
tylerjw | 0:60800820b5a8 | 9 | //............................................................................ |
tylerjw | 0:60800820b5a8 | 10 | int BSP_joyUpdate() { |
tylerjw | 0:60800820b5a8 | 11 | int pos = joystick.read()*100; |
tylerjw | 0:60800820b5a8 | 12 | if (pos < 40) |
tylerjw | 0:60800820b5a8 | 13 | return JOY_DOWN; // going down |
tylerjw | 0:60800820b5a8 | 14 | else if (pos > 60) |
tylerjw | 0:60800820b5a8 | 15 | return JOY_UP; // going up |
tylerjw | 0:60800820b5a8 | 16 | else |
tylerjw | 0:60800820b5a8 | 17 | return JOY_CENTER; |
tylerjw | 0:60800820b5a8 | 18 | } |
tylerjw | 0:60800820b5a8 | 19 | //............................................................................ |
tylerjw | 0:60800820b5a8 | 20 | void BSP_lcdScrollIn(char* line1, char* line2) { |
tylerjw | 0:60800820b5a8 | 21 | // scroller algorithm |
tylerjw | 0:60800820b5a8 | 22 | lcd.cls(); |
tylerjw | 0:60800820b5a8 | 23 | char output1[17]; |
tylerjw | 0:60800820b5a8 | 24 | char output2[17]; |
tylerjw | 0:60800820b5a8 | 25 | for ( int i = 0; i < 17; i++) { |
tylerjw | 0:60800820b5a8 | 26 | output1[i] = ' '; |
tylerjw | 0:60800820b5a8 | 27 | output2[i] = ' '; |
tylerjw | 0:60800820b5a8 | 28 | } |
tylerjw | 0:60800820b5a8 | 29 | for (int i = 0; i < 17; i++) { |
tylerjw | 0:60800820b5a8 | 30 | for (int col = 0; col < 17; col++) { |
tylerjw | 0:60800820b5a8 | 31 | |
tylerjw | 0:60800820b5a8 | 32 | if (col >= i) { |
tylerjw | 0:60800820b5a8 | 33 | output1[col] = ' '; |
tylerjw | 0:60800820b5a8 | 34 | output2[col] = ' '; |
tylerjw | 0:60800820b5a8 | 35 | } else { |
tylerjw | 0:60800820b5a8 | 36 | output1[col] = (line1[col+(16-i)]); |
tylerjw | 0:60800820b5a8 | 37 | output2[col] = (line2[col+(16-i)]); |
tylerjw | 0:60800820b5a8 | 38 | } |
tylerjw | 0:60800820b5a8 | 39 | lcd.locate(col,0); |
tylerjw | 0:60800820b5a8 | 40 | lcd.putc(output1[col]); |
tylerjw | 0:60800820b5a8 | 41 | lcd.locate(col,1); |
tylerjw | 0:60800820b5a8 | 42 | lcd.putc(output2[col]); |
tylerjw | 0:60800820b5a8 | 43 | } |
tylerjw | 0:60800820b5a8 | 44 | wait(0.4); |
tylerjw | 0:60800820b5a8 | 45 | } |
tylerjw | 0:60800820b5a8 | 46 | } |
tylerjw | 0:60800820b5a8 | 47 | //............................................................................ |
tylerjw | 0:60800820b5a8 | 48 | void BSP_lcdUpdate(char* line1,char* line2) { |
tylerjw | 0:60800820b5a8 | 49 | TextLCD lcd(p10, p11, p17, p18, p19, p20); // rs, e, d4-d7 |
tylerjw | 0:60800820b5a8 | 50 | uint8_t length1 = strlen(line1); |
tylerjw | 0:60800820b5a8 | 51 | uint8_t length2 = strlen(line2); |
tylerjw | 0:60800820b5a8 | 52 | lcd.cls(); |
tylerjw | 0:60800820b5a8 | 53 | for (int col = 0; col < 17; col++) { |
tylerjw | 0:60800820b5a8 | 54 | if (col < length1) { |
tylerjw | 0:60800820b5a8 | 55 | lcd.locate(col,0); |
tylerjw | 0:60800820b5a8 | 56 | lcd.putc(*(line1+col)); |
tylerjw | 0:60800820b5a8 | 57 | } |
tylerjw | 0:60800820b5a8 | 58 | if (col < length2) { |
tylerjw | 0:60800820b5a8 | 59 | lcd.locate(col,1); |
tylerjw | 0:60800820b5a8 | 60 | lcd.putc(*(line2+col)); |
tylerjw | 0:60800820b5a8 | 61 | } |
tylerjw | 0:60800820b5a8 | 62 | } |
tylerjw | 0:60800820b5a8 | 63 | } |
tylerjw | 0:60800820b5a8 | 64 | //............................................................................ |
tylerjw | 0:60800820b5a8 | 65 | char* itoa(int val, int base) { |
tylerjw | 0:60800820b5a8 | 66 | static char buf[BUFF_LEN] = {0}; |
tylerjw | 0:60800820b5a8 | 67 | int i = BUFF_LEN-2; |
tylerjw | 0:60800820b5a8 | 68 | for (; val && i ; --i, val /= base) |
tylerjw | 0:60800820b5a8 | 69 | buf[i] = "0123456789abcdef"[val % base]; |
tylerjw | 0:60800820b5a8 | 70 | |
tylerjw | 0:60800820b5a8 | 71 | return &buf[i+1]; |
tylerjw | 0:60800820b5a8 | 72 | } |
tylerjw | 0:60800820b5a8 | 73 | //............................................................................ |
tylerjw | 0:60800820b5a8 | 74 | char* cat(char* first, char* second, char* output) { |
tylerjw | 0:60800820b5a8 | 75 | size_t len1 = strlen(first); |
tylerjw | 0:60800820b5a8 | 76 | size_t len2 = strlen(second); |
tylerjw | 0:60800820b5a8 | 77 | size_t outlen = strlen(output); |
tylerjw | 0:60800820b5a8 | 78 | bool done = false; |
tylerjw | 0:60800820b5a8 | 79 | int i = 0; |
tylerjw | 0:60800820b5a8 | 80 | |
tylerjw | 0:60800820b5a8 | 81 | static char buf[BUFF_LEN] = {0}; |
tylerjw | 0:60800820b5a8 | 82 | for(; i < len1 && !done; i++) |
tylerjw | 0:60800820b5a8 | 83 | { |
tylerjw | 0:60800820b5a8 | 84 | if(i == (BUFF_LEN-1)){ done = true; break; } |
tylerjw | 0:60800820b5a8 | 85 | buf[i] = first[i]; |
tylerjw | 0:60800820b5a8 | 86 | } |
tylerjw | 0:60800820b5a8 | 87 | for(int b = 0; b < len2 && !done; i++, b++) |
tylerjw | 0:60800820b5a8 | 88 | { |
tylerjw | 0:60800820b5a8 | 89 | if(i == (BUFF_LEN-1)){ done = true; break; } |
tylerjw | 0:60800820b5a8 | 90 | buf[i] = second[b]; |
tylerjw | 0:60800820b5a8 | 91 | } |
tylerjw | 0:60800820b5a8 | 92 | for(;i < outlen && !done; i++) |
tylerjw | 0:60800820b5a8 | 93 | { |
tylerjw | 0:60800820b5a8 | 94 | if(i == (BUFF_LEN-1)){ done = true; break; } |
tylerjw | 0:60800820b5a8 | 95 | buf[i] = ' '; |
tylerjw | 0:60800820b5a8 | 96 | } |
tylerjw | 0:60800820b5a8 | 97 | return &buf[0]; |
tylerjw | 0:60800820b5a8 | 98 | } |
tylerjw | 0:60800820b5a8 | 99 | //............................................................................ |