LA 2 MODUL 1 PRAKTIKUM UP & UC new




Percobaan 2
LED RGB, Touch Sensor & Sensor Infrared

1. Prosedur
[Kembali]
  1. Membuat rangkaian sesuai dengan percobaan 2
  2. Rangkai komponen sesuai dengan gambar pada modul, yang bertindak sebagai input adalah touch sensor dan infrared sensor, sedangkan output adalah LED RGB
  3. Hubungkan rangkaian tersebut dengan software STM32CubeID dengan menggunakan kabel USB
  4. Cek kondisi dari STM32 apakah sudah terbaca pada aplikasi atau belum
  5. Membuat program sesuai dengan kondisi pada modul didalam software STM32CubeID
  6. Code yang diperoleh dari software STM32CubeID dapat diupload kedalam STM32 untuk diterapkan pada percobaan
  7. Lakukan uji coba terhadap kedua sensor untuk mengetahui apakah kode berjalan dengan baik atau tidak
  8. Selesai.

2. Hardware dan Diagram Blok [Kembali]

A. Hardware 

1. STM32f103C8

2. Sensor infrared 


3. Touch Sensor




4. LED RGB


5. Resistor 



Diagram Blok  :








3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Sebelum dirunning:




Rangkaian Simulasi Setelah dirunning:
 



Prinsip Kerja : 
Rangkaian ini merupakan sistem berbasis STM32 yang memanfaatkan LED RGB, sensor sentuh (Touch Sensor), sensor inframerah (IR Sensor), dan resistor untuk mendeteksi perubahan kondisi lingkungan serta memberikan respons visual melalui LED. Sensor inframerah dipasang pada GPIOB (PB10) dan berfungsi mendeteksi keberadaan objek di depannya, sementara sensor sentuh yang dihubungkan ke GPIOB (PB6) akan merespons saat disentuh oleh pengguna. LED RGB yang terdiri dari tiga warna utama—merah, hijau, dan biru—akan menyala sesuai dengan status sensor yang aktif. Jika sensor IR mendeteksi objek, LED Biru akan menyala, sedangkan jika sensor sentuh diaktifkan, LED Hijau akan menyala. Jika tidak ada sensor yang aktif, maka LED Merah akan menyala, menandakan bahwa tidak ada interaksi atau deteksi yang terjadi.

Sistem ini dikendalikan melalui loop utama yang terus-menerus membaca nilai sensor dan mengubah status LED sesuai dengan kondisi yang terdeteksi. Delay 10ms diterapkan untuk memastikan stabilitas pembacaan sensor. Dengan pendekatan ini, rangkaian dapat digunakan untuk berbagai aplikasi seperti sistem deteksi objek, interaksi berbasis sentuhan, dan indikator visual berbasis sensor. Namun, sistem ini masih bisa ditingkatkan dengan menggunakan interrupt untuk pembacaan sensor, serta menambahkan debounce untuk sensor sentuh agar lebih stabil.


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 ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin); // Membaca IR sensor (PB10) uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin); // Membaca Touch Sensor (PB6) // LED Biru menyala jika IR aktif HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, ir_status); // LED Hijau menyala jika Touch aktif HAL_GPIO_WritePin(GPIOA, GREEN_Pin, touch_status); // LED Merah menyala jika tidak ada sensor yang aktif if (ir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_RESET) { HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); // Nyalakan LED RED } else { HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); // Matikan LED RED } HAL_Delay(10); // Delay kecil untuk stabilisasi pembacaan sensor } } 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(); // Konfigurasi output LED merah dan hijau HAL_GPIO_WritePin(GPIOA, RED_Pin | GREEN_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); // Konfigurasi output LED biru HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET); 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); // Konfigurasi input untuk sensor IR dan sensor sentuh GPIO_InitStruct.Pin = IR_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) { // Looping error handler } } #ifdef USE_FULL_ASSERT void assert_failed(uint8_t *file, uint32_t line) { // Laporan kesalahan jika diperlukan } #endif /* USE_FULL_ASSERT */


 


5. Video Demo [Kembali]




6. Analisa [Kembali]


7. Download File [Kembali]

Download HTML [Download]
Download Video Demo [Download]
Download Listing Program [Download
Download Datasheet Mikrokontroler STM32F103C8 [Download
Download Datasheet Touch Sensor [Download]
Download Datasheet Infrared Sensor [Download]
Download Datasheet Resistor [Download]

Komentar

Postingan populer dari blog ini

MODUL 1 PRAKTIKUM UP & UC

Modul 1 Praktikum Sistem Digital

Modul 3 Praktikum Sistem Digital