PERCOBAAN 2 KONDISI 4


1. Prosedur [kembali]
  1. Siapkan Komponen komponen yang diperlukan
  2. Rangkai sesuai gambar dan kondisi
  3. Siapkan listing program dan konfigurasi pin sesuai proteus pada software STM32CubeIDE
  4. Import listing program ke proteus
  5. Running proteus untuk melihat Hasil
2. Hardware dan Diagram Blok [kembali]
  • STM32F103C8

  • TOUCH SENSOR

Mendeteksi Sentuhan

  • INFRARED SENSOR

Mendeteksi panas dan juga pergerakan

  • RGB LED

 

3. Rangkaian Simulasi dan Prinsip Kerja [kembali]

Prinsip Kerja:

Sensor IR untuk deteksi objek:
Ketika sensor IR mendeteksi adanya objek di depannya, sensor akan mengirimkan sinyal HIGH ke mikrokontroler. Mikrokontroler kemudian menyalakan LED sebagai tanda bahwa ada objek yang terdeteksi.

Sensor Sentuh untuk mendeteksi interaksi:
Saat sensor sentuh diaktifkan, sinyal HIGH dikirim ke mikrokontroler. Mikrokontroler dapat menyalakan LED atau menjalankan fungsi tertentu sesuai dengan program yang telah ditentukan.

Push Button sebagai kendali manual:
Ketika tombol ditekan, sinyal HIGH dikirim ke mikrokontroler. Mikrokontroler dapat menyalakan atau mematikan LED berdasarkan logika pemrograman yang diterapkan.

4. Flowchart dan Listing Program [kembali]


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)


// Matikan LED Biru karena tidak digunakan

HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);


if (ir_status == GPIO_PIN_SET && touch_status == GPIO_PIN_RESET) {

// **Jika IR aktif dan Touch mati, LED Merah menyala**

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_RESET);

}

else if (touch_status == GPIO_PIN_SET) {

// **Jika Touch aktif, LED Kuning (Merah + Hijau) menyala**

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET);

}

else {

// **Jika tidak ada sensor aktif, semua LED mati**

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_RESET);

}


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 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);


/* Konfigurasi GPIO pin untuk LED Merah dan Hijau */

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 GPIO pin untuk LED Biru */

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 GPIO pin untuk IR Sensor dan Touch Sensor */

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 /* USE_FULL_ASSERT */


5. Video Demo [kembali]


6. Kondisi [kembali]
P2 K4
: Buatlah Rangkaian seperti gambar percobaan 2 dengan kondisi ketika sensor Infrared mendeteksi gerakan dan sensor touch mendeteksi sentuhan maka LED RGB akan menampilkan warna Putih


7. Video Simulasi [kembali]


8. Download file [kembali]
Rangkaian 

Komentar

Postingan populer dari blog ini