Informatika praktikum 2 (Akhdan) — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by achmadthoriqul2.

Components

Sketch code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>

// ========================================
// PENGATURAN KOMPONEN
// ========================================

// LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Pin LED dan Servo
const int LED_MERAH = 25;
const int SERVO_PIN = 13;

// Membuat objek servo
Servo servo;


// ========================================
// FUNGSI GERAK SERVO HALUS
// ========================================

void gerakHalus(int posisiAwal, int posisiAkhir) {

  // Jika servo bergerak ke arah kanan
  if (posisiAwal < posisiAkhir) {

    for (int posisi = posisiAwal; posisi <= posisiAkhir; posisi++) {

      servo.write(posisi);

      // Semakin besar angka, semakin lambat
      delay(20);
    }
  }

  // Jika servo bergerak ke arah kiri
  else {

    for (int posisi = posisiAwal; posisi >= posisiAkhir; posisi--) {

      servo.write(posisi);

      delay(20);
    }
  }
}


// ========================================
// SETUP
// ========================================

void setup() {

  // Serial Monitor
  Serial.begin(115200);

  // LED sebagai OUTPUT
  pinMode(LED_MERAH, OUTPUT);

  // Menghubungkan servo ke D13
  servo.attach(SERVO_PIN, 500, 2400);

  // Mengaktifkan LCD
  lcd.init();
  lcd.backlight();

  // Posisi awal servo
  servo.write(0);

  // LED mati
  digitalWrite(LED_MERAH, LOW);

  // Tampilan awal LCD
  lcd.setCursor(0, 0);
  lcd.print("Lampu merah");

  lcd.setCursor(0, 1);
  lcd.print("OFF");

  Serial.println("Sistem dimulai");
  Serial.println("Servo 0 derajat - Lampu OFF");
}


// ========================================
// LOOP
// ========================================

void loop() {

  // =====================================
  // KONDISI 1
  // SERVO → 0°
  // LED → OFF
  // =====================================

  gerakHalus(180, 0);

  digitalWrite(LED_MERAH, LOW);

  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print("Lampu merah");

  lcd.setCursor(0, 1);
  lcd.print("OFF");

  Serial.println("Servo 0 derajat - Lampu merah OFF");

  // Tunggu 10 detik
  delay(10000);


  // =====================================
  // KONDISI 2
  // SERVO → 90°
  // LED → ON
  // =====================================

  gerakHalus(0, 90);

  digitalWrite(LED_MERAH, HIGH);

  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print("Lampu merah");

  lcd.setCursor(0, 1);
  lcd.print("ON");

  Serial.println("Servo 90 derajat - Lampu merah ON");

  // Tunggu 10 detik
  delay(10000);


  // =====================================
  // KONDISI 3
  // SERVO → 180°
  // LED → ON
  // =====================================

  gerakHalus(90, 180);

  digitalWrite(LED_MERAH, HIGH);

  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print("Lampu merah");

  lcd.setCursor(0, 1);
  lcd.print("ON");

  Serial.println("Servo 180 derajat - Lampu merah ON");

  // Tunggu 10 detik
  delay(10000);

}

More projects by achmadthoriqul2