LA M1 P2




Percobaan 2
1. Prosedur
[Kembali]
  • Siapkan alat dan bahan
  • Rangkai alat dan bahan sesuai dengan gambar pada modul
  • Software yang digunakan yaitu STM32Cube IDE
  • Hubungkan hardware pada software
  • Inputkan listing program sesuai dengan modul
  • Running untuk mendapatkan hasilnya



2. Hardware dan Diagram Blok [Kembali]

    1. Mikrokontroler STM32F103C8





    2. Resistor



    3. Breadboard

BREADBOARD / PROJECTBOARD / PROTOBOARD 400 HOLES di M-kontrol | Tokopedia

    4. Infrared Sensor

Infrared Sensor Module


 
    5. Touch Sensor


Touch Sensor Module — SunFounder Ultimate Sensor Kit documentation


    6. LED RGB
Jual LED RGB 4 PIN WARNA MERAH HIJAU BIRU 5mm ( ARDUINO ) - Common Cathode  - Jakarta Barat - Ardushop-id | Tokopedia


Diagram Blok :



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Rangkaian :

Prinsip Kerja :

Rangkaian ini bekerja dengan menggunakan STM32F103C8 sebagai mikrokontroler yang mengontrol nyala LED berdasarkan input dari infrared (IR) sensor dan touch sensor. Pada kondisi awal, ketika tidak ada objek yang terdeteksi oleh IR sensor dan tidak ada sentuhan pada touch sensor, mikrokontroler akan mengaktifkan LED merah, sebagai indikator bahwa tidak ada aktivitas terdeteksi.

Ketika infrared sensor mendeteksi adanya objek di depannya, sensor akan mengirimkan sinyal HIGH ke mikrokontroler, yang kemudian akan mengaktifkan LED hijau, menunjukkan bahwa objek telah terdeteksi. Begitu pula jika touch sensor menerima sentuhan, ia akan mengirimkan sinyal HIGH ke mikrokontroler, yang juga akan mengaktifkan LED hijau, menandakan bahwa ada interaksi sentuhan. Jika kedua sensor, yaitu IR sensor dan touch sensor, sama-sama mendeteksi aktivitas (objek dan sentuhan), maka mikrokontroler akan mengaktifkan LED cyan, sebagai kombinasi dari warna hijau dan biru pada LED RGB, menandakan bahwa kedua kondisi telah terpenuhi.



4. Flowchart dan Listing Program [Kembali]

Listing Program :

/* USER CODE BEGIN Header */

/**

******************************************************************************

* @file : main.c

* @brief : Main program body

******************************************************************************

* @attention

*

* Copyright (c) 2025 STMicroelectronics.

* All rights reserved.

*

* This software is licensed under terms that can be found in the LICENSE file

* in the root directory of this software component.

* If no LICENSE file comes with this software, it is provided AS-IS.

*

******************************************************************************

*/

/* USER CODE END Header */

/* Includes ------------------------------------------------------------------*/


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

// LED Biru menyala jika IR aktif

HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, ir_status);

// LED Hijau menyala jika Touch aktif

HAL_GPIO_WritePin(GPIOA, GREEN_Pin, touch_status);

// LED Merah menyala jika tidak ada sensor yang aktif

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

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET); // Nyalakan LED RED

} else {

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET); // Matikan LED RED

}

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

/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOA, RED_Pin|GREEN_Pin, GPIO_PIN_RESET);

/*Configure GPIO pin Output Level */

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





5. Video Demo [Kembali]






6. Analisa [Kembali]




7. Download File [Kembali]

Download Video Demo Disini

Tidak ada komentar:

Posting Komentar