Percobaan 2 Kondisi 3


MODUL 1 PERCOBAAN 2 KONDISI 3


1. Prosedur[Kembali]

  1. Pahami terlebih dahulu kondisi yang akan digunakan
  2. Buka web Wokwi
  3. Persiapkan alat dan bahan
  4. Buat rangkaian sesuai dengan kondisi dan modul
  5. Buat kode program untuk mengoperasikan rangkaian tersebut sesuai dengan kondisi 
  6. Jalankan simulasi rangkaian.  
  7. Proses selesai


2. Hardware dan Diagram Blok[Kembali]

    a. Hardware


STM32 NUCLEO-G474RE


Infrared Sensor


Buzzer


LED RGB


Resistor 1k ohm


Switch


Adaptor


Breadboard

    b. Diagram Blok



3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

    Rangkaian Simulasi


    Prinsip Kerja

1. Kondisi Awal Saat rangkaian dinyalakan dan mendapat suplai dari adaptor melalui breadboard, STM32 NUCLEO-C031C6 melakukan inisialisasi HAL, konfigurasi clock HSI, dan inisialisasi GPIO. Pin PA0 (Switch) dan PA1 (IR Sensor) dikonfigurasi sebagai input dengan pull-down, sedangkan pin PB0, PB1, PB2 (LED RGB) dikonfigurasi sebagai output push-pull.

2. Pembacaan Sensor (Loop Utama) Di dalam while(1), STM32 terus membaca dua sinyal input secara bersamaan:

PA1 membaca ke status Infrared Sensor (mendeteksi benda atau tidak)

PA0 membaca status Switch (ON atau OFF)

3. Logika Kondisi. Sistem mengecek dua syarat secara bersamaan:

IR  == GPIO_PIN_RESET artinya tidak mendeteksi benda

SW  == GPIO_PIN_SET artinya switch dalam posisi ON

Kedua syarat harus terpenuhi agar LED menyala.

4. Output: LED Menyala Orange Warna orange pada LED RGB dihasilkan dengan menyalakan kombinasi merah (PB1) dan hijau (PB0) secara bersamaan, sedangkan biru (PB2) ikut diaktifkan sesuai kode program:

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // Merah

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // Hijau

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); // Buzzer

Kombinasi merah + hijau menghasilkan warna orange/kuning pada LED RGB. Resistor 1k ohm pada masing-masing jalur LED berfungsi membatasi arus agar LED tidak rusak.

5. Kondisi Tidak Terpenuhi Jika IR mendeteksi benda atau switch dalam posisi OFF, maka ketiga pin PB langsung diset RESET sehingga LED padam sepenuhnya, lalu sistem kembali membaca sensor.


4. Flowchart[Kembali]

    a. Flowchart



    b. Listing Program
        
#include "main.h"   // Memanggil header utama STM32 (HAL, definisi pin, dll)

// Deklarasi fungsi konfigurasi clock
void SystemClock_Config(void);

// Deklarasi fungsi inisialisasi GPIO
static void MX_GPIO_Init(void);

int main(void) // Fungsi utama program
{
  HAL_Init();               // Inisialisasi HAL (reset sistem & setup dasar)
  SystemClock_Config();     // Konfigurasi clock sistem
  MX_GPIO_Init();           // Inisialisasi GPIO (input & output)

  while (1) // Loop utama (berjalan terus menerus)
  {
    // Membaca kondisi sensor IR pada pin PA1
    GPIO_PinState ir = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);

    // Membaca kondisi switch pada pin PA0
    GPIO_PinState sw = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);

    // Jika IR tidak mendeteksi objek (0) DAN switch ON (1)
    if (ir == GPIO_PIN_RESET && sw == GPIO_PIN_SET)
    {
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // Nyalakan LED merah (PB1)
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // Nyalakan LED hijau (PB0)
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); // Nyalakan LED biru (PB2)
      // Semua LED ON → warna putih
    }
    else
    {
      // Jika kondisi tidak terpenuhi → matikan semua LED
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // Matikan merah
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // Matikan hijau
      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); // Matikan biru
    }

    HAL_Delay(50); // Delay 50 ms untuk stabilisasi pembacaan
  }
}

// Fungsi konfigurasi clock sistem
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0}; // Struktur konfigurasi oscillator
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; // Struktur konfigurasi clock

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; // Gunakan HSI (internal clock)
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;                   // Aktifkan HSI
  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; // Kalibrasi default

  // Jika konfigurasi oscillator gagal → masuk error handler
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  // Konfigurasi jenis clock
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK |
                               RCC_CLOCKTYPE_SYSCLK |
                               RCC_CLOCKTYPE_PCLK1;

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; // Sumber clock dari HSI
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;     // Tidak dibagi
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;      // Tidak dibagi

  // Jika konfigurasi clock gagal
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}

// Fungsi inisialisasi GPIO
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0}; // Struktur konfigurasi GPIO

  __HAL_RCC_GPIOA_CLK_ENABLE(); // Aktifkan clock GPIOA
  __HAL_RCC_GPIOB_CLK_ENABLE(); // Aktifkan clock GPIOB

  // Konfigurasi PA0 & PA1 sebagai input
  GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;     // Mode input
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;       // Pull-down (default = 0)
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);     // Terapkan ke GPIOA

  // Konfigurasi PB0, PB1, PB2 sebagai output
  GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // Output push-pull
  GPIO_InitStruct.Pull = GPIO_NOPULL;         // Tanpa resistor internal
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;// Kecepatan rendah
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);     // Terapkan ke GPIOB
}

// Fungsi penanganan error
void Error_Handler(void)
{
  __disable_irq(); // Nonaktifkan interrupt

  while (1)
  {
    // Loop tak hingga jika terjadi error
  }
}


5. Video Demo[Kembali]



6. Kondisi[Kembali]

    Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika Infrared sensor tidak mendeteksi benda dan switch on, maka LED menyala orange


8. Download File[Kembali]

    Rangkaian dan Program Wokwi [tekan disini]

    Video Rangkaian [tekan disini]

    HTML [tekan disini]

Komentar

Postingan populer dari blog ini

Modul 1

Tugas Besar : Garasi Otomatis

Modul 2