LA percobaan 6
- Siapkan alat-alat yang diperlukan
- Hubungkan Sensor IR.
- Hubungkan push Button
- Hubungkan LED RGB:
- Anoda LED Merah ke GPIO PA6 melalui resistor 110Ω
- Anoda LED Hijau ke GPIO PA7 melalui resistor 110Ω
- Anoda LED Biru ke GPIO PB0 melalui resistor 110Ω
- Katoda ke GND
- Hubungkan Buzzer:
- Salah satu kaki buzzer ke GND STM32
- Kaki lainnya ke GPIO PA8
- Inputkan Listing Program ke STM32CubeIDE
- Jalankan program dan amati respon sensor serta keluaran LED dan Buzzer
- STM32
- LED RGB
- Buzzer
Buzzer adalah komponen elektronik yang digunakan untuk menghasilkan suara dalam berbagai frekuensi. Buzzer dapat bekerja berdasarkan prinsip piezoelektrik atau elektromagnetik untuk mengubah sinyal listrik menjadi getaran suara. Dalam sistem tertanam, buzzer sering digunakan sebagai alarm, notifikasi audio, atau indikator peringatan dalam perangkat elektronik seperti jam tangan, sistem keamanan, dan mesin industri.
- Infrared Sensor
- Push Button
- Rangkaian Simulasi
- Prinsip Kerja
Sensor IR mendeteksi keberadaan objek di depannya.
Jika ada objek, sensor akan mengeluarkan sinyal HIGH (GPIO_PIN_SET) ke pin yang telah dikonfigurasi pada STM32.
Push Button
- Push button digunakan untuk mengaktifkan indikator tertentu ketika ditekan.
- Jika tombol ditekan, sistem akan mengaktifkan LED merah dan buzzer.
- LED merah menyala dan buzzer berbunyi jika tombol ditekan.
- LED hijau menyala dan buzzer berbunyi jika sensor IR mendeteksi objek.
- Program membaca status tombol dan sensor IR menggunakan
HAL_GPIO_ReadPin(GPIOB, BUTTON_Pin)danHAL_GPIO_ReadPin(GPIOB, IR_Pin). - Jika tombol ditekan, LED merah dan buzzer diaktifkan.
- Jika objek terdeteksi oleh sensor IR, LED hijau dan buzzer diaktifkan.
- Program berjalan dalam loop dengan delay 100 ms (
HAL_Delay(100)) agar tidak terlalu cepat merespons perubahan status input.
- 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
- HTML klik disini
- Download Video Demo klik disini
- DataSheet STM32 Klik Disini
- DataSheet Sensor PIR Klik Disini
- DataSheet LED RGB Klik disini
- DataSheet Resistor Klik disini
- Library Sensor PIR Klik Disini
- Datasheet push button klik disini









Komentar
Posting Komentar