hgjh

Dependencies:   BSP_DISCO_F469NIa EEPROM_DISCO_F469NI LCD_DISCO_F469NIa SD_DISCO_F469NI mbed

Fork of IntegrationCAN_28jun by Nenad Djalovic

Files at this revision

API Documentation at this revision

Comitter:
nemanja1994
Date:
Thu Jul 05 20:18:32 2018 +0000
Parent:
2:f54f01527ebb
Commit message:
fhgj;

Changed in this revision

CAN_library.cpp Show annotated file Show diff for this revision Revisions of this file
CAN_library.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
screen_library.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/CAN_library.cpp	Thu Jun 28 16:33:23 2018 +0000
+++ b/CAN_library.cpp	Thu Jul 05 20:18:32 2018 +0000
@@ -16,50 +16,57 @@
 extern int FL_LVDT_Ref,FR_LVDT_Ref,RL_LVDT_Ref,RR_LVDT_Ref;
 int LVDT_Max=150;
 extern float Meter_counter,Meter_counter0;
+extern char cmd[3];
+extern int addr;
+extern I2C i2c;
+
+extern void showLedRpm(int rpm);
+
 
 void CANMsgReceive(){                     // CAN RX Interrupt Function
     CANMessage tmpMsg;
     if (can.read(tmpMsg)) {                 //Detect message
         //pc.printf("%x\n",tmpMsg.id);       
         switch(tmpMsg.id){                  //Find which DTA message is received 
-            case(0):
+            case(0x2000):
                 rx_flag|=(1<<0);
                 msgDTA1=tmpMsg;
+                //pc.printf("%x\n", tmpMsg.id);
                 break;
-            case(1):
+            case(0x2001):
                 rx_flag|=(1<<1);
                 msgDTA2=tmpMsg;
                 //pc.printf("rx_flag=%x\n",rx_flag);
                 break;
-            case(2):
+            case(0x2002):
                 rx_flag|=(1<<2);
                 msgDTA3=tmpMsg;
                 break;
-            case(3):
+            case(0x2003):
                 rx_flag|=(1<<3);
                 msgDTA4=tmpMsg;
                 break;
-            case(4):
+            case(0x2004):
                 rx_flag|=(1<<4);
                 msgDTA5=tmpMsg;
                 break;
-            case(5):
+            case(0x2005):
                 rx_flag|=(1<<5);
                 msgDTA6=tmpMsg;
                 break;
-            case(6):
+            case(0x1006):
                 rx_flag|=(1<<6);
                 msgLVDTFront=tmpMsg;
                 break;
-            case(7):
+            case(0x1007):
                 rx_flag|=(1<<7);
                 msgLVDTRear=tmpMsg;
                 break;
-            case(8):
+            case(0x1008):
                 rx_flag|=(1<<8);
                 msgBrakes=tmpMsg;
                 break;
-            case(9):
+            case(0x1009):
                 rx_flag|=(1<<9);
                 msgDistance=tmpMsg;
         };
@@ -173,12 +180,14 @@
 void UpdateInfoDTA1(uint16_t newData[4]){                //Update values for DTA1 message
     Rpm0=Rpm;
     Rpm=newData[0];
+    showLedRpm(Rpm);
     TPS0=TPS;
     TPS=newData[1];
     Water_Temp0=Water_Temp;
     Water_Temp=newData[2];
     Air_Temp0=Air_Temp;
     Air_Temp=newData[3];
+    //pc.printf("%d %d %d %d", Rpm, TPS,Water_Temp,Air_Temp);
 };
 
 void UpdateInfoDTA2(uint16_t newData[4]){                //Update values for DTA2 message
--- a/CAN_library.h	Thu Jun 28 16:33:23 2018 +0000
+++ b/CAN_library.h	Thu Jul 05 20:18:32 2018 +0000
@@ -14,7 +14,7 @@
 #define LVDT_FRONT  0x1006
 #define LVDT_REAR   0x1007
 #define BRAKES  0x1008
-#define DISTANCE 0x0009
+#define DISTANCE 0x1009
 // If we add some other IDs in the vehicle add them here
 
 #define DISTANCE_MEMORY_ADDR        3592960                            //Start address in SD card memory reserved for Distance Statistics.
--- a/main.cpp	Thu Jun 28 16:33:23 2018 +0000
+++ b/main.cpp	Thu Jul 05 20:18:32 2018 +0000
@@ -7,7 +7,9 @@
 SD_DISCO_F469NI sd;                         //Initialize SD Card
 //EEPROM_DISCO_F469NI eep;                    //Initialize EEPROM Internal memory
 Serial pc(USBTX, USBRX);                    //Initialize Serial. This is used only while debuging code.
-CAN can(PB_5, PB_13);                       //Initialize CAN.
+CAN can(PB_5, PB_13,1000000);                       //Initialize CAN.
+I2C i2c(D14, D15);
+DigitalOut reset(D8);
 InterruptIn change_screen_input(D0);        //Initialize Digital input for Change screen button
 Timer t_int,t_store;
 
@@ -40,13 +42,94 @@
 CANMessage msgBrakes;       // Brake system preassure, Braking On/Off
 CANMessage msgDistance;     // Total distance
 
+// LED Bar for RPM
 
-int main(){    
+char cmd[3];
+int addr = 0x74<<1;
+
+void LEDInitialize(){
+    reset.write(1);
+    wait(1);
+    // set port as output
+    cmd[0]=0x06;
+    cmd[1]=0x00;
+    cmd[2]=0x00;
+    i2c.write(addr,cmd,3);
+    pc.printf( "cao\n");
+}
+
+void showLedRpm(int RPM){
+    pc.printf("%d\n",RPM);
+    if(RPM<1000) {
+        cmd[1]=0xFF;
+        cmd[2]=0xFF;
+        }
+    else if (RPM<2000) {
+        cmd[1]=0xFF;
+        cmd[2]=0xDF;
+        }
+    else if (RPM <3000) {
+        cmd[1]=0xFF;
+        cmd[2]=0xCF;
+        }
+    else if (RPM <4000) {
+        cmd[1]=0xFF;
+        cmd[2]=0xC7;
+        }
+    else if (RPM <5000) {
+        pc.printf("tu sam %d\n", RPM);
+        cmd[1]=0xFF;
+        cmd[2]=0xC3;
+        }
+    else if (RPM <6000) {
+        cmd[1]=0xFF;
+        cmd[2]=0xC1;
+        }
+    else if (RPM <7000) {
+        cmd[1]=0xFF;
+        cmd[2]=0xC0;
+        }
+    else if (RPM <8000) {
+        cmd[1]=0xBF;
+        cmd[2]=0xC0;
+        }
+    else if (RPM <9000) {
+        cmd[1]=0x9F;
+        cmd[2]=0xC0;
+        }
+    else if (RPM <10000) {
+        cmd[1]=0x8F;
+        cmd[2]=0xC0;
+        }
+    else if (RPM <11000) {
+        cmd[1]=0x87;
+        cmd[2]=0xC0;
+        }
+    else if (RPM <12000) {
+        cmd[1]=0x83;
+        cmd[2]=0xC0;
+        }
+    else if (RPM <13000) {
+        cmd[1]=0x81;
+        cmd[2]=0xC0;
+        }
+    else {
+        cmd[1]=0x80;
+        cmd[2]=0xC0;
+        }
+    cmd[0]=0x02;
+    i2c.write(addr, cmd, 3);
+}
+
+
+int main(){ 
+    LEDInitialize();   
     can.attach(&CANMsgReceive,CAN::RxIrq);      // Attach interrupt function to CAN RX
     change_screen_input.rise(&ChangeCommand);   //Attach interrupt function to rising edge of DigitalIn for changing screen.
     SetIntro();                                 // Display logo when starting display
     SetMain();                                  // First screen is main by default
-    //sd.Init();
+    sd.Init();
+    
     while(1){
         if(change_flag){                        // Check if screen is changed
             ChangeScreen();                         
@@ -64,4 +147,5 @@
                 break;
         };
     };
+    
 };
\ No newline at end of file
--- a/screen_library.cpp	Thu Jun 28 16:33:23 2018 +0000
+++ b/screen_library.cpp	Thu Jul 05 20:18:32 2018 +0000
@@ -42,7 +42,9 @@
 
 void SetIntro(){                                // Set Intro screen
     DrawRGBImage(LogoBig,0,0);
-    wait(0.5);
+    wait(1);
+    DrawRGBImage(Branko,250,50);
+    wait(3);
     /*lcd.SetTextColor(LCD_COLOR_WHITE);
     lcd.FillRect(0,0,800,480);
     PrintString(" Srecnu Novu godinu ",50,70,50,LCD_COLOR_RED);
@@ -97,7 +99,7 @@
     PrintString("kPa",50,470,30,LCD_COLOR_BLACK);
     PrintString("kPa",50,470,90,LCD_COLOR_BLACK);
     PrintString("C",50,470,150,LCD_COLOR_BLACK);
-    PrintString("Ratio",50,470,210,LCD_COLOR_BLACK);
+    PrintString("Ratio",50,500,210,LCD_COLOR_BLACK);
     PrintString("V",50,470,270,LCD_COLOR_BLACK);
     PrintString("km",50,550,390,LCD_COLOR_BLACK);
     DrawRGBImage(LogoSmall,LogoSmallXPos,LogoSmallYPos);
@@ -105,8 +107,8 @@
     SetNumber(Oil_P,50,OilPXPos,OilPYPos,3,0,0);
     SetNumber(MAP,50,MAPXPos,MAPYPos,3,0,0);
     SetNumber(Air_Temp,50,AirTempXPos,AirTempYPos,3,0,0);
-    SetNumber(Lambda,50,LambdaXPos,LambdaYPos,3,0,0);
-    SetNumber(Volts,50,VoltsXPos,VoltsYPos,3,0,0);
+    SetNumber(Lambda,50,LambdaXPos,LambdaYPos,4,1,0);
+    SetNumber(Volts,50,VoltsXPos,VoltsYPos,3,2,0);
     ChangeCrank(Crank);
     SetNumber((int)(Meter_counter/10),50,Meter_counterXPos,Meter_counterYPos,5,3,0);
 };
@@ -180,10 +182,10 @@
         ChangeNumber(Air_Temp,Air_Temp0,50,AirTempXPos,AirTempYPos,3,0,0);
     };
     if (Lambda!=Lambda0){
-        ChangeNumber(Lambda,Lambda0,50,LambdaXPos,LambdaYPos,3,0,0);
+        ChangeNumber(Lambda,Lambda0,50,LambdaXPos,LambdaYPos,4,1,0);
     };
     if (Volts!=Volts0){
-        ChangeNumber(Volts,Volts0,50,VoltsXPos,VoltsYPos,3,0,0);
+        ChangeNumber(Volts,Volts0,50,VoltsXPos,VoltsYPos,3,2,0);
     };
     if (Crank!=Crank0){
         ChangeCrank(Crank);