LA Percobaan 2


[KEMBALI KE MENU SEBELUMNYA]

1. Prosedur[Kembali]

  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]

- Rangkaian Percobaan

  1. Microcontroller: STM32 Nucleo-C031C6 (Otak pemrosesan).

  2. Input: * Push Button (Simulasi Sakelar Gigi Mundur).

    • Slide Switch/IR Sensor (Simulasi deteksi halangan).

  3. Output: * LED RGB (Indikator visual: Hijau aman, Merah bahaya).Buzzer (Peringatan suara).

  4. Komponen Pasif: Resistor (Pull-down untuk input yang stabil).

3. Rangkaian Simulasi [Kembali]


  • Prinsip Kerja 
  1. 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]

  • 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]

Analisa:
1. Bagaimana pengaruh pemilihan gpio masing2 dev board
Jawaban:
Pengaruh Pemilihan GPIO pada Setiap Development Board,Setiap pin GPIO pada mikrokontroler memiliki fungsi alternatif (multiplexing), seperti sebagai input analog (ADC), komunikasi (I2C, SPI), maupun I/O digital biasa. Pemilihan pin yang kurang tepat dapat menyebabkan fungsi khusus tidak termanfaatkan secara optimal, bahkan berpotensi merusak pin jika terjadi ketidaksesuaian tegangan, misalnya pin berlogika 3.3V diberi input 5V.

2. Bagaimana program deklarasi pin i/o pada stm32
Jawaban:
Deklarasi Pin I/O pada STM32,Proses deklarasi pin pada STM32 relatif lebih kompleks dibandingkan platform seperti Arduino. Tahapannya meliputi mengaktifkan clock pada port terkait, mengatur konfigurasi pin (mode, pull-up/pull-down, dan kecepatan) melalui struktur tertentu, kemudian melakukan inisialisasi menggunakan pustaka seperti HAL agar pin siap digunakan oleh sistem.

3. Analisa bagaimana  menerima input dan mengeluarkan output pada stm 32
Jawaban:
Mekanisme Input dan Output pada STM32, Pada proses input, mikrokontroler membaca level tegangan yang masuk ke pin, di mana tegangan mendekati 3.3V dikenali sebagai logika HIGH (1) dan mendekati 0V sebagai LOW (0). Sedangkan pada output, mikrokontroler mengendalikan rangkaian internal untuk menghasilkan tegangan HIGH (3.3V) atau menghubungkan pin ke ground untuk menghasilkan kondisi LOW.

4. Analisa pengaruh perubahan program pada main.h terhadap program main.c
Jawaban:
Pengaruh Perubahan File main.h terhadap main.c, File main.h berfungsi sebagai tempat deklarasi dan konfigurasi pin sehingga memudahkan pengelolaan program secara modular. Sementara itu, main.c berisi logika utama program. Jika terjadi perubahan konfigurasi pin pada hardware, cukup dilakukan pada main.h tanpa perlu mengubah logika program di main.c, sehingga lebih efisien dan terstruktur.

5. Analisa bagaimna program dalam analisa metode pendeteksian inputan pada stm 32
Jawaban:
Metode Pendeteksian Input pada STM32, Terdapat dua metode utama dalam mendeteksi input, yaitu polling dan interrupt. Pada metode polling, mikrokontroler secara terus-menerus memeriksa kondisi pin, yang dapat membebani kinerja CPU dan berisiko melewatkan sinyal. Sebaliknya, metode interrupt (EXTI) memungkinkan mikrokontroler merespon perubahan sinyal secara langsung tanpa harus memantau secara terus-menerus, sehingga lebih efisien dan responsif.

6. Analisa kelebihan mikrokontroler dibanding rangkaian logika
Jawaban:
Kelebihan Mikrokontroler dibandingkan Rangkaian Logika
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.

6. Video Simulasi[Kembali]

7. Download File[Kembali]

Video Simulasi [Download] 

Komentar

Postingan populer dari blog ini

Laporan Akhir Dioda Zener

Laporan Akhir Reverse Bias Dioda

Laporan Akhir Forward Bias Dioda