Modul 1 Percobaan 4
Led RGB, PIR, & Touch Sensor
- Siapkan komponen dan alat yang diperlukan seperti LED RGB, pir sensor, touch sensor, resistor, dan STM32F103C8.
- Rangkailah komponen seperti gambar percobaan di modul.
- Jika komponen sudah selesai dirangkai, buatlah program dengan konfigurasi pin input dan output berdasarkan pada pin GP STM32 yang telah dirangkai sebelumnya. Kemudian buatlah program untuk menghasilkan output LED RGB sesuai kondisi yang telah ditentukan
- Inputkan listring program ke dalam STM32.
- Simulasikan rangkaian.
2. Hardware dan Diagram Blok[Kembali]
- Hardware :
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
- Rangkaian Simulasi
- Prinsip Kerja :
Ketika sesnor PIR mendeteksi gerakan dan senspr touch medeteksi sentuhan maka LED RGB berwarna biru dan syan aktif 3 detik dan mati 3 detik berulang. Ketika swnsor touch mendeteksi sentuhan makan LED RGB bewarna hijau aktif 3 detik dan mati 3 detik berulang. Ketika sensor touch mendeteksi sentuhan maka LED RGB bewarna biru aktif. Dan ketika sesnor pir mendeteksi gerakan dan sensor touch tidak medeteksi sentuhan maka LED RGB bewarna merah aktif.
- 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)
{
}
}
Percobaan 4
Kondisi ketika PIR dan Touch sensor mendeteksi LED RGB akan menampilkan warna biru serta cyan selama 3 detik lalu mati selama 3 detik secara berulang, ketika Touch mendeteksi sentuhan maka LED RGB akan menampilkan warna hijau selama 3 detik lalu mati selama 3 detik secara berulang dan PIR mendeteksi gerakan maka LED RGB akan menampilkan warna biru selama 3 detik lalu mati selama 3 detik secara berulang
- HTML [klik disini]
- Rangkaian simulasi [klik disini]
- Video demo [klik disini]
- Datasheet Rasberry Pi Pico [klik disini]
- Datasheet PIR sensor [klik disini]
- Library PIR sensor [klik disini]
- Datasheet LED [klik disini]
- Datasheet Resistor [klik disini]
- Datasheet Touch Sensor [klik disini]
- Library Touch Sensor [klik disini]
- Datasheet SMT32 [klik disini]
Tidak ada komentar:
Posting Komentar