LA MIKRO PER.4



Percobaan 4
 Led RGB, PIR, & Touch Sensor 


1. Prosedur[Kembali]

    1. Rangkai rangkaian sesuai dengan rangkaian percobaan 4.
    2. Setelah semua komponen (LED RGB,PIR, dan Touch Sensor  dihubungkan ke STM32F013C8 dihubungkan,  hubungkan Flashing STM32F013C8 ke laptop.
    3. Inisaialisasi program menggunakan STM32cubeIDE.
    4. Setelah program selesai, simulasikan rangkaian.
    5. Selesai.


2. Hardware dan Diagram Blok[Kembali]

Hardware :

  • STM32F013C8




  • TOUCH SENSOR


  • LED RGB



  • Resistor
  • Jumper Cable Wire


  • PIR


  • Beard board



Diagram Blok



3. Rangkaian Simulasi[Kembali]

Rangkailah seperti rangkaian percobaan 4 pada modul 1





  • Prinsip Kerja 
       Program ini berfungsi untuk mengendalikan LED berdasarkan input dari sensor PIR dan sensor sentuh menggunakan mikrokontroler STM32 dengan library HAL. Sistem diawali dengan inisialisasi melalui fungsi HAL_Init(), kemudian konfigurasi clock dilakukan oleh SystemClock_Config(), dan pengaturan GPIO ditangani oleh MX_GPIO_Init(), di mana pin untuk sensor PIR dan sensor sentuh dikonfigurasi sebagai input, sedangkan pin untuk LED merah, hijau, dan biru dikonfigurasi sebagai output.

Dalam loop utama, program membaca status sensor PIR dan sensor sentuh. Jika sensor PIR mendeteksi gerakan, LED biru akan menyala. Jika sensor sentuh ditekan, LED merah akan mati dan LED hijau menyala selama tiga detik, kemudian mati kembali selama tiga detik. Jika sensor sentuh tidak ditekan dan tidak ada gerakan yang terdeteksi oleh sensor PIR, maka LED merah akan menyala sebagai indikator tidak adanya aktivitas. Namun, jika sensor PIR atau sensor sentuh aktif, LED merah akan mati.

Selain itu, program juga memiliki mekanisme penanganan kesalahan melalui fungsi Error_Handler(), yang akan menghentikan sistem jika terjadi kesalahan dalam konfigurasi clock. Dengan prinsip kerja ini, program dapat digunakan untuk berbagai aplikasi seperti sistem alarm berbasis gerakan atau kontrol akses yang memanfaatkan sensor sentuh.


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 pir_status = HAL_GPIO_ReadPin(GPIOB, PIR_Pin); uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin); HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, pir_status); if (touch_status == GPIO_PIN_SET) { HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET); HAL_Delay(3000); HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_RESET); HAL_Delay(3000); } else { if (pir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_RESET) { HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); } else { HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); } } } } 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, GPIO_PIN_RESET); HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET); GPIO_InitStruct.Pin = RED_Pin|GREEN_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 = PIR_Pin|TOUCH_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) { } }


5. Video Demo[Kembali]






6. Analisa[Kembali]

     






7. Download File[Kembali]

HTML [Download]
Listing Program [Download]
Video Simulasi [Download]  



















Tidak ada komentar:

Posting Komentar

M4 Praktikum SISDIG

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan Percobaan       --->  ...