Jumat, 28 Maret 2025

LA 2 MODUL 1 PRAK MIKRO



Percobaan 2 

LED RGB, Touch Sensor, & Sensor Infrared


1. Prosedur [Kembali]

1. Persiapkan semua alat dan bahan yang diperlukan.

2. Rangkai semua komponen pada breadboard yang telah disediakan.

3. Download stlink pada laptop, lalu masukkan listing program ke aplikasi STM32 CubeIDE.

4. Rangkaian dihubungkan ke laptop dengan kabel stlink dan dirunning.

5. Amati hasilnya, apakah output sesuai dengan program yang diinputkan.

6. Selesai.


2. Hardware dan Diagram Blok [Kembali]

Hardware:

1. Mikrokontroler STM32F103C8

STM32F103C8 board – Microscale

2. Infrared Sensor

Infrared Sensor Module
3. Touch Sensor
Touch Sensor Module — SunFounder Ultimate Sensor Kit documentation
4. LED RGB

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

5. Push Button

6. Resistor

Diagram Blok:



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]


Prinsip kerja :

Pada rangkaian percobaan 2 ini  terdiri dari LED RGB, sensor inframerah, dan touch sensor dengan mikrokontroler STM32F103C8. Sensor inframerah (IR) digunakan sebagai inputan untuk mendeteksi keberadaan objek berdasarkan pantulan sinyal inframerah, touch sensor juga sebagai inputan yang berfungsi mendeteksi sentuhan pada area sensornya. Kedua sensor ini dihubungkan ke pin GPIO pada STM32F103C8, yaitu IR sensor pada pin PB10 dan touch sensor pada pin PB6. Mikrokontroler membaca sinyal dari kedua sensor melalui fungsi HAL_GPIO_ReadPin(). Dan RGB LED sebagai ouput yang memiliki 3 warna. Warna Red dihubungkan ke pin PA6, Green dihubungkan ke pin PA7 dan Blue dihubungkan ke pin PB0.

Saatsensor inframerah mendeteksi adanya objek (menghasilkan nilai logika HIGH), maka mikrokontroler akan menyalakan LED biru dengan menulis nilai logika HIGH pada pin GPIO yang terhubung dengan LED biru menggunakan fungsi HAL_GPIO_WritePin(). Jika touch sensor mendeteksi adanya sentuhan (menghasilkan nilai logika HIGH), maka mikrokontroler akan menyalakan LED hijau. Jika tidak ada input dari kedua sensor (kedua sensor menghasilkan nilai logika LOW), maka LED merah akan menyala untuk menandakan bahwa tidak ada aktivitas dari sensor. Logika ini diatur menggunakan pernyataan if-else dalam program.

Selain itu, fungsi HAL_Delay(10) digunakan untuk memberikan jeda singkat antara pembacaan sensor, sehingga memastikan stabilitas sinyal yang diterima oleh mikrokontroler. Seluruh proses ini berjalan secara terus-menerus dalam loop utama (while(1)), sehingga rangkaian dapat secara real-time merespons perubahan pada sensor inframerah dan touch sensor, serta mengendalikan LED RGB sesuai dengan kondisi yang terdeteksi. Rangkaian ini memungkinkan integrasi sederhana antara sensor digital dan perangkat output menggunakan STM32F103C8 sebagai pengendali utama.


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 ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin);
    uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, TOUCH_Pin);

    if (ir_status == GPIO_PIN_SET && touch_status == GPIO_PIN_SET) {
      HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);
      HAL_GPIO_WritePin(GPIOA, GREEN_Pin, GPIO_PIN_SET);
      HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_SET);
    } else {
      HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, ir_status);
      HAL_GPIO_WritePin(GPIOA, GREEN_Pin, touch_status);

      if (ir_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);
      }
    }
    HAL_Delay(10);
  }
}

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 = 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

5. Video Demo [Kembali] 



6. Analisa [Kembali]


7. Download File [Kembali]

Download HTML [download]

Download Video Demo [download]

Download Infrared Sensor  [download]

Download Datasheet Mikrokontroler STM32F103C8 [download]

Download Datasheet Touch Sensor [download]

Download Datasheet LED [download]

Download Datasheet Resistor [download]


Related Posts:

0 komentar:

Posting Komentar