Percobaan 2 Kondisi 9

  

Tugas Pendahuluan 2

 [KEMBALI KE MENU SEBELUMNYA]



PERCOBAAN 2 KONDISI 9

1. Prosedur [Kembali]

  • Buatlah rangkaian seperti pada percobaan pada Wokwi
  • Tambahkan dan buatlah program main.h pada wokwi 
  • Tambahkan dan buatlah program main.c pada wokwi
  • Simulasikan rangkaian

2. Hardware dan Diagram Blok[Kembali]

1. STM32 NUCLEO-G474RE

2. LED RGB


3. Resistor



4. Infrared (IR) Sensor

5. Switch



6. Breadboard

7. Buzzer
 



3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]

Rangkaian Simulasi: 


Prinsip Kerja:

Rangkaian tersebut dikendalikan oleh mikrokontroler STM32 NUCLEO-G474RE dengan indikator visual LED RGB dan peringatan audio buzzer. Sistem ini memiliki prosedur inisialisasi yang dipicu ketika sakelar pengaktif (switch) berubah posisi dari OFF ke ON, ditandai dengan nyala LED RGB secara bergantian (Merah, Hijau, Biru) selama 0,5 detik serta bunyi "Beep-Beep" sebanyak dua kali sebagai tanda sistem siap digunakan. Setelah fase inisialisasi tersebut, sensor inframerah (IR) mengambil alih peran untuk mendeteksi keberadaan objek di belakang kendaraan. Data dari sensor IR kemudian diolah oleh mikrokontroler untuk memberikan peringatan jarak secara real-time.

4. Flowchart dan Listing Program[Kembali] 


Flowchart:




Listing Program:

1. main.c
#include "main.h"

void SystemClock_Config(void);
static void MX_GPIO_Init(void);

int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();

    while (1)
    {
        if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET)
        {
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
        }
        else
        {
            if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET)
            {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
            }
            else
            {
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
                HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
            }
        }
        HAL_Delay(50);
    }
}

void SystemClock_Config(void)
{
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    {
        Error_Handler();
    }

    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
    {
        Error_Handler();
    }
}

static void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();

    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_PULLDOWN;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

void Error_Handler(void)
{
    __disable_irq();
    while (1)
    {
    }
}

2. main.h

#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stm32c0xx_hal.h"

void Error_Handler(void);

#define BUTTON_REVERSE_Pin GPIO_PIN_0
#define BUTTON_REVERSE_GPIO_Port GPIOA
#define IR_SENSOR_Pin GPIO_PIN_1
#define IR_SENSOR_GPIO_Port GPIOA

#define LED_GREEN_Pin GPIO_PIN_0
#define LED_GREEN_GPIO_Port GPIOB
#define LED_RED_Pin GPIO_PIN_1
#define LED_RED_GPIO_Port GPIOB
#define BUZZER_Pin GPIO_PIN_2
#define BUZZER_GPIO_Port GPIOB

#ifdef __cplusplus
}
#endif

#endif

5. Video Demo[Kembali]

6. Kondisi[Kembali]
Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika Switch baru saja berubah dari OFF ke ON, seluruh warna LED RGB (Merah, Hijau, Biru) menyala bergantian selama 0,5 detik dan Buzzer berbunyi pendek 2 kali ("Beep-Beep").

7. Video Simulasi[Kembali]



8. Download File[Kembali]

Rangkaian [download]
Video Demo [download]
Video simulasi [download]
Datasheet STM32 NUCLEO-G474RE [Download]
Datasheet InfraRed sensor [Download]
Datasheet Resistor [Download]











Komentar

Postingan populer dari blog ini

Tugas Besar

12-3

12-4