Laporan Akhir 2 M1

Laporan Akhir 1


Percobaan 6
Led & Switch

1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di website wokwi
  • Jalankan program dan cobakan sesuai kondisi

Hardware :

  • STM32F103C8 




  • Push button






  • Resistor

  • LED RGB 





  • Sensor Infrared 




  • Buzzer 





Diagram Blok


  • Rangkaian


  • Prinsip Kerja

Rangkaian ini menggunakan mikrokontroler STM32 sebagai pengendali utama, dengan sensor inframerah (IR), tombol, LED RGB, dan buzzer sebagai komponen pendukung. Saat sistem dinyalakan, STM32 melakukan inisialisasi perangkat keras, termasuk pengaturan GPIO untuk input (sensor IR dan tombol) serta output (LED dan buzzer). Mikrokontroler kemudian membaca status tombol dan sensor IR melalui GPIOB. Jika tombol ditekan, STM32 akan mengaktifkan LED merah dan buzzer, menandakan bahwa tombol telah ditekan. Jika sensor IR mendeteksi keberadaan objek di depannya, STM32 akan menyalakan LED hijau dan buzzer, menunjukkan bahwa ada benda yang terdeteksi. Sebaliknya, jika tidak ada input dari tombol maupun sensor, LED dan buzzer akan tetap dalam keadaan mati. Program ini berjalan dalam loop tak terbatas (while(1)), dengan jeda waktu 100 ms untuk memastikan stabilitas pembacaan sensor dan tombol. Rangkaian ini dapat digunakan untuk berbagai aplikasi, seperti sistem keamanan atau penghitung objek otomatis berbasis sensor IR.

  • 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]


6. Kondisi [Kembali]

Percobaan 6 dengan dimana jika IR Sensor mendeteksi RGB Berwarna Hijau hidup, Push Button ditekan RGB Berwarna Merah hidup dan jika salah satu input aktif atau keduanya aktif maka buzzer aktif.
HTML [Download]
Rangkaian [Download
Video Simulasi [Download 
Listring Program [Download 

Tidak ada komentar:

Posting Komentar