TP 2 MODUL 1 MIKRO
1. Prosedur [kembali]
- Rangkai semua komponen
- Buat Program pada website Wokwi
- Jalankan program sesuai kondisi
2. Hardware dan Diagram Blok [kembali]
- Hardware:
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
Wokwi
Prinsip Kerja: Prinsip kerja rangkaian sesuai kondisi yang diminta adalah sebagai berikut. Sistem membaca dua input, yaitu sensor infrared (IR) dan switch. Sensor IR digunakan untuk mendeteksi ada atau tidaknya benda, di mana tidak mendeteksi benda = LOW, sedangkan switch digunakan sebagai kontrol manual dengan kondisi ON = HIGH.
Jika kondisi sensor IR tidak mendeteksi benda (LOW) dan switch dalam keadaan ON (HIGH) terpenuhi secara bersamaan, maka mikrokontroler akan mengaktifkan LED hijau (menyala), sementara LED lain tetap mati. Namun, jika salah satu kondisi tidak terpenuhi (misalnya IR mendeteksi benda atau switch OFF), maka LED tidak menyala. Sistem ini bekerja terus-menerus dengan membaca kedua input tersebut secara berulang.
4. Flowchart dan Listing Program [kembali]
Flowchart
Listing Program:
#include "main.h"
/* Private function prototypes */
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
/* Inisialisasi HAL */
HAL_Init();
/* Konfigurasi clock */
SystemClock_Config();
/* Inisialisasi GPIO */
MX_GPIO_Init();
while (1)
{
/* Baca sensor */
GPIO_PinState ir = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
GPIO_PinState sw = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
/* =====================================================
KONDISI UTAMA
IR tidak deteksi (LOW) & Switch ON (HIGH)
===================================================== */
if (ir == GPIO_PIN_RESET && sw == GPIO_PIN_SET)
{
/* LED HIJAU ON */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // MERAH OFF
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // HIJAU ON
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); // BIRU OFF
}
else
{
/* Semua LED mati */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);
}
HAL_Delay(50);
}
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/* Konfigurasi oscillator */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/* Konfigurasi clock */
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;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
{
Error_Handler();
}
}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* Enable clock GPIO */
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/* =============================
INPUT (IR + SWITCH)
============================= */
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);
/* =============================
OUTPUT (LED RGB)
============================= */
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)
{
__disable_irq();
while (1)
{
}
}
#ifndef __MAIN_H
#define __MAIN_H
#ifdef __cplusplus
extern "C" {
#endif
#include "stm32c0xx_hal.h"
void Error_Handler(void);
#define BUTTON_REVERSE_Pin GPIO_PIN_0
#define BUTTON_REVERSE_GPIO_Port GPIOA
#define IR_SENSOR_Pin GPIO_PIN_1
#define IR_SENSOR_GPIO_Port GPIOA
#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
#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 Infrared sensor tidak mendeteksi benda dan switch on, maka LED menyala hijau
7. Video Simulasi [kembali]
8. Download File [kembali]
- Download File Rangkaian (klik disini)
- Download Video Penjelasan Rangkaian (klik disini)
- Download Datasheet Touch Sensor (klik disini)
- Download Datasheet Infrared Sensor (klik disini)
- Download Datasheet Resistor (klik disini)
- Download Datasheet LED (klik disini)
- Download Datasheet Buzzer (klik disini)
.png)
Komentar
Posting Komentar