Dependencies:   FatFileSystem mbed GPS TextLCD

Revision:
0:908be729d27c
Child:
1:3552a3289608
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jul 08 21:05:29 2010 +0000
@@ -0,0 +1,152 @@
+/*
+
+mbed Can-Bus demo
+
+This program is to demonstrate the CAN-bus capability of the mbed module.
+
+www.skpang.co.uk/catalog
+
+v1.0 July 2010
+
+********************************************************************************
+
+WARNING: Use at your own risk, sadly this software comes with no guarantees.
+This software is provided 'free' and in good faith, but the author does not
+accept liability for any damage arising from its use.
+
+********************************************************************************
+
+
+*/
+
+#include "mbed.h"
+#include "ecu_reader.h"
+#include "globals.h"
+#include "TextLCD.h"
+#include "GPS.h"
+
+GPS gps(p28, p27);
+TextLCD lcd(p18, p19, p20, p17, p16, p15, p14); // rs, rw, e, d0, d1, d2, d3
+
+DigitalIn click(p21);   // Joystick inputs
+DigitalIn right(p22);
+DigitalIn down(p23);
+DigitalIn left(p24);
+DigitalIn up(p25);
+
+ecu_reader obdii(CANSPEED_500);     //Create object and set CAN speed
+void gps_demo(void);
+void sd_demo(void);
+
+int main() {
+    
+    char buffer[20];
+ 
+    lcd.locate(0,0);
+    lcd.printf("CAN-Bus demo");
+    
+    lcd.locate(0,1);
+    lcd.printf("www.skpang.co.uk");
+       
+    pc.printf("\n\rCAN-bus demo...");
+    
+    wait(3);
+    lcd.cls();
+    lcd.printf("Use joystick");
+
+    lcd.locate(0,1);
+    lcd.printf("U-CAN:D-GPS:L-SD");
+
+    while(1)    // Wait until option is selected by the joystick
+    {
+   
+        if(down == 0) gps_demo();
+        if(left == 0) sd_demo();
+               
+        if(up == 0) break;
+        
+    }
+    lcd.cls();
+
+    while(1) {  // Main CAN loop
+        led2 = 1;
+        wait(0.1);
+        led2 = 0;
+        wait(0.1);
+        
+        if(obdii.request(ENGINE_RPM,buffer) == 1)   // Get engine rpm and display on LCD
+        {
+            lcd.locate(0,0);
+            lcd.printf(buffer);
+        }   
+         
+        if(obdii.request(ENGINE_COOLANT_TEMP,buffer) == 1)
+        {
+            lcd.locate(9,0);
+            lcd.printf(buffer);
+        }
+        
+        if(obdii.request(VEHICLE_SPEED,buffer) == 1)
+        {
+            lcd.locate(0,1);
+            lcd.printf(buffer);
+        }
+     
+        if(obdii.request(THROTTLE,buffer) ==1 )
+        {
+            lcd.locate(9,1);
+            lcd.printf(buffer);          
+        }   
+       
+    }
+}
+
+void gps_demo(void)
+{
+    pc.printf("\rGPS demo");
+    lcd.cls();
+    lcd.printf("GPS demo");
+    lcd.locate(0,1);
+    lcd.printf("Waiting for lock");
+ 
+    wait(3);    
+    lcd.cls();
+    
+    
+    while(1)
+    {
+      if(gps.sample()) {
+         lcd.cls();
+        lcd.printf("Long:%f", gps.longitude);
+           lcd.locate(0,1);
+        lcd.printf("Lat:%f", gps.latitude);
+            pc.printf("I'm at %f, %f\n", gps.longitude, gps.latitude);
+        } else {
+            pc.printf("Oh Dear! No lock :(\n");
+            lcd.cls();
+            lcd.printf("Waiting for lock");
+     
+ 
+    
+        }
+    
+    
+    }
+ 
+}
+
+void sd_demo(void)
+{
+    pc.printf("\rSD demo");
+    
+    lcd.cls();
+    lcd.printf("Use joystick");
+    wait(3);      
+    while(1)
+    {
+    
+    
+    
+    }
+ 
+}