-
Notifications
You must be signed in to change notification settings - Fork 0
/
vehicleSimulatorSubSystem.ino
54 lines (39 loc) · 1.61 KB
/
vehicleSimulatorSubSystem.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <SoftwareSerial.h> //#include <AltSoftSerial.h>
#include "VehicleSimulator.h"
#include "EmulatedElmFirmware.h"
#include "VehicleDashboard.h"
#include "Logger.h"
SoftwareSerial mySerial(8, 9); // arduino's RX,arduino's TX
unsigned long lastTime = 0;
Logger* logger;
#define BAUD_RATE 9600
#define ENGINE_PERCENTAGE_PID A0
#define BREAKING_PERCENTAGE_PID A1
#define FUEL_LEVEL_PERCENTAGE_PID A2
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
#define dt 1000 // period (in millis) OF 1. SIMULATION, 2.DISPLAY and 3. checking (by sim. elm)if commands arrived
VehicleSimulator* vehicleSimulator = new VehicleSimulator();
VehicleDashboard* dashboard = new VehicleDashboard();
EmulatedElmFirmware* elmFirmware = new EmulatedElmFirmware();
void setup() {
mySerial.begin(BAUD_RATE);
Serial.begin(BAUD_RATE);
vehicleSimulator->init(ENGINE_PERCENTAGE_PID, BREAKING_PERCENTAGE_PID, FUEL_LEVEL_PERCENTAGE_PID);
dashboard->init(rs, en, d4, d5, d6, d7, 2);
elmFirmware->init(mySerial);
logger = Logger::GetInstance();
logger->setPrefix("vehicleSim");
logger->log(F("OBD scanner emulator ready for cmds. "));
}
void loop() {
if ((millis() - lastTime) > dt) {
vehicleSimulator->update(dt);
dashboard->display(int(vehicleSimulator->vx * 3.6), // mps => kph
vehicleSimulator->rpm,
vehicleSimulator->distTrav,
vehicleSimulator->duration);
elmFirmware->checkQueryAndRespond(*vehicleSimulator);
logger->log(F("--------------------------------"));
lastTime = millis();
}
}