LA 2 M2 PRAK UP UC




Laporan Akhir 2 Modul 2
(Percobaan 1)

1. Prosedur
[Kembali]

  1. Membuat rangkaian sesuai dengan percobaan 2
  2. Masukkan input dan output dari rangkaian di software  STM32.
  3. Setelah input output selesai disesuaikan pada software STM32 sesuai pada modul, ubah menjadi code 
  4. Code yang diperoleh dari software STM32 dapat diaplikasikan pada software Proteus untuk diterapkan pada STM32f103C8 di dalam Proteus
  5. Selesai.

2. Hardware dan Diagram Blok [Kembali]

A. Hardware 

1. STM32f103C8

2. Sensor infrared 


3. Touch Sensor




4. LED RGB


5. Resistor 



Diagram Blok  :




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]



Prinsip Kerja : 
 
Prinsip operasional rangkaian ini berlandaskan pada pengolahan sinyal digital oleh Raspberry Pi Pico untuk mengendalikan LED melalui tombol tekan sebagai input. Tombol tekan berperan sebagai saklar yang mengatur satu LED secara langsung. Sistem ini memanfaatkan logika digital, di mana setiap tombol berfungsi sebagai input dengan keadaan LOW (0) saat tidak ditekan dan HIGH (1) saat ditekan, sementara LED berfungsi sebagai output yang menyala atau mati sesuai kondisi tombol yang bersangkutan. 

Saat tombol push ditekan, sinyal HIGH (1) dikirim ke pin GPIO yang diatur sebagai input, sehingga Raspberry Pi Pico mendeteksi bahwa tombol dalam keadaan aktif. Mikrocontroller lalu menyalakan pin GPIO yang terhubung ke LED dengan memberikan sinyal HIGH (1), sehingga arus dapat mengalir melalui LED dan resistor pembatas, membuat LED menyala. Sebaliknya, ketika tombol dilepas, Raspberry Pi Pico menetapkan output LED ke LOW (0), menghentikan aliran arus dan mematikan LED. 

Agar stabilitas sistem terjaga, tombol tekan dikonfigurasi dengan resistor pull-down internal yang menjamin nilai logika tetap LOW (0) saat tombol tidak ditekan, mencegah terjadinya kesalahan pembacaan akibat sinyal floating. Selain itu, program ini menerapkan jeda singkat (50 milidetik) untuk menangani efek bouncing, yaitu fenomena di mana tombol mekanis menghasilkan impuls cepat saat ditekan atau dilepaskan. 


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)

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

Flowchart :





5. Video Demo [Kembali]






6. Analisa [Kembali]







7. Download File [Kembali]

Download HTML [Download]
Download Video Demo [Download]
Download Listing Program [Download
Download Datasheet Mikrokontroler Raspberry Pi Pico [Download
Download Datasheet Push Button [Download]
Download Datasheet LED [Download]
Download Datasheet Resistor [Download]











Komentar

Postingan populer dari blog ini

LA MODUL 4 UP UC

Transistor Testing

MODUL 1 - DIODA