LA Percobaan pertama
LA 1 - Percobaan 4
Led RGB, Touch Sensor, & PIR
- Rangkailah sistem percobaan sesuai dengan diagram yang ada, dengan input berupa sensor PIR dan sensor sentuh, serta output berupa LED RGB. Sambungkan LED, sensor sentuh, dan sensor PIR menggunakan kabel jumper ke pin yang sesuai dengan pengaturan program.
- Buatlah program dengan konfigurasi pin input dan output berdasarkan pin GP STM32 yang telah dirangkai. Selanjutnya, buatlah program untuk mengendalikan output LED RGB sesuai dengan kondisi yang telah ditentukan.
- Setelah program selesai, unggah ke STM32 dan amati perubahan yang terjadi ketika sensor PIR mendeteksi gerakan dan ketika sensor sentuh diberikan sentuhan.
Hardware
Blok Diagram
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Rangkaian Simulasi :
Prinsip Kerja :
Rangkaian ini menggunakan sensor PIR dan sensor sentuh sebagai input, serta LED RGB sebagai output. Pertama, saat sensor PIR mendeteksi gerakan dan sensor sentuh mendeteksi sentuhan, LED RGB akan menyala dengan warna biru serta cyan, aktif selama 3 detik, lalu mati selama 3 detik secara berulang. Kedua, ketika sensor sentuh mendeteksi sentuhan, LED RGB akan menyala dengan warna hijau, aktif selama 3 detik, lalu mati selama 3 detik secara berulang.
Ketiga, ketika sensor PIR mendeteksi pergerakan, LED RGB akan menyala dengan warna biru dan saat Touch sensor dan PIR tidak mendeteksi LED RGB akan berwarna merah.
4. Flowchart dan Listing Program[Kembali]
Flowchart :#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)
{
}
}
1. Analisa bagaimana pengaruh penggunaan/pemilihan GPIO pada STM32 dan Raspberry Pi Pico
2. Analisa bagaimana STM32 dan Raspberry Pi Pico menerima inputan dan menghasilkan output
3. Analisa bagaimana program deklarasi pin I/O pada STM32 dan Raspberry Pi Pico
4. Analisa bagaimana program dalam analisa metode pendeteksian input pada STM32 dan Raspberry Pi Pico
5. Analisa Fungsi HAL_Delay(100) pada STM32 dan utime.sleep_ms(1) pada Raspberry Pi Pico
6. Analisa penyebab kesalahan yang menyebabkan percobaan 4 tidak berjalan seperti semestinya
Video Demo Klik Disini
DataSheet STM32 Klik Disini
DataSheet Sensor PIR Klik Disini
DataSheet Sensor Touch Klik Disini
DataSheet LED RGB Klik disini
DataSheet Resistor Klik disini
Library Sensor PIR Klik Disini
Komentar
Posting Komentar