Includes itoa implementation and functions for interacting with lcd display and joystick

Committer:
tylerjw
Date:
Thu Feb 16 14:28:40 2012 +0000
Revision:
0:60800820b5a8

        

Who changed what in which revision?

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