Prosedur Percobaan 2 Kondisi 3
1. Buka software proteus
2. Cari Komponen yang akan digunakan sesuai dengan modul
3. Hubungka komponen sesuai dengan arahan yang ada pada modul dan untuk pin yang di pakai sesuaikan juga
4. Konfigurasi STM32 di STM32CubeIDE dan perbaiki code yang ada pada modul agar bisa digunakan sesuai dengan kondisi yang di minta
5. build program yang telah di perbaiki tadi di software stm32cube
6. masukan file yang telah di ubah tadi pada stm32 yang telah di rangkai pada proteus
7. simulasikan dan lihat apa yang terjadi pada program
2. Hardware dan Diagram Blok[Kembali]
1.STM32F103C8
sebagai mikrokontroler utama
3. Rangkaian Simulasi Dan Prinsip Kerja[Kembali]
4. Flowchart dan Listing[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, GPIO_PIN_10); // Membaca IR sensor (PB10)
uint8_t touch_status = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7); // Membaca Touch Sensor (PB7)
// Kondisi: IR tidak mendeteksi gerakan dan Touch mendeteksi sentuhan
if (ir_status == GPIO_PIN_RESET && touch_status == GPIO_PIN_SET) {
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // Nyalakan LED Biru (PB0)
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET); // Nyalakan LED Hijau (PA7)
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); // Matikan LED Merah (PA6)
}
else {
// Matikan semua LED jika kondisi tidak terpenuhi
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 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 untuk LED */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
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 = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* Konfigurasi GPIO untuk sensor */
GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_7;
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) {}
}
TP 1 Percobaan 2 Kondisi 3
Buatlah Rangkaian seperti gambar percobaan 2 dengan kondisi ketika sensor Infrared tidak mendeteksi gerakan dan sensor touch mendeteksi sentuhan maka LED RGB akan menampilkan warna Cyan
Download Rangkaian Klik Disini
Download Vidio Simulasi Klik Disini
Download Datasheet Mikrokontroler STM32F103C8 Klik Disini
Download Datasheet Push Button Klik Disini
Download Datasheet Buzzer Klik Disini
Download Vidio Simulasi Klik Disini
0 komentar:
Posting Komentar