Dependencies:   FatFileSystem mbed GPS TextLCD

Committer:
pangsk
Date:
Tue Aug 28 13:16:46 2012 +0000
Revision:
5:46a6a3e36e05
Parent:
3:05bb8f0bd7a4
Published Textlcd and gps files

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pangsk 0:908be729d27c 1 /*
pangsk 0:908be729d27c 2
pangsk 0:908be729d27c 3 mbed Can-Bus demo
pangsk 0:908be729d27c 4
pangsk 0:908be729d27c 5 This program is to demonstrate the CAN-bus capability of the mbed module.
pangsk 0:908be729d27c 6
pangsk 1:3552a3289608 7 http://www.skpang.co.uk/catalog/product_info.php?products_id=741
pangsk 0:908be729d27c 8
pangsk 0:908be729d27c 9 v1.0 July 2010
pangsk 0:908be729d27c 10
pangsk 0:908be729d27c 11 ********************************************************************************
pangsk 0:908be729d27c 12
pangsk 0:908be729d27c 13 WARNING: Use at your own risk, sadly this software comes with no guarantees.
pangsk 0:908be729d27c 14 This software is provided 'free' and in good faith, but the author does not
pangsk 0:908be729d27c 15 accept liability for any damage arising from its use.
pangsk 0:908be729d27c 16
pangsk 0:908be729d27c 17 ********************************************************************************
pangsk 0:908be729d27c 18
pangsk 0:908be729d27c 19
pangsk 0:908be729d27c 20 */
pangsk 0:908be729d27c 21
pangsk 0:908be729d27c 22 #include "mbed.h"
pangsk 0:908be729d27c 23 #include "ecu_reader.h"
pangsk 0:908be729d27c 24 #include "globals.h"
pangsk 0:908be729d27c 25 #include "TextLCD.h"
pangsk 0:908be729d27c 26 #include "GPS.h"
pangsk 2:e7b3b8da71ff 27 #include "SDFileSystem.h"
pangsk 0:908be729d27c 28
pangsk 0:908be729d27c 29 GPS gps(p28, p27);
pangsk 0:908be729d27c 30 TextLCD lcd(p18, p19, p20, p17, p16, p15, p14); // rs, rw, e, d0, d1, d2, d3
pangsk 2:e7b3b8da71ff 31 SDFileSystem sd(p5, p6, p7, p13, "sd");
pangsk 0:908be729d27c 32
pangsk 0:908be729d27c 33 DigitalIn click(p21); // Joystick inputs
pangsk 0:908be729d27c 34 DigitalIn right(p22);
pangsk 0:908be729d27c 35 DigitalIn down(p23);
pangsk 0:908be729d27c 36 DigitalIn left(p24);
pangsk 0:908be729d27c 37 DigitalIn up(p25);
pangsk 3:05bb8f0bd7a4 38 Serial pc(USBTX, USBRX);
pangsk 3:05bb8f0bd7a4 39
pangsk 0:908be729d27c 40
pangsk 0:908be729d27c 41 ecu_reader obdii(CANSPEED_500); //Create object and set CAN speed
pangsk 0:908be729d27c 42 void gps_demo(void);
pangsk 0:908be729d27c 43 void sd_demo(void);
pangsk 0:908be729d27c 44
pangsk 0:908be729d27c 45 int main() {
pangsk 3:05bb8f0bd7a4 46 pc.baud(115200);
pangsk 0:908be729d27c 47 char buffer[20];
pangsk 3:05bb8f0bd7a4 48
pangsk 3:05bb8f0bd7a4 49 //Enable Pullup
pangsk 3:05bb8f0bd7a4 50 click.mode(PullUp);
pangsk 3:05bb8f0bd7a4 51 right.mode(PullUp);
pangsk 3:05bb8f0bd7a4 52 down.mode(PullUp);
pangsk 3:05bb8f0bd7a4 53 left.mode(PullUp);
pangsk 3:05bb8f0bd7a4 54 up.mode(PullUp);
pangsk 3:05bb8f0bd7a4 55
pangsk 3:05bb8f0bd7a4 56 printf("ECU Reader \n");
pangsk 2:e7b3b8da71ff 57 lcd.locate(0,0); // Set LCD cursor position
pangsk 0:908be729d27c 58 lcd.printf("CAN-Bus demo");
pangsk 0:908be729d27c 59
pangsk 0:908be729d27c 60 lcd.locate(0,1);
pangsk 0:908be729d27c 61 lcd.printf("www.skpang.co.uk");
pangsk 0:908be729d27c 62
pangsk 0:908be729d27c 63 pc.printf("\n\rCAN-bus demo...");
pangsk 0:908be729d27c 64
pangsk 0:908be729d27c 65 wait(3);
pangsk 0:908be729d27c 66 lcd.cls();
pangsk 0:908be729d27c 67 lcd.printf("Use joystick");
pangsk 0:908be729d27c 68
pangsk 0:908be729d27c 69 lcd.locate(0,1);
pangsk 0:908be729d27c 70 lcd.printf("U-CAN:D-GPS:L-SD");
pangsk 3:05bb8f0bd7a4 71
pangsk 3:05bb8f0bd7a4 72 pc.printf("\nU-CAN:D-GPS:L-SD");
pangsk 0:908be729d27c 73
pangsk 0:908be729d27c 74 while(1) // Wait until option is selected by the joystick
pangsk 0:908be729d27c 75 {
pangsk 0:908be729d27c 76
pangsk 0:908be729d27c 77 if(down == 0) gps_demo();
pangsk 0:908be729d27c 78 if(left == 0) sd_demo();
pangsk 0:908be729d27c 79
pangsk 0:908be729d27c 80 if(up == 0) break;
pangsk 0:908be729d27c 81
pangsk 0:908be729d27c 82 }
pangsk 0:908be729d27c 83 lcd.cls();
pangsk 0:908be729d27c 84
pangsk 0:908be729d27c 85 while(1) { // Main CAN loop
pangsk 0:908be729d27c 86 led2 = 1;
pangsk 0:908be729d27c 87 wait(0.1);
pangsk 0:908be729d27c 88 led2 = 0;
pangsk 0:908be729d27c 89 wait(0.1);
pangsk 0:908be729d27c 90
pangsk 0:908be729d27c 91 if(obdii.request(ENGINE_RPM,buffer) == 1) // Get engine rpm and display on LCD
pangsk 0:908be729d27c 92 {
pangsk 0:908be729d27c 93 lcd.locate(0,0);
pangsk 0:908be729d27c 94 lcd.printf(buffer);
pangsk 3:05bb8f0bd7a4 95 pc.printf(buffer);
pangsk 0:908be729d27c 96 }
pangsk 0:908be729d27c 97
pangsk 0:908be729d27c 98 if(obdii.request(ENGINE_COOLANT_TEMP,buffer) == 1)
pangsk 0:908be729d27c 99 {
pangsk 0:908be729d27c 100 lcd.locate(9,0);
pangsk 0:908be729d27c 101 lcd.printf(buffer);
pangsk 0:908be729d27c 102 }
pangsk 0:908be729d27c 103
pangsk 0:908be729d27c 104 if(obdii.request(VEHICLE_SPEED,buffer) == 1)
pangsk 0:908be729d27c 105 {
pangsk 0:908be729d27c 106 lcd.locate(0,1);
pangsk 0:908be729d27c 107 lcd.printf(buffer);
pangsk 0:908be729d27c 108 }
pangsk 0:908be729d27c 109
pangsk 0:908be729d27c 110 if(obdii.request(THROTTLE,buffer) ==1 )
pangsk 0:908be729d27c 111 {
pangsk 0:908be729d27c 112 lcd.locate(9,1);
pangsk 0:908be729d27c 113 lcd.printf(buffer);
pangsk 0:908be729d27c 114 }
pangsk 0:908be729d27c 115
pangsk 0:908be729d27c 116 }
pangsk 0:908be729d27c 117 }
pangsk 0:908be729d27c 118
pangsk 0:908be729d27c 119 void gps_demo(void)
pangsk 0:908be729d27c 120 {
pangsk 0:908be729d27c 121 lcd.cls();
pangsk 0:908be729d27c 122 lcd.printf("GPS demo");
pangsk 0:908be729d27c 123 lcd.locate(0,1);
pangsk 0:908be729d27c 124 lcd.printf("Waiting for lock");
pangsk 0:908be729d27c 125
pangsk 0:908be729d27c 126 wait(3);
pangsk 0:908be729d27c 127 lcd.cls();
pangsk 2:e7b3b8da71ff 128
pangsk 0:908be729d27c 129 while(1)
pangsk 0:908be729d27c 130 {
pangsk 0:908be729d27c 131 if(gps.sample()) {
pangsk 0:908be729d27c 132 lcd.cls();
pangsk 0:908be729d27c 133 lcd.printf("Long:%f", gps.longitude);
pangsk 0:908be729d27c 134 lcd.locate(0,1);
pangsk 0:908be729d27c 135 lcd.printf("Lat:%f", gps.latitude);
pangsk 0:908be729d27c 136 pc.printf("I'm at %f, %f\n", gps.longitude, gps.latitude);
pangsk 0:908be729d27c 137 } else {
pangsk 0:908be729d27c 138 pc.printf("Oh Dear! No lock :(\n");
pangsk 0:908be729d27c 139 lcd.cls();
pangsk 0:908be729d27c 140 lcd.printf("Waiting for lock");
pangsk 2:e7b3b8da71ff 141
pangsk 0:908be729d27c 142 }
pangsk 0:908be729d27c 143 }
pangsk 0:908be729d27c 144
pangsk 0:908be729d27c 145 }
pangsk 0:908be729d27c 146
pangsk 0:908be729d27c 147 void sd_demo(void)
pangsk 0:908be729d27c 148 {
pangsk 2:e7b3b8da71ff 149 lcd.cls();
pangsk 3:05bb8f0bd7a4 150 printf("\nSD demo");
pangsk 2:e7b3b8da71ff 151 lcd.printf("SD demo");
pangsk 2:e7b3b8da71ff 152 wait(2);
pangsk 0:908be729d27c 153 lcd.cls();
pangsk 2:e7b3b8da71ff 154
pangsk 2:e7b3b8da71ff 155 FILE *fp = fopen("/sd/sdtest2.txt", "w");
pangsk 2:e7b3b8da71ff 156 if(fp == NULL) {
pangsk 2:e7b3b8da71ff 157 lcd.cls();
pangsk 2:e7b3b8da71ff 158 lcd.printf("Could not open file for write\n");
pangsk 3:05bb8f0bd7a4 159 pc.printf("\nCould not open file for write");
pangsk 2:e7b3b8da71ff 160 }
pangsk 2:e7b3b8da71ff 161 fprintf(fp, "Hello fun SD Card World! testing 1234");
pangsk 2:e7b3b8da71ff 162 fclose(fp);
pangsk 2:e7b3b8da71ff 163 lcd.locate(0,1);
pangsk 2:e7b3b8da71ff 164 lcd.printf("Writtern to SD card");
pangsk 3:05bb8f0bd7a4 165 pc.printf("\nWrittern to SD card");
pangsk 2:e7b3b8da71ff 166
pangsk 0:908be729d27c 167 while(1)
pangsk 0:908be729d27c 168 {
pangsk 2:e7b3b8da71ff 169 led2 = 1;
pangsk 2:e7b3b8da71ff 170 wait(0.1);
pangsk 2:e7b3b8da71ff 171 led2 = 0;
pangsk 2:e7b3b8da71ff 172 wait(0.1);
pangsk 2:e7b3b8da71ff 173
pangsk 0:908be729d27c 174 }
pangsk 0:908be729d27c 175
pangsk 0:908be729d27c 176 }