Percobaan 2. Led RGB, Touch Sensor, & Sensor Infrared
1. Prosedur [Kembali]
- Rangkai semua komponen sesuai modul
- masukkan program dari modul program di modul
- Jalankan program dan cobakan sesuai kondisi
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Rangkaian Simulasi :
Prinsip Kerja :
Input:
-
Sensor IR (Infrared) → Mendeteksi keberadaan objek di depannya.
-
Sensor Touch (Sentuh) → Mendeteksi apakah sensor disentuh atau tidak.
Output:
-
LED Biru → Menyala jika sensor IR mendeteksi objek.
-
LED Hijau → Menyala jika sensor Touch disentuh.
-
LED Merah → Menyala jika tidak ada sensor yang aktif (tidak ada objek dan tidak disentuh).
Jika sensor IR aktif, LED biru menyala; jika sensor Touch aktif, LED hijau menyala; dan jika tidak ada sensor yang aktif, LED merah menyala. Jika kedua sensor aktif bersamaan, LED biru dan hijau menyala, yang dapat menghasilkan warna cyan pada LED RGB. Dengan demikian, LED RGB akan menampilkan warna yang berbeda sesuai dengan kondisi sensor yang terdeteksi.
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); // Read IR sensor (PB10)
uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin); // Read Touch Sensor (PB6)
// Blue LED turns on if IR is active
HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, ir_status);
// Green LED turns on if Touch is active
HAL_GPIO_WritePin(GPIOA, GREEN_Pin, touch_status);
// Red LED turns on if no sensors are active
if (ir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_RESET)
{
HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); // Turn on RED LED
}
else
{
HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); // Turn off RED LED
}
HAL_Delay(10); // Small delay for sensor stability
}
}
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();
/* Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, RED_Pin | GREEN_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);
/* Configure GPIO pins : RED_Pin GREEN_Pin */
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);
/* Configure GPIO pin : BLUE_Pin */
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);
/* Configure GPIO pins : IR_Pin TOUCH_Pin */
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)
{
}
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line)
{
}
#endif
5. Video Demo [Kembali]
6. Analisa [Kembali]
Analisa apa saja faktor eksternal yang dapat mengganggu kinerja sensor PIR :
Jawab :
Sumber Panas di Sekitar → Objek panas seperti lampu atau sinar matahari langsung dapat menyebabkan deteksi palsu.
Gerakan Udara → AC, kipas angin, atau perubahan suhu mendadak bisa mengganggu sensor karena PIR mendeteksi perubahan panas.
Penghalang Fisik → Dinding, kaca tebal, atau benda lain dapat menghalangi deteksi gerakan oleh sensor PIR.
Sudut dan Jarak Deteksi → Jika objek bergerak di luar jangkauan atau sudut deteksi sensor, kinerjanya bisa terganggu.
Komentar
Posting Komentar