Tugas Pendahuluan 2 M1
Tugas Pendahuluan 2 Modul 1
(Percobaan 3 Kondisi 1)
1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Buat program untuk mikrokontroler STM32F103C8 di software STM32 CubeIDE.
3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler yang ada di proteus.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
2. Buat program untuk mikrokontroler STM32F103C8 di software STM32 CubeIDE.
3. Compile program dalam format hex, lalu upload ke dalam mikrokontroler yang ada di proteus.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
5. Selesai
2. Hardware dan Diagram Blok
Hardware :
1) Mikrokontroler STM32F103C8
3. Rangkaian Simulasi dan Prinsip Kerja
Rangkaian Simulasi Sebelum dirunning:
Prinsip Kerja :
4. Flowchart dan Listing Program
Flowchart :
Listing Program :
#include "main.h"
// Menghubungkan dengan file header utama
void SystemClock_Config(void);
// Deklarasi fungsi konfigurasi clock
static void MX_GPIO_Init(void);
// Deklarasi fungsi inisialisasi GPIO
int main(void)
// Fungsi utama program
{
HAL_Init();
// Inisialisasi sistem HAL (reset & timer)
SystemClock_Config();
// Mengatur clock mikrokontroler
MX_GPIO_Init();
// Inisialisasi semua pin GPIO
while (1)
// Loop tak terbatas (program berjalan terus)
{
if (HAL_GPIO_ReadPin(GPIOA, IR_Pin) == GPIO_PIN_SET &&
HAL_GPIO_ReadPin(GPIOA, touch_Pin) == GPIO_PIN_RESET)
// Jika IR aktif dan touch tidak disentuh
{
HAL_GPIO_WritePin(GPIOB, LED_Pin, GPIO_PIN_SET);
// Menyalakan LED
}
else
// Jika kondisi tidak terpenuhi
{
HAL_GPIO_WritePin(GPIOB, LED_Pin, GPIO_PIN_RESET);
// Mematikan LED
}
}
}
void SystemClock_Config(void)
// Fungsi konfigurasi clock
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
// Struktur konfigurasi osilator
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
// Struktur konfigurasi clock
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
// Menggunakan osilator HSI
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
// Mengaktifkan HSI
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
// Kalibrasi default HSI
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
// Tidak menggunakan PLL
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
// Cek apakah konfigurasi berhasil
{
Error_Handler();
// Jika gagal, masuk error handler
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
// Mengatur jenis clock
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
// Sumber clock dari HSI
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
// Pembagi clock AHB = 1
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
// Pembagi clock APB1 = 1
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
// Pembagi clock APB2 = 1
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
// Cek konfigurasi clock
{
Error_Handler();
// Jika gagal, masuk error handler
}
}
static void MX_GPIO_Init(void)
// Fungsi inisialisasi GPIO
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
// Struktur konfigurasi GPIO
__HAL_RCC_GPIOD_CLK_ENABLE();
// Aktifkan clock port D
__HAL_RCC_GPIOA_CLK_ENABLE();
// Aktifkan clock port A
__HAL_RCC_GPIOB_CLK_ENABLE();
// Aktifkan clock port B
HAL_GPIO_WritePin(GPIOB, LED_Pin|Buzzer_Pin, GPIO_PIN_RESET);
// Set awal LED dan buzzer OFF
GPIO_InitStruct.Pin = IR_Pin|touch_Pin;
// Pilih pin IR dan touch
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
// Set sebagai input
GPIO_InitStruct.Pull = GPIO_NOPULL;
// Tanpa pull-up/pull-down
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// Terapkan konfigurasi ke port A
GPIO_InitStruct.Pin = LED_Pin|Buzzer_Pin;
// Pilih pin LED dan buzzer
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
// Set sebagai output push-pull
GPIO_InitStruct.Pull = GPIO_NOPULL;
// Tanpa pull
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
// Kecepatan rendah
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// Terapkan konfigurasi ke port B
}
void Error_Handler(void)
// Fungsi penanganan error
{
__disable_irq();
// Menonaktifkan interrupt
while (1)
// Loop tak terbatas (program berhenti)
{
}
}
5. Kondisi
Percobaan 3 Kondisi 1
Buatlah rangkaian seperti pada gambar percobaan 3 dengan kondisi ketika Infrared sensor mendeteksi benda dan sensor Touch tidak mendeteksi sentuhan, maka LED menyala
6. Video Simulasi
7. Download File
Datasheet Sensor Touch [Download]
Datasheet RGB LED [Download]



Komentar
Posting Komentar