Tugas Pendahuluan 2



Percobaan 2 kondisi 7

1. Prosedur[Kembali]

  1. Persiapan Program (Editor Sebelah Kiri)
    Pastikan seluruh kode telah ditulis dengan lengkap dan tidak terdapat kesalahan sintaks. Pada kondisi ini, pin sudah dikonfigurasi sebagai berikut: PA0 untuk push button (simulasi gigi mundur), PA1 untuk sensor IR (deteksi objek), PB0 untuk LED hijau, PB1 untuk LED merah, dan PB2 untuk buzzer.
  2. Menjalankan Simulasi
    Tekan tombol Play (ikon segitiga hijau) yang berada di bagian atas area simulasi. Sistem Wokwi akan melakukan proses kompilasi, dan jika berhasil, status akan berubah menjadi Running yang menandakan simulasi telah berjalan.
  3. Pengujian Logika Rangkaian
    Setelah simulasi aktif, lakukan beberapa interaksi untuk memastikan sistem bekerja sesuai logika program:
  • Langkah A: Mengaktifkan Sistem (Gigi Mundur)
    Tekan push button (tombol hijau di kiri atas) untuk mengaktifkan sistem.
  • Langkah B: Mensimulasikan Deteksi Objek
    Gunakan slide switch yang berfungsi sebagai sensor IR dengan cara menggeser atau mengkliknya untuk mengubah kondisi input.
  • Langkah C: Mengamati Output
    Perhatikan perubahan pada LED RGB, apakah berubah dari hijau ke merah saat objek terdeteksi. Selain itu, cek buzzer apakah mengeluarkan indikasi suara (animasi gelombang) ketika kondisi bahaya terpenuhi.

2. Hardware dan Diagram Blok[Kembali]

Identifikasi perangkat keras pada sistem ini meliputi mikrokontroler STM32 Nucleo-C031C6 sebagai pusat pemrosesan, dengan input berupa push button yang berfungsi sebagai simulasi sakelar gigi mundur dan slide switch atau sensor IR sebagai pendeteksi halangan. Output yang digunakan adalah LED RGB sebagai indikator visual (hijau menandakan aman dan merah menandakan bahaya) serta buzzer sebagai peringatan suara. Selain itu, digunakan resistor sebagai komponen pasif untuk menjaga kestabilan sinyal input melalui konfigurasi pull-down. Sistem ini bekerja dalam konsep loop tertutup, di mana kondisi output terus diperbarui berdasarkan umpan balik dari sensor secara berkelanjutan.

3. Rangkaian Simulasi[Kembali]

                     

  • Prinsip Kerja 
Prinsip kerja sistem ini adalah mikrokontroler STM32 menjalankan program secara terus-menerus dengan terlebih dahulu mengecek status tombol sebagai saklar utama. Jika tombol tidak ditekan, sistem berada dalam kondisi standby dengan semua output (LED dan buzzer) dimatikan. Jika tombol ditekan, sistem menjadi aktif dan mulai memantau sensor IR. Saat sensor mendeteksi adanya objek (logika LOW), mikrokontroler mengaktifkan LED merah dan buzzer sebagai tanda peringatan serta mematikan LED hijau. Sebaliknya, ketika objek tidak terdeteksi lagi (logika HIGH), mikrokontroler mematikan LED merah dan buzzer, lalu menyalakan LED hijau sebagai indikator kondisi aman.

4. Flowchart dan Listing Program[Kembali]

  • Flowchart


  • Listing Program

#include "stm32c0xx_hal.h"

// =====================
// DEFINISI PIN
// =====================
#define SW_MAIN_Pin        GPIO_PIN_0  // Terhubung ke PA0
#define SW_MAIN_Port       GPIOA

#define SENSOR_IR_Pin      GPIO_PIN_1  // Terhubung ke PA1
#define SENSOR_IR_Port     GPIOA

#define LED_HIJAU_Pin      GPIO_PIN_0  // Terhubung ke PB0
#define LED_HIJAU_Port     GPIOB

#define LED_MERAH_Pin      GPIO_PIN_1  // Terhubung ke PB1
#define LED_MERAH_Port     GPIOB

