Laporan Akhir 2
1. Prosedur[Kembali]
1. Buka web WOKWI.COM dan cari STM 32 NUCLEO C031C6
2. Rangkai komponen sesuai dengan gambar rangkaian di modul
3. Klik pada Library Manager untuk membuat file baru yang bernama main.h dan main.c
4. Masukan program yang telah di buat sesuai kondisi pada kedua file tersebut
5. Simulasikan
2. Hardware dan Diagram Blok[Kembali]
1. STM32 NUCLEO-G474RE
2. Float Switch
3. Infrared Sensor
4. Resistor
5. Buzzer
6. LED
7. Push Button3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
4. Flowchart dan Listing Program[Kembali]
- Listing Program
- main.c
#include "main.h"
void SystemClock_Config(void);
void MX_GPIO_Init(void);
uint8_t system_active = 0;
uint8_t error_state = 0;
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
uint8_t sensor_start;
while (1)
{
uint8_t switch_state = HAL_GPIO_ReadPin(BUTTON_REVERSE_GPIO_Port, BUTTON_REVERSE_Pin);
// SWITCH ON
if (switch_state == GPIO_PIN_RESET)
{
if (system_active == 0)
{
system_active = 1;
sensor_start = HAL_GPIO_ReadPin(IR_SENSOR_GPIO_Port, IR_SENSOR_Pin);
if (sensor_start == GPIO_PIN_SET)
{
error_state = 1;
}
}
}
else // SWITCH OFF
{
system_active = 0;
error_state = 0;
// Matikan LED dan buzzer
HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_SET);
}
if (system_active && error_state)
{
// LED Ungu = Merah + Biru
HAL_GPIO_WritePin(LED_RED_GPIO_Port, LED_RED_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, GPIO_PIN_SET);
}
}
}
void SystemClock_Config(void)
{
}
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
// Semua mati dulu
HAL_GPIO_WritePin(GPIOB, LED_GREEN_Pin | LED_RED_Pin | BUZZER_Pin, GPIO_PIN_SET);
// Switch + Sensor
GPIO_InitStruct.Pin = BUTTON_REVERSE_Pin | IR_SENSOR_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// LED RGB
GPIO_InitStruct.Pin = LED_GREEN_Pin | LED_RED_Pin | BUZZER_Pin;
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);
}
void Error_Handler(void)
{
while (1)
{
}
}
2. Main.h
#ifndef __MAIN_H
#define __MAIN_H
#ifdef __cplusplus
extern "C" {
#endif
#include "stm32c0xx_hal.h"
void Error_Handler(void);
// ===== SWITCH =====
#define BUTTON_REVERSE_Pin GPIO_PIN_0
#define BUTTON_REVERSE_GPIO_Port GPIOA
// ===== SENSOR =====
#define IR_SENSOR_Pin GPIO_PIN_1
#define IR_SENSOR_GPIO_Port GPIOA
// ===== LED RGB =====
#define LED_GREEN_Pin GPIO_PIN_0
#define LED_GREEN_GPIO_Port GPIOB
#define LED_RED_Pin GPIO_PIN_1
#define LED_RED_GPIO_Port GPIOB
// Pin ini kita pakai sebagai LED Biru (sebelumnya buzzer)
#define BUZZER_Pin GPIO_PIN_2
#define BUZZER_GPIO_Port GPIOB
#ifdef __cplusplus
}
#endif
#endif
5. Video Demo[Kembali]
6. Kondisi[Kembali]
Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika Switch ON dan sensor mendeteksi benda secara instan (0 detik setelah sistem aktif) padahal area harusnya kosong, LED RGB menyala Ungu (Merah + Biru) sebagai tanda error
8. Download File[Kembali]
rangkaian percobaan [Klik]
Komentar
Posting Komentar