Buzzer, LED RGB, Push Button, dan Sensor Infrared
1. Rangkai rangkaian di Proteus sesuai dengan kondisi percobaan.
2. Buat program di aplikasi STM32 Cube IDE.
4. Setelah program selesai, jalankan simulasi rangkaian pada Proteus sesuai kondisi.
2. Buat program di aplikasi STM32 Cube IDE.
4. Setelah program selesai, jalankan simulasi rangkaian pada Proteus sesuai kondisi.
5. Selesai.
2. Hardware dan Diagram Blok[Kembali]
Hardware :
- Sensor Infrared
- STM32F103C8
- Push button
- RGB LED
3. Rangkaian Simulasi[Kembali]
- Rangkaian sebelum di running
- Rangkaian setelah di running
- Prinsip Kerja
Rangkaian ini bekerja dengan prinsip mikrokontroller dimana sensor infrared & push button digunakan sebagai input, sedangkan RGB LED sebagai output, dan STM32F103C8 sebagai chip ic. STM32F103C8 membaca status masing-masing tombol melalui pin GPIO yang telah dikonfigurasi sebagai input dengan IR sensor dan Push button, sehingga saat IR sensor tidak membaca pergerakan dan tombol tidak ditekan, nilainya tetap terbaca sebagai logika Low, dan saat mendeteksi gerakan atau ditekan, nilainya berubah menjadi logika High. Ketika Sensor bernilai high LED akan berwarna merah dan buzz akan berbunyi, ketika Push button di tekan maka LED akan berwarna biru dan buzz akan berbunyi , apabila keduanya bernilai high maka led akan berwarna ungu dan buzz akan berbunyi.
Tombol reset berfungsi untuk mereset nilai nilai pada setiap input menjadi low.
Dalam kode program, proses ini dilakukan dengan membaca nilai sensor dan tombol menggunakan ir_status == GPIO_PIN_SET,button_status == GPIO_PIN_SET . kondisi sensor mengintrol LED HAL_GPIO_WritePin(GPIOA,RED_Pin,GPIO_PIN_SET)HAL_GPIO_WritePin(GPIOA, BUZZ_Pin, GPIO_PIN_SET); GPIOA, BUZZ_Pin, GPIO_PIN_SET menandakan LED berwarna merah dan buzz aktif , button HAL_GPIO_WritePin(GPIOB, BLUE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, BUZZ_Pin, GPIO_PIN_SET); LED berwarna biru dan buzz aktif. Looping berjalan terus-menerus untuk mendeteksi perubahan status input secara real-time.
HAL_GPIO_WritePin(GPIOA, BUZZ_Pin, GPIO_PIN_SET); LED berwarna biru dan buzz aktif. Looping berjalan terus-menerus untuk mendeteksi perubahan status input secara real-time.
4. Flowchart dan Listing Program[Kembali]
- Flowchart
- Listing Program
#include "main.c"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
uint8_t button_status = HAL_GPIO_ReadPin(GPIOB, BUTTON_Pin);
uint8_t ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin);
// Jika IR sensor aktif, nyalakan RGB merah
if (ir_status == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);
}
// Jika push button ditekan, nyalakan RGB biru
if (button_status == GPIO_PIN_SET)
{
HAL_GPIO_WritePin(GPIOB, BLUE_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);
}
HAL_Delay(100);
}
}
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)
{
Error_Handler();
}
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();
}
}
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
HAL_GPIO_WritePin(GPIOA, RED_Pin | BLUE_Pin | BUZZER_Pin, GPIO_PIN_RESET);
GPIO_InitStruct.Pin = RED_Pin | BLUE_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(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = BUTTON_Pin | IR_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
void Error_Handler(void)
{
__disable_irq();
while (1)
{
}
}
Percobaan 6 Kondisi 1
Buatlah rangkaian seperti gambar pada percobaan 6 dimana jika IR Sensor mendeteksi RGB Berwarna Merah hidup, Push Button ditekan RGB Berwarna Biru hidup dan jika salah satu input aktif atau keduanya aktif maka buzzer aktif
Tidak ada komentar:
Posting Komentar