Laporan Akhir 1

 



1. Prosedur [Kembali]

1. Buka web WOKWI.COM dan cari STM 32 NUCLEO C031C6

2. Rangkai komponen sesuai dengan gambar rangkaian di modul

3. Klik pada Library Manager untuk membuat file baru yang bernama main.h dan main.c

4. Masukan program yang telah di buat sesuai kondisi pada kedua file tersebut

5. Simulasikan


2. Hardware [Kembali]

1. STM32 NUCLEO-G474RE



2. Switch




3. Infrared Sensor


4. Resistor


5. Buzzer



6. LED 

7. Push Button
  • Diagram Blog


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]



  • Ketika Switch ON dan infrared mendeteksi objek, maka RGB hijau dan Buzzer off
  • Ketika Switch ON dan infrared tidak mendeteksi objek, maka RGB merah dan Buzzer on
  • Ketika Switch OFF dan infrared mendeteksi objek atau tidak, maka RGB dan Buzzer off

4. Flowchart [Kembali]

  • Flowchart


  • Listing Program
#ifndef __MAIN_H          // Header guard untuk mencegah file dipanggil berulang
#define __MAIN_H          // Mendefinisikan bahwa MAIN_H sudah aktif

#ifdef __cplusplus
extern "C" {             // Agar kompatibel dengan compiler C++
#endif

#include "stm32c0xx_hal.h"   // Library HAL STM32 untuk akses hardware (GPIO, delay, dll)

void Error_Handler(void);    // Deklarasi fungsi penanganan error

// ================= INPUT =================
#define BUTTON_REVERSE_Pin GPIO_PIN_0        // Tombol terhubung ke pin PA0
#define BUTTON_REVERSE_GPIO_Port GPIOA       // Tombol berada di port A

#define IR_SENSOR_Pin GPIO_PIN_1             // Sensor IR terhubung ke pin PA1
#define IR_SENSOR_GPIO_Port GPIOA            // Sensor berada di port A

// ================= OUTPUT =================
#define LED_GREEN_Pin GPIO_PIN_0             // LED hijau di pin PB0
#define LED_GREEN_GPIO_Port GPIOB            // Port B

#define LED_RED_Pin GPIO_PIN_1               // LED merah di pin PB1
#define LED_RED_GPIO_Port GPIOB              // Port B

#define BUZZER_Pin GPIO_PIN_2                // Buzzer di pin PB2
#define BUZZER_GPIO_Port GPIOB              // Port B

#ifdef __cplusplus
}
#endif

#endif   // Akhir header guard


#include "main.h"        // Menghubungkan file ini dengan definisi di atas

void SystemClock_Config(void);   // Fungsi konfigurasi clock
static void MX_GPIO_Init(void);  // Fungsi inisialisasi GPIO

int main(void)
{
HAL_Init();                     // Inisialisasi HAL (reset sistem, setup dasar)

SystemClock_Config();          // Mengatur clock internal (HSI)

MX_GPIO_Init();                // Mengatur pin input dan output

while (1)                      // Loop utama (program berjalan terus)
{
    // ================= LOGIKA BARU =================
    if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET)   // Switch ON
    {
        if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET)  // Sensor deteksi objek
        {
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);     // LED hijau ON
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);   // LED merah OFF
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);   // Buzzer OFF
        }
        else   // Sensor tidak mendeteksi
        {
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);   // LED hijau OFF
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);     // LED merah ON
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);     // Buzzer ON
        }
    }
    else   // Switch OFF
    {
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);   // LED hijau OFF
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);   // LED merah OFF
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);   // Buzzer OFF
    }

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


// ================= KONFIGURASI CLOCK =================
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;  // Menggunakan HSI (internal)
RCC_OscInitStruct.HSIState = RCC_HSI_ON;                    // Mengaktifkan HSI
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; // Kalibrasi default

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

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1; // Jalur clock
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;     // Sumber clock = HSI
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;         // Tidak dibagi
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;          // Tidak dibagi

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) // Jika gagal
{
Error_Handler();                                           // Masuk error handler
}
}


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

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

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

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


// ================= ERROR HANDLER =================
void Error_Handler(void)
{
__disable_irq();        // Matikan semua interrupt
while (1)               // Loop tak hingga (program berhenti)
{
}
}

5. Video Demo [Kembali]




6. Analisa [Kembali]








7. Download File [Kembali]

Rangkaian Simulasi [Klik]

Video Simulasi [Klik]


Kembali ke Halaman Atas



Komentar

Postingan populer dari blog ini

KONTROL KOLAM IKAN