// Pin numbers:
const int pointsPin_BankA = 23; // Pin number for distributor sensor bank A signal.
const int pointsPin_BankB = 5; // Pin number for distributor sensor bank B signal.
const int coilPin_BankA = 22; // Pin number for ignition coil bank A transistors.
const int coilPin_BankB = 17; // Pin number for ignition coil bank B transistors.
const int injectorPin = 21; // Pin number for fuel injection transistor.
const int fuelPump = 19; // Pin number for auxiliary transistor.
const int auxPin = 19; // Pin number for auxiliary transistor.
const int redlineLEDPin = 18; // Pin number for redline indicator LED.
const int statusLEDPin = 2; // Pin number for status indicator LED.
const int A0Pin = 32; // Pin number for analog input 0 (MAP sensor).
const int A1 = 33; // Pin number for analog input 1.
const int A2 = 34; // Pin number for analog input 2.
const int A3Pin = 35; // Pin number for analog input 3.
int inputStateA, inputStateB, MAP, IAT, TPS, ECT;
// Variable to store incoming serial data
char serialData;
void setup() {
// Initialize serial communication at 9600 baud rate
Serial.begin(115200);
// Set the output pin as an output
pinMode(coilPin_BankA, OUTPUT);
pinMode(coilPin_BankB, OUTPUT);
pinMode(injectorPin, OUTPUT);
pinMode(fuelPump, OUTPUT);
pinMode(pointsPin_BankA, INPUT);
pinMode(pointsPin_BankB, INPUT);
// Wait for serial port to be ready
while (!Serial) {
;
}
// Prompt user
Serial.println("Serial diag:");
Serial.println("Enter 'a' to fire coilpack A.");
Serial.println("Enter 'b' to fire coilpack B.");
Serial.println("Enter 'f' to cycle fuel pump.");
Serial.println("Enter 'i' to cycle fuel pump and fire injector.");
Serial.println("Enter 'r' to display all sensor status.");
}
void loop() {
// Check if serial data is available
if (Serial.available() > 0) {
// Read the incoming byte
serialData = Serial.read();
// Process the command
switch (serialData) {
case 'a':
// Turn ON the output pin
digitalWrite(coilPin_BankA, HIGH);
delay(100);
digitalWrite(coilPin_BankA, LOW);
Serial.println("Spark A triggered.");
break;
case 'b':
// Turn ON the output pin
digitalWrite(coilPin_BankB, HIGH);
delay(100);
digitalWrite(coilPin_BankB, LOW);
Serial.println("Spark A triggered.");
break;
case 'f':
// Turn ON the output pin
digitalWrite(fuelPump, HIGH);
delay(3000);
digitalWrite(fuelPump, LOW);
Serial.println("Fuel pump cycled.");
break;
case 'i':
// Turn ON the output pin
digitalWrite(fuelPump, HIGH);
delay(100);
digitalWrite(injectorPin, HIGH);
delay(500);
digitalWrite(injectorPin, LOW);
digitalWrite(fuelPump, LOW);
Serial.println("injector cycled.");
break;
case 'r':
// Read the state of the input pin
inputStateA = digitalRead(pointsPin_BankA);
inputStateB = digitalRead(pointsPin_BankB);
MAP=analogRead(A0)/4;
TPS=analogRead(A1)/4;
IAT=analogRead(A2)/4;
ECT=analogRead(A3)/4;
Serial.print("Input: CrankA=");
Serial.print(inputStateA);
Serial.print(", CrankB=");
Serial.print(inputStateB);
Serial.print(", MAP=");
Serial.print(MAP);
Serial.print(", TPS=");
Serial.print(TPS);
Serial.print(", IAT=");
Serial.print(IAT);
Serial.print(", ECT=");
Serial.print(ECT);
Serial.println("");
break;
default:
Serial.println("Serial diag:");
Serial.println("Enter 'a' to fire coilpack A.");
Serial.println("Enter 'b' to fire coilpack B.");
Serial.println("Enter 'f' to cycle fuel pump.");
Serial.println("Enter 'i' to cycle fuel pump and fire injector.");
Serial.println("Enter 'r' to display all sensor status.");
break;
}
}
}