0% found this document useful (0 votes)
20 views

Tci Esp32

Uploaded by

Ibune Alvaro
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Tci Esp32

Uploaded by

Ibune Alvaro
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

#include <WiFi.

h>
#include <ESPAsyncWebServer.h>

// Deklarasi pin
const int pulserPin = 34; // Pin input dari pulser
const int ignitionPin = 26; // Output ke transistor FET untuk pengapian

// Variabel untuk RPM dan sudut pengapian


int rpm = 0;
int ignitionTiming = 10; // Awal pengapian default 10 derajat
unsigned long lastPulserTime = 0; // Waktu terakhir sinyal dari pulser
int rpmMapping[] = {0, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000,
5500, 6000, 6500, 7000, 7500, 8000, 8500, 9000, 9500, 10000, 10500, 11000, 11500,
12000, 12500, 13000};
int ignitionMapping[] = {10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36,
38, 40, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42}; // Pengapian dari 10 derajat
hingga 42 derajat

// Setup server web


AsyncWebServer server(80);

void setup() {
// Inisialisasi serial monitor
Serial.begin(115200);

// Setup pin
pinMode(pulserPin, INPUT);
pinMode(ignitionPin, OUTPUT);

// Setup WiFi Access Point


WiFi.softAP("ECU_ESP32", "123456789");

// Handle untuk halaman web


server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
String html = "<html><body>";
html += "<h1>ECU Motor Control</h1>";
html += "<p>RPM: " + String(rpm) + "</p>";
html += "<p>Ignition Timing: " + String(ignitionTiming) + " degrees</p>";
html += "<form action='/settiming' method='GET'>";
html += "<label for='timing'>Set Ignition Timing (10-42): </label>";
html += "<input type='number' id='timing' name='timing' min='10' max='42'
value='" + String(ignitionTiming) + "'>";
html += "<input type='submit' value='Set Timing'>";
html += "</form>";
html += "</body></html>";
request->send(200, "text/html", html);
});

// Handle untuk mengubah ignition timing


server.on("/settiming", HTTP_GET, [](AsyncWebServerRequest *request){
if (request->hasParam("timing")) {
String timingValue = request->getParam("timing")->value();
ignitionTiming = timingValue.toInt();
}
request->redirect("/");
});

// Mulai server
server.begin();
}

void loop() {
// Hitung RPM dari pulser
int pulserState = digitalRead(pulserPin);
if (pulserState == HIGH) {
unsigned long currentTime = millis();
if (currentTime - lastPulserTime > 0) {
rpm = 60000 / (currentTime - lastPulserTime); // Hitung RPM
lastPulserTime = currentTime;
}
}

// Pemetaan RPM ke pengapian


for (int i = 0; i < sizeof(rpmMapping) / sizeof(rpmMapping[0]); i++) {
if (rpm <= rpmMapping[i]) {
ignitionTiming = ignitionMapping[i];
break;
}
}

// Simulasikan pengapian (mengirim sinyal PWM ke transistor)


digitalWrite(ignitionPin, HIGH);
delayMicroseconds(ignitionTiming * 100); // Durasi sinyal berdasarkan timing
pengapian
digitalWrite(ignitionPin, LOW);
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy