B. TP Percobaan 2
Percobaan 2 Kondisi 4
1. Prosedur [Kembali]
1. Buka web WOKWI.COM dan cari STM 32 NUCLEO C031C6h) Download File
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 [Kembali]
1. STM32 NUCLEO-G474RE
2. Float Switch
3. Infrared Sensor
4. Resistor
5. Buzzer
6. LED
7. Push Button
- Ketika Switch ON dan push button tidak ditekan, maka RGB dan Buzzer on
- Ketika Switch OFF dan Push button ditekan, maka RGB dan Buzzer off
4. Flowchart [Kembali]
- Flowchart
- 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_sensor = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0); // IR Sensor
uint8_t sw_status = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1); // Switch
// ✅ KONDITI UTAMA: IR TIDAK DETEKSI (0) + SWITCH ON (1) = LED HIJAU ON
if (ir_sensor == GPIO_PIN_RESET && sw_status == GPIO_PIN_SET)
{
// LED HIJAU NYALA (PB0)
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
}
else if (ir_sensor == GPIO_PIN_SET)
{
// IR DETEKSI = LED MERAH (PB2)
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
}
else if (sw_status == GPIO_PIN_RESET)
{
// Switch OFF = SEMUA LED OFF
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
}
else
{
// Switch ON + IR deteksi = LED KUNING (PB1)
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
}
HAL_Delay(50);
}
}
// ✅ ARDUINO STM32 CORE COMPATIBLE CLOCK CONFIG
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;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
// Initial outputs LOW
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_RESET);
// PA0=IR Sensor, PA1=Switch (PULLDOWN)
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// PB0=Hijau, PB1=Kuning, PB2=Merah
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2;
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) {}
}
5. Video Demo [Kembali]
6. Kondisi [Kembali]
Percobaan 2 Kondisi 4
Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika Infrared sensor tidak mendeteksi benda dan switch on, maka LED menyala hijau
7. Video Simulasi [Kembali]
8. Download File [Kembali]
Rangkaian Simulasi [Klik]
Video Simulasi [Klik]


Komentar
Posting Komentar