TP Percobaan 2 Kondisi 7
DAFTAR ISI
1. Prosedur[Kembali ke Daftar Isi]
1. Persiapan Kode (Editor Sebelah Kiri)
Pastikan kode program sudah lengkap dan tidak ada error penulisan. Berdasarkan tangkapan layar, kamu sudah mendefinisikan pin berikut:
PA0: Push Button (Gigi Mundur)
PA1: Sensor IR (Objek)
PB0: LED Hijau
PB1: LED Merah
PB2: Buzzer
2. Memulai Simulasi
Klik tombol "Play" (ikon segitiga hijau) yang berada di bagian tengah atas area simulasi.
Wokwi akan melakukan kompilasi kode.
Jika berhasil, status di bagian bawah akan berubah menjadi "Running".
3. Menguji Logika Rangkaian
Setelah simulasi berjalan, kamu bisa melakukan interaksi berikut untuk melihat apakah sistem bekerja sesuai logika if (switchState == HIGH) pada kode:
Langkah A: Aktifkan Sistem (Gigi Mundur) Klik pada Push Button (tombol hijau di kiri atas). Jika ini ditekan, sistem dianggap aktif.
Langkah B: Simulasi Deteksi Objek Klik pada komponen Slide Switch (yang bertindak sebagai Sensor IR di bawah tombol). Geser atau klik untuk mengubah status inputnya.
Langkah C: Amati Output
LED RGB: Perhatikan apakah warna berubah dari Hijau ke Merah saat sensor mendeteksi "objek".
Buzzer: Jika jarak objek terlalu dekat (berdasarkan logika program), komponen bulat hitam di kanan atas akan mengeluarkan animasi gelombang suara.
2. Hardware dan Diagram Blok[Kembali ke Daftar Isi]
dentifikasi Hardware:
Microcontroller: STM32 Nucleo-C031C6 (Otak pemrosesan).
Input: * Push Button (Simulasi Sakelar Gigi Mundur).
Slide Switch/IR Sensor (Simulasi deteksi halangan).
Output: * LED RGB (Indikator visual: Hijau aman, Merah bahaya).
Buzzer (Peringatan suara).
Komponen Pasif: Resistor (Pull-down untuk input yang stabil).
Diagram Blok Loop Tertutup:
Sistem ini menggunakan feedback dari sensor untuk menentukan status output secara terus-menerus.
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali ke Daftar Isi]
Sistem ini dieksekusi secara terus-menerus (dalam blok while(1)) dengan urutan kejadian sebagai berikut:
Langkah 1: Pengecekan Saklar Utama (Tombol) Mikrokontroler STM32 pertama kali akan melihat status tombol di PA0.
Jika tombol TIDAK DITEKAN (LOW), sistem dianggap mati/standby. Mikrokontroler akan secara paksa mematikan aliran listrik ke semua output (LED Merah mati, LED Hijau mati, Buzzer mati) untuk menghemat energi atau memastikan keamanan.
Jika tombol DITEKAN (HIGH), sistem aktif dan lanjut ke Langkah 2.
Langkah 2: Pemantauan Sensor IR Saat sistem aktif, STM32 akan memantau sinyal dari saklar simulasi IR di PA1. Ada dua kemungkinan kondisi:
Kondisi A: Mendeteksi Benda (Bahaya) Jika sensor mensimulasikan ada benda di depannya, ia akan mengirimkan sinyal LOW ke pin PA1.
Respon Sistem: Mikrokontroler mengirimkan tegangan (HIGH) ke pin PB1 dan PB2. Akibatnya, LED Merah menyala dan Buzzer berbunyi sebagai peringatan. Di saat yang sama, tegangan ke PB0 diputus (LOW) sehingga LED Hijau mati.
Kondisi B: Perubahan Menjadi Tidak Mendeteksi Benda (Aman) Sesuai permintaan Anda, jika benda tersebut menjauh dan sensor tidak lagi mendeteksinya, sensor akan mengirimkan sinyal HIGH ke pin PA1.
Respon Sistem: Mikrokontroler langsung memutus tegangan (LOW) dari pin PB1 dan PB2. Akibatnya, LED Merah mati dan Buzzer langsung berhenti berbunyi. Kemudian, tegangan (HIGH) dialirkan ke pin PB0 sehingga LED Hijau menyala, menandakan area sudah aman atau clear.
Singkatnya, tombol berfungsi sebagai izin nyala sistem, sementara sensor (slide switch) bertindak sebagai pemicu untuk menukar kondisi antara "Peringatan (Merah + Bunyi)" dan "Aman (Hijau + Sunyi)".
4. Flowchart dan Listing Program[Kembali ke Daftar Isi]
Listing Program:
#include "stm32c0xx_hal.h"// --- DEFINISI PIN ---#define BUTTON_REVERSE_Pin GPIO_PIN_0 // Dihubungkan ke PA0#define BUTTON_REVERSE_GPIO_Port GPIOA#define IR_SENSOR_Pin GPIO_PIN_1 // Dihubungkan ke PA1#define IR_SENSOR_GPIO_Port GPIOA#define LED_GREEN_Pin GPIO_PIN_0 // Dihubungkan ke PB0#define LED_GREEN_GPIO_Port GPIOB#define LED_RED_Pin GPIO_PIN_1 // Dihubungkan ke PB1#define LED_RED_GPIO_Port GPIOB#define BUZZER_Pin GPIO_PIN_2 // Dihubungkan ke PB2#define BUZZER_GPIO_Port GPIOB// --- PROTOTIPE FUNGSI ---void SystemClock_Config(void);static void MX_GPIO_Init(void);// void Error_Handler(void); -> Dihapus karena sudah ada bawaan dari sistem Wokwi/Arduino// --- PROGRAM UTAMA ---int main(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){// 1. Cek Switch/Tombol di PA0 (Sebagai saklar utama)if (HAL_GPIO_ReadPin(GPIOA, BUTTON_REVERSE_Pin) == GPIO_PIN_SET){// 2. Cek Sensor IR di PA1// KONDISI: TIDAK MENDETEKSI BENDA (HIGH / SET)if (HAL_GPIO_ReadPin(GPIOA, IR_SENSOR_Pin) == GPIO_PIN_SET){HAL_GPIO_WritePin(GPIOB, LED_RED_Pin, GPIO_PIN_RESET); // LED Merah MATIHAL_GPIO_WritePin(GPIOB, LED_GREEN_Pin, GPIO_PIN_SET); // LED Hijau NYALAHAL_GPIO_WritePin(GPIOB, BUZZER_Pin, GPIO_PIN_RESET); // Buzzer BERHENTI}// KONDISI: MENDETEKSI BENDA (LOW / RESET)else{HAL_GPIO_WritePin(GPIOB, LED_RED_Pin, GPIO_PIN_SET); // LED Merah NYALAHAL_GPIO_WritePin(GPIOB, LED_GREEN_Pin, GPIO_PIN_RESET); // LED Hijau MATIHAL_GPIO_WritePin(GPIOB, BUZZER_Pin, GPIO_PIN_SET); // Buzzer BERBUNYI}}// Jika Switch/Tombol di PA0 posisi OFFelse{// Matikan semua outputHAL_GPIO_WritePin(GPIOB, LED_GREEN_Pin | LED_RED_Pin | BUZZER_Pin, GPIO_PIN_RESET);}HAL_Delay(50); // Delay untuk kestabilan simulasi}}// --- KONFIGURASI SISTEM ---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;// Jika konfigurasi gagal, akan otomatis memanggil fungsi bawaan sistemif (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}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();}}// --- INISIALISASI PIN GPIO ---static void MX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct = {0};// Mengaktifkan Clock untuk Port A dan Port B__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();// Konfigurasi Pin Input: PA0 (Switch) dan PA1 (IR Sensor)GPIO_InitStruct.Pin = BUTTON_REVERSE_Pin | IR_SENSOR_Pin;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLDOWN;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);// Konfigurasi Pin Output: PB0 (LED Hijau), PB1 (LED Merah), PB2 (Buzzer)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);// Set default awal: Semua Output MatiHAL_GPIO_WritePin(GPIOB, LED_GREEN_Pin | LED_RED_Pin | BUZZER_Pin, GPIO_PIN_RESET);}
5. Video Demo[Kembali ke Daftar Isi]
6. Kondisi[Kembali ke Daftar Isi]
Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika infrared sensor berubah dari mendeteksi benda ke tidak mendeteksi benda, maka LED merah mati, LED hijau menyala, dan buzzer berhenti berbunyi.



Komentar
Posting Komentar