Tugas Pendahuluan 2

 




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]

  • STM32 NUCLEO-G474RE

  • Float Switch

  • Infrared Sensor
  • LED


  • Buzzer
  • Resistor 

  • Push button

Diagram blog


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]



Prinsip Kerja :

  • Ketika Switch ON dan push button ditekan, maka RGB ON berwarna hijau dan Buzzer off

Listing Program
#include "main.h"

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

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

  while (1)
  {
    // Baca input
    uint8_t ir_detected = (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET);
    uint8_t switch_on   = (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_SET);

    // Variabel kontrol LED
    uint8_t led_merah = 0;
    uint8_t led_hijau = 0;
    uint8_t led_biru  = 0;

    // Logika kondisi
    if (ir_detected && switch_on)
    {
      led_hijau = 1; // hanya hijau yang ON
    }

    // Eksekusi ke output (LED)
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, led_merah ? GPIO_PIN_SET : GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, led_hijau ? GPIO_PIN_SET : GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, led_biru  ? GPIO_PIN_SET : GPIO_PIN_RESET);

    HAL_Delay(50);
  }
}

// ================= CLOCK =================
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();
  }
}

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

  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  // Input
  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);

  // Output LED
  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);
}

// ================= ERROR =================
void Error_Handler(void)
{
  __disable_irq();
  while (1)
  {
  }
}
#ifndef __MAIN_H
#define __MAIN_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stm32c0xx_hal.h"

// ================= FUNCTION =================
void Error_Handler(void);

// ================= INPUT =================
// Switch (PA0)
#define SWITCH_Pin              GPIO_PIN_0
#define SWITCH_GPIO_Port        GPIOA

// Infrared Sensor (PA1)
#define IR_SENSOR_Pin           GPIO_PIN_1
#define IR_SENSOR_GPIO_Port     GPIOA

// ================= OUTPUT =================
// LED RGB (GPIOB)
#define LED_RED_Pin             GPIO_PIN_0
#define LED_RED_GPIO_Port       GPIOB

#define LED_GREEN_Pin           GPIO_PIN_1
#define LED_GREEN_GPIO_Port     GPIOB

#define LED_BLUE_Pin            GPIO_PIN_2
#define LED_BLUE_GPIO_Port      GPIOB

#ifdef __cplusplus
}
#endif

#endif /* __MAIN_H */

5. Video Demo [Kembali]





6. Kondisi [Kembali]

M1 P2 K1: Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika Infrared sensor mendeteksi benda dan switch on, maka LED menyala hijau

7. Video Simulasi [Kembali]




8. Download File [Kembali]

  • Rangkaian Simulasi [Klik]
  • Video Simulasi [Klik]






 

Komentar

Postingan populer dari blog ini