Laporan Akir 1





Percobaan 6
Buzzer, LED RGB, Push Button, dan Sensor Infrared 


1. Prosedur[Kembali]

  1. Rangkai rangkaian seperti pada rangkaian percobaan 6 pada modul 1.
  2. Setelah semua komponen (Buzzer, LED RGB, Push Button, dan Sensor Infrared ) dihubungkan,             lalu hubungkan USB STM32 ke laptop.
  3. Inisaialisasi program menggunakan STM32CubeIDE
  4. Setelah program selesai, simulasikan rangkaian.
  5. Selesai

2. Hardware dan Diagram Blok[Kembali]

Hardware :

  • STM32

  • Push button



  • LED RGB

  • Resistor

  • Sensor Infrared

  • Buzzer


  • Jumper Cable Wire
  • Beard board



Diagram Blok

3. Rangkaian Simulasi[Kembali] 


 

Prinsip kerja

    Rangkaian ini memanfaatkan mikrokontroler STM32 sebagai pusat kendali utama, didukung oleh sensor inframerah (IR), tombol, LED RGB, dan buzzer sebagai komponen tambahan. Saat sistem mulai beroperasi, STM32 akan melakukan proses inisialisasi dengan mengkonfigurasi GPIO untuk membaca input dari sensor IR dan tombol, serta mengontrol output ke LED dan buzzer. 

    Mikrokontroler memantau kondisi tombol dan sensor IR melalui port GPIOB. Ketika tombol ditekan, STM32 akan menyalakan LED merah dan mengaktifkan buzzer sebagai penanda bahwa tombol telah ditekan. Jika sensor IR mendeteksi adanya objek di depannya, LED hijau dan buzzer akan menyala sebagai indikasi keberadaan objek. Namun, jika tidak ada input dari tombol maupun sensor IR, maka LED dan buzzer akan tetap dalam keadaan mati.

    Seluruh proses berjalan secara terus-menerus di dalam loop tak terbatas (while(1)) dengan penundaan selama 100 ms untuk menjaga kestabilan pembacaan data dari sensor dan tombol. Sistem ini cocok diterapkan dalam berbagai aplikasi, seperti sistem keamanan atau penghitung objek otomatis berbasis sensor IR. 


  

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();
uint8_t button_status = HAL_GPIO_ReadPin(GPIOB, BUTTON_Pin);
uint8_t ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin);
HAL_GPIO_WritePin(GPIOA, GREEN_Pin | RED_Pin | BUZZER_Pin,
GPIO_PIN_RESET);
if (button_status == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);
}
if (ir_status == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);
}
HAL_Delay(100);
}
}
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;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = 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_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
HAL_GPIO_WritePin(GPIOA, RED_Pin|GREEN_Pin|BUZZER_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);
GPIO_InitStruct.Pin = RED_Pin|GREEN_Pin|BUZZER_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = BLUE_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(BLUE_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = BUTTON_Pin|IR_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
void Error_Handler(void)
{
__disable_irq();
while (1)
{
}
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line)
{
}
#endif
SystemClock_Config();
MX_GPIO_Init();
while (1)
{ 

5. Video Demo[Kembali]






7. Download File[Kembali]







Tidak ada komentar:

Posting Komentar

     BAHAN PRESENTASI     MATA KULIAH ELEKTRONIKA 2022 Oleh Mutia Azzahra 2210953018 DOSEN PENGAMPU DR. DARWISON, M.T. Referensi  1. Darwiso...