Percobaan2 Kondisi3
Siapkan rangkaian pada Wokwi sesuai gambar (STM32, sensor infrared, switch, LED, resistor, dan VCC/GND).
Pastikan semua koneksi pin sudah benar antara input (IR dan switch) serta output (LED).
Buat program pada STM32 untuk membaca sensor infrared dan switch.
Gunakan logika: jika IR tidak mendeteksi objek dan switch ON, maka LED menyala.
Compile program hingga tidak ada error.
Jalankan simulasi pada Wokwi.
Uji dengan kondisi switch ON dan tanpa objek di depan sensor IR, LED harus menyala orange.
Uji dengan kondisi ada objek di depan sensor IR, LED harus mati.
Uji dengan switch OFF, LED tetap mati pada semua kondisi.
2. Hardware dan Diagram Blok[Kembali]
Hardware
3. Rangkaian Simulasi dan Prinsip Kerja[Kembali]
Prinsip kerja rangkaian pada gambar percobaan 2 yang kamu buat di Wokwi ini bekerja berdasarkan dua input, yaitu sensor infrared (IR) dan switch, dengan mikrokontroler Nucleo STM32 sebagai pengolah utama dan LED sebagai output.
Pada kondisi awal, mikrokontroler akan membaca dua masukan secara terus-menerus, yaitu dari sensor infrared dan dari switch. Sensor infrared digunakan untuk mendeteksi ada atau tidaknya benda di depan sensor, sedangkan switch berfungsi sebagai pengaktif sistem secara manual.
Sesuai kondisi yang diberikan, sistem akan merespon ketika sensor infrared tidak mendeteksi benda. Dalam kondisi ini, biasanya output dari sensor IR akan bernilai logika HIGH (atau LOW tergantung konfigurasi, tetapi pada prinsipnya menunjukkan “tidak ada objek”). Pada saat yang sama, switch dalam keadaan ON, sehingga mikrokontroler menerima sinyal aktif dari kedua sisi input.
Ketika kedua kondisi tersebut terpenuhi, yaitu tidak ada benda yang terdeteksi oleh sensor infrared dan switch dalam keadaan ON, maka mikrokontroler akan memberikan sinyal ke LED. LED kemudian menyala dengan warna orange. Warna orange ini biasanya dihasilkan dari kombinasi LED merah dan hijau (jika menggunakan LED RGB) atau sudah ditentukan sebagai LED indikator pada rangkaian.
Sebaliknya, jika salah satu kondisi tidak terpenuhi, misalnya sensor infrared mendeteksi adanya benda atau switch dalam keadaan OFF, maka mikrokontroler tidak akan mengaktifkan LED sehingga LED tetap mati.
Dengan demikian, cara kerja rangkaian ini mengikuti logika gabungan, di mana LED hanya akan menyala jika dua syarat terpenuhi secara bersamaan, yaitu tidak ada objek yang terdeteksi oleh sensor infrared dan switch berada pada posisi ON. Sistem ini cocok digunakan sebagai indikator kondisi area yang kosong tetapi hanya aktif saat sistem dihidupkan melalui switch.
4. Flowchart dan LIsting Program[Kembali]
Flowchart
MAIN.C
#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)
{
GPIO_PinState ir = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1);
GPIO_PinState sw = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
// IR tidak ditekan (tidak deteksi) & switch ON
if (ir == GPIO_PIN_RESET && sw == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // R
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // G
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
}
else
{
// 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};
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;
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)
{
}
}
MAIN.H
#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
Buatlah rangkaian seperti pada gambar percobaan 2 dengan kondisi ketika Infrared sensor tidak mendeteksi benda dan switch on, maka LED menyala orange

Komentar
Posting Komentar