LA Percobaan 2
1. Prosedur[Kembali]
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
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".
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]
- Rangkaian Percobaan
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).
3. Rangkaian Simulasi [Kembali]
4. Flowchart dan Listing Program[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) { if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_RESET) { 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 { if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET) { 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 { 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_SET); } } HAL_Delay(50); } } 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; if (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; 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) } 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(); } } 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_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); 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); 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) { } }
5. Video Demo[Kembali]
6. Soal Analisa[Kembali]
Mikrokontroler memiliki keunggulan dalam fleksibilitas karena fungsi logikanya dapat diubah melalui perangkat lunak tanpa perlu memodifikasi rangkaian fisik. Selain itu, satu mikrokontroler mampu menggantikan banyak komponen logika konvensional, sehingga sistem menjadi lebih sederhana, hemat biaya, dan memiliki kemampuan pemrosesan yang lebih kompleks.



Komentar
Posting Komentar