Mikro1_LA2



Laporan Akhir

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


1. Prosedur[Kembali]

    1. Buat rangkaian dipapan rangkaian sesuai dengan percobaan yang dilakukan pada modul.
    2. Konfigurasi Pin pada stm32 cube ide dan lakukan programming.
    3. Connect STM 32 dengan laptop
    4. Jalankan program
    5. Selesai.

2. Hardware dan Diagram Blok[Kembali]

Hardware :

  • STM32
  • Push button


  • LED RGB


  • Resistor

  • Buzzer


  • IR Sensor


Diagram Blok


3. Rangkaian Simulasi[Kembali]

  • Rangkaian 




  • Prinsip Kerja 

Rangkaian ini terdiri dari satu push button dan satu sensor IR sebagai input serta satu LED RGB dan satu buzzer sebagai output. Setiap input berfungsi untuk mengontrol LED RGB dan buzzer sesuai dengan logika yang telah diprogram. Kontrol sistem ini dilakukan menggunakan dev board STM32, yang bertugas membaca input dan mengaktifkan output berdasarkan kondisi yang diterima.

Setiap input dan output terhubung ke GPIO pada STM32. Untuk input, digunakan mode pull-down resistor, sehingga ketika push button atau sensor IR dalam kondisi tidak aktif, nilai yang terbaca oleh GPIO adalah 0 (low). Sebaliknya, ketika push button ditekan atau sensor IR mendeteksi objek, sinyal akan berubah menjadi 1 (high), yang kemudian diproses oleh STM32 untuk mengaktifkan output.

Saat push button tidak ditekan dan sensor IR tidak mendeteksi objek, sinyal input tetap low, sehingga STM32 tidak mengaktifkan output dan LED RGB serta buzzer tetap mati. Namun, jika push button ditekan, STM32 akan menyalakan LED RGB dengan warna merah dan mengaktifkan buzzer. Jika sensor IR mendeteksi objek, STM32 akan menyalakan LED RGB dengan warna hijau serta mengaktifkan buzzer.


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) {
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



6. Analisa[Kembali]


7. Download File[Kembali]

Listing Program [Download]
Video Simulasi [Download]  
  









 

Komentar

Postingan populer dari blog ini

Modul 1 Input Output

Modul 3

Sub Chapter 2.2