
hgjh
Dependencies: BSP_DISCO_F469NIa EEPROM_DISCO_F469NI LCD_DISCO_F469NIa SD_DISCO_F469NI mbed
Fork of IntegrationCAN_28jun by
Revision 3:a06e417a5a2c, committed 2018-07-05
- Comitter:
- nemanja1994
- Date:
- Thu Jul 05 20:18:32 2018 +0000
- Parent:
- 2:f54f01527ebb
- Commit message:
- fhgj;
Changed in this revision
diff -r f54f01527ebb -r a06e417a5a2c CAN_library.cpp --- 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
diff -r f54f01527ebb -r a06e417a5a2c CAN_library.h --- 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.
diff -r f54f01527ebb -r a06e417a5a2c main.cpp --- 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
diff -r f54f01527ebb -r a06e417a5a2c screen_library.cpp --- 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);