LA Percobaan pertama

 


LA 1 - Percobaan 4
  Led RGB, Touch Sensor, & PIR

1. Prosedur[Kembali]

  1.  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.
  2. 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.
  3. 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 :
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]

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









7. Download File[Kembali]

File Analisa Klik Disini
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
Library Sensor Touch Klik Disini 

Komentar

Postingan populer dari blog ini