Tugas Pendahuluan 2 - Modul 1




Tugas Pendahuluan 2 Modul 1
(Percobaan 2 Kondisi 1)

1. Prosedur
[Kembali]

1. Buka proteus dan siap kan software STM32CubeIDE
2. Buat rangkaian dan sambungkan komponen sesuai kondisi di proteus
3. Untuk software STM32CubeIDE Konfigurasi pin GPIO untuk input dan output
4. Cocokkan kode program sesuai kondisi
5. Masukkan program ke proteus
6. klik run di proteus

2. Hardware dan Diagram Blok [Kembali]
  • STM32F103C8

  • TOUCH SENSOR

Mendeteksi Sentuhan dan merubahnya menjadi energi listrik.

  • INFRARED SENSOR

Mendeteksi panas dan juga pergerakan

  • RGB LED

diagram blok



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

a. Rangkaian


b. Prinsip kerja

Rangkaian ini menggunakan mikrokontroler STM32F103C8 untuk mengontrol LED RGB berdasarkan sinyal dari sensor Infrared (IR) dan sensor Touch. Sensor IR berfungsi mendeteksi keberadaan objek atau gerakan, sedangkan sensor Touch mendeteksi sentuhan. Jika sensor IR mendeteksi gerakan (HIGH) dan sensor Touch tidak mendeteksi sentuhan (LOW), maka LED RGB akan menyala dengan warna merah.

Mikrokontroler membaca status kedua sensor melalui GPIO input, lalu mengaktifkan PB0 sebagai output untuk menyalakan LED merah. Jika sensor Touch mendeteksi sentuhan (HIGH) atau sensor IR tidak aktif (LOW), LED RGB akan mati atau tidak menampilkan warna merah. Proses ini berlangsung secara real-time dan terus berulang dalam loop utama

4. Flowchart dan Listing Program [Kembali]

a. flowchart

b. 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. Kondisi [Kembali]

Buatlah Rangkaian seperti gambar percobaan 2 dengan kondisi ketika sensor Infrared mendeteksi gerakan dan sensor touch tidak mendeteksi sentuhan maka LED RGB akan menampilkan warna Merah

6. Video Simulasi [Kembali]

7. Download File [Kembali]
Simulasi  klik disini
Gambar Simulasi  klik disini
Video Simulasi   klik disini


Tidak ada komentar:

Posting Komentar

 BAHAN PRESENTASI UNTUK MATA KULIAH  ELEKTRONIKA Oleh : Salma Salsabila 2210952002    Dosen Pengampu : Darwison, M.T. Darwison, 2010, ”TEORI...