PERCOBAAN 2 KONDISI 2






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 dan merubahnya menjadi energi listrik.

  • INFRARED SENSOR

Mendeteksi panas dan juga pergerakan

  • RGB LED


3. Rangkaian Simulasi dan Prinsip Kerja [kembali]


PRINSIP KERJA:

  • Sensor IR mendeteksi objek:

    • Jika ada objek di depan sensor IR, sinyal HIGH dikirim ke mikrokontroler.
    • Mikrokontroler akan menyalakan LED sebagai indikator adanya objek.
  • Sensor Sentuh mendeteksi sentuhan:

    • Jika sensor disentuh, sinyal HIGH dikirim ke mikrokontroler.
    • Mikrokontroler bisa mengaktifkan LED atau melakukan aksi tertentu.
  • Push Button sebagai kontrol manual:

    • Jika tombol ditekan, sinyal HIGH dikirim ke mikrokontroler.
    • Mikrokontroler dapat menyalakan atau mematikan LED tergantung pada programnya.

  • 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]

    PERCOBAAN 2 KONDISI 1

    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

    7. Video Simulasi [kembali]



    8. Download file [kembali]



    Tidak ada komentar:

    Posting Komentar

         BAHAN PRESENTASI     MATA KULIAH ELEKTRONIKA 2022 Oleh Muhammad Farhan Pramasta 2210953033 DOSEN PENGAMPU DR. DARWISON, M.T. Referensi ...