// Definisikan pin yang digunakan
const int cmpPin = 2; // Pin untuk simulasi CMP (misalnya, pin digital 2)
const int ckpPin = 3; // Pin untuk simulasi CKP (misalnya, pin digital 3)
const int potPin = A0; // Pin untuk potensiometer (misalnya, pin analog A0)
int rpm = 0; // Variabel untuk menyimpan nilai RPM
int potValue = 0; // Nilai potensiometer untuk throttle dan pengaturan RPM
int cmpState = LOW; // Simulasi status CMP (LOW = tidak ada sinyal, HIGH = ada sinyal)
int ckpState = LOW; // Simulasi status CKP (LOW = tidak ada sinyal, HIGH = ada sinyal)
unsigned long previousMillis = 0; // Waktu sebelumnya untuk deteksi pergerakan CKP
void setup() {
pinMode(cmpPin, OUTPUT); // Set pin CMP sebagai output
pinMode(ckpPin, OUTPUT); // Set pin CKP sebagai output
pinMode(potPin, INPUT); // Set pin potensiometer sebagai input
// Inisialisasi Serial Monitor
Serial.begin(9600);
}
void loop() {
// Baca nilai potensiometer
potValue = analogRead(potPin);
// Hitung RPM berdasarkan nilai potensiometer (misalnya, nilai maksimum 7000 RPM)
rpm = map(potValue, 0, 1023, 0, 7000);
// Simulasi CMP (sinyal berulang setiap 360 derajat putaran)
if (millis() % 720 < 360) {
cmpState = HIGH;
} else {
cmpState = LOW;
}
// Simulasi CKP (sinyal berulang setiap putaran mesin)
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= 1000 / (rpm / 60.0)) {
previousMillis = currentMillis;
ckpState = !ckpState; // Toggle state CKP
}
// Output ke pin CMP dan CKP
digitalWrite(cmpPin, cmpState);
digitalWrite(ckpPin, ckpState);
// Tampilkan nilai RPM dan potensiometer di Serial Monitor untuk debugging
Serial.print("Throttle: ");
Serial.print(potValue);
Serial.print(", RPM: ");
Serial.println(rpm);
delay(10); // Delay untuk stabilisasi
}