#define GAP_DELAY 1000
#define DWELL 3
#define SPARK_DELAY 30
#define C1 12
#define C2 11
#define C3 10
#define C4 9
#define POTENTIOMETER_PIN 0
// int rpm_table = [4.5, 4, 3.5, 3, 2.5]; // corresponding dwell to rpm 1000, 2000, 3000, 4000, 5000
int START_DELAY=2000;
bool cranking = true;
void setup() {
pinMode(C1, OUTPUT);
pinMode(C2, OUTPUT);
pinMode(C3, OUTPUT);
pinMode(C4, OUTPUT);
}
void loop() {
if(cranking) {
delay(START_DELAY);
cranking = false; // if ign NE is true, set tdc to false
// engine idle is over 400 rpm
}
Serial.println(analogRead(POTENTIOMETER_PIN));
// Q: how do you know an engine is not on cranking state? prolly using signal from distributor
// that tells the spark is generated
// if(ignitionSignal) { // ignition signal
// }
digitalWrite(C1, HIGH);
delay(DWELL);
digitalWrite(C1, LOW);
delay(SPARK_DELAY);
digitalWrite(C2, HIGH);
delay(DWELL);
digitalWrite(C2, LOW);
delay(SPARK_DELAY);
digitalWrite(C3, HIGH);
delay(DWELL);
digitalWrite(C3, LOW);
delay(SPARK_DELAY);
digitalWrite(C4, HIGH);
delay(DWELL);
digitalWrite(C4, LOW);
delay(GAP_DELAY);
}