Percobaan 2 Kondisi 2

 



1. Prosedur [kembali]

  1. Buka Wokwi.com
  2. Menyiapkan alat dan bahan
  3. Merangkai komponen sesuai dengan gambar rangkaian percobaan.
  4. Menghubungkan masing masing pin input output.
  5. Mengunggah program ke main c main h.
  6. Jalankan Rangkaian

2. Hardware dan Diagram Blok [kembali]

  • STM32 NUCLEO-G474RE
  •  Infrared Sensor 
  •  Buzzer
  •  LED RGB
  •  Resistor 1k ohm
  •  Switch
  •  Adaptor
  •  Breadboard


Diagram Blok

3. Rangkaian Simulasi dan Prinsip Kerja [kembali]


Percobaan 2 kondisi 2

Prinsip Kerja:

Rangkaian berbasis mikrokontroler STM32 Nucleo-C031C6 ini bergantung pada pemrosesan logika input yang diterima dari sakelar (switch) dan sensor inframerah (IR). Saat sakelar berada dalam posisi ON dan sensor inframerah tidak mendeteksi adanya benda, mikrokontroler akan mendeteksi perubahan status logika pada pin-pin inputnya yang kemudian diproses oleh program di dalamnya. Dalam kondisi tersebut, mikrokontroler akan memberikan output tegangan tinggi (logika 1) pada pin keluaran yang terhubung dengan LED, sehingga arus listrik dapat mengalir melalui resistor pembatas arus menuju LED, yang mengakibatkan LED tersebut menyala berwarna kuning sebagai penanda visual bahwa sistem dalam kondisi aktif namun sedang tidak mendeteksi objek. Sebaliknya, karena sensor tidak mendeteksi benda, mikrokontroler tidak akan mengirimkan sinyal pemicu ke buzzer, sehingga buzzer akan tetap dalam kondisi diam atau tidak berbunyi. Proses pemantauan ini dilakukan secara terus-menerus dalam perulangan program (looping), sehingga apabila nantinya sensor inframerah mendeteksi benda, sistem akan langsung merespons dengan mematikan LED atau mengaktifkan alarm tergantung pada logika yang telah diprogram oleh pengguna.

4. Flowchart dan Listing Program [kembali]

 


Flowchart

Listing Program:
#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)
  {
  }
}


5. Video Demo [kembali]


6. Kondisi [kembali]

    Percobaan 2 Kondisi 2

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

7. Video Simulasi [kembali]




Percobaan 2 Kondisi 2

8. Download File [kembali]







Komentar

Postingan populer dari blog ini