#define BUZZ_Pin           GPIO_PIN_2  // Terhubung ke PB2
#define BUZZ_Port          GPIOB

// =====================
// PROTOTIPE FUNGSI
// =====================
void SystemClock_Config(void);
static void MX_GPIO_Init(void);

// =====================
// PROGRAM UTAMA
// =====================
int main(void)
{
  // Inisialisasi awal sistem
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();

  while (1)
  {
    // Membaca status switch utama
    if (HAL_GPIO_ReadPin(GPIOA, SW_MAIN_Pin) == GPIO_PIN_SET)
    {
      // Membaca kondisi sensor IR
      if (HAL_GPIO_ReadPin(GPIOA, SENSOR_IR_Pin) == GPIO_PIN_SET)
      {
        // Tidak ada objek terdeteksi
        HAL_GPIO_WritePin(GPIOB, LED_MERAH_Pin, GPIO_PIN_RESET);  // LED merah OFF
        HAL_GPIO_WritePin(GPIOB, LED_HIJAU_Pin, GPIO_PIN_SET);    // LED hijau ON
        HAL_GPIO_WritePin(GPIOB, BUZZ_Pin, GPIO_PIN_RESET);       // Buzzer OFF
      }
      else
      {
        // Objek terdeteksi
        HAL_GPIO_WritePin(GPIOB, LED_MERAH_Pin, GPIO_PIN_SET);    // LED merah ON
        HAL_GPIO_WritePin(GPIOB, LED_HIJAU_Pin, GPIO_PIN_RESET);  // LED hijau OFF
        HAL_GPIO_WritePin(GPIOB, BUZZ_Pin, GPIO_PIN_SET);         // Buzzer ON
      }
    }
    else
    {
      // Jika switch tidak aktif, semua output dimatikan
      HAL_GPIO_WritePin(GPIOB, LED_HIJAU_Pin | LED_MERAH_Pin | BUZZ_Pin, GPIO_PIN_RESET);
    }

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

// =====================
// KONFIGURASI CLOCK
// =====================
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef osc = {0};
  RCC_ClkInitTypeDef clk = {0};

  // Mengaktifkan HSI sebagai sumber clock
  osc.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  osc.HSIState = RCC_HSI_ON;
  osc.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;

  if (HAL_RCC_OscConfig(&osc) != HAL_OK)
  {
    Error_Handler();
  }

  // Pengaturan clock sistem dan bus
  clk.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1;
  clk.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  clk.AHBCLKDivider = RCC_SYSCLK_DIV1;
  clk.APB1CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&clk, FLASH_LATENCY_0) != HAL_OK)
  {
    Error_Handler();
  }
}

// =====================
// INISIALISASI GPIO
// =====================
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef gpio = {0};

  // Aktifkan clock untuk port A dan B
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  // Setup pin input (switch & sensor IR)
  gpio.Pin  = SW_MAIN_Pin | SENSOR_IR_Pin;
  gpio.Mode = GPIO_MODE_INPUT;
  gpio.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(GPIOA, &gpio);

  // Setup pin output (LED dan buzzer)
  gpio.Pin   = LED_HIJAU_Pin | LED_MERAH_Pin | BUZZ_Pin;
  gpio.Mode  = GPIO_MODE_OUTPUT_PP;
  gpio.Pull  = GPIO_NOPULL;
  gpio.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &gpio);

  // Kondisi awal: semua output dimatikan
  HAL_GPIO_WritePin(GPIOB, LED_HIJAU_Pin | LED_MERAH_Pin | BUZZ_Pin, GPIO_PIN_RESET);
}



5. Kondisi[Kembali]

Percobaan 2 kondisi 7 :
    Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika infrared sensor berubah dari mendeteksi benda ke tidak mendeteksi benda, maka LED merah mati, LED hijau menyala, dan buzzer berhenti berbunyi.

6. Video Simulasi[Kembali]


7. Download File[Kembali]

Download File Simulasi [Download]  
Video Simulasi [Download]  








Komentar

Postingan populer dari blog ini

MODUL 2

Laporan akhir Adder inverting amplifier

MODUL 3 OP-AMP