Tugas Pendahuluan Modul 1 (Percobaan 6 Kondisi 1)




1. Kondisi
[Kembali]
    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 (Kondisi 1)

2. Gambar Rangkaian Simulasi [Kembali]
    A. Rangkaian


    B. Flowchart

    C. 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)

{

uint8_t ir_status = HAL_GPIO_ReadPin(GPIOB, IR_Pin);

uint8_t pb_status = HAL_GPIO_ReadPin(GPIOB, BUTTON_Pin);

if (ir_status == GPIO_PIN_SET && pb_status == GPIO_PIN_RESET) {

HAL_GPIO_WritePin(GPIOB, BLUE_Pin, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);

}

else if (ir_status == GPIO_PIN_RESET && pb_status == GPIO_PIN_SET) {

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, BLUE_Pin, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);

}

else if (ir_status == GPIO_PIN_SET && pb_status == GPIO_PIN_SET){

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, BLUE_Pin, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_SET);

}

else {

HAL_GPIO_WritePin(GPIOA, RED_Pin, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, BLUE_Pin, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOA, BUZZER_Pin, GPIO_PIN_RESET);


}

HAL_Delay(10);

}

}

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();

}


/** Initializes the CPU, AHB and APB buses clocks

*/

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();


/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOA, RED_Pin|GREEN_Pin|BUZZER_Pin, GPIO_PIN_RESET);


/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(BLUE_GPIO_Port, BLUE_Pin, GPIO_PIN_RESET);


/*Configure GPIO pins : RED_Pin GREEN_Pin BUZZER_Pin */

GPIO_InitStruct.Pin = RED_Pin|GREEN_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);


/*Configure GPIO pin : BLUE_Pin */

GPIO_InitStruct.Pin = BLUE_Pin;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(BLUE_GPIO_Port, &GPIO_InitStruct);


/*Configure GPIO pins : BUTTON_Pin IR_Pin */

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)

{

}

}


#ifdef USE_FULL_ASSERT

void assert_failed(uint8_t *file, uint32_t line)

{

}

#endif /* USE_FULL_ASSERT */


3. Video Simulasi [Kembali]

4. Prinsip Kerja [Kembali]
    Program ini berfungsi untuk membaca status sensor inframerah (IR) dan Push Button, kemudian mengontrol nyala LED berdasarkan kondisi input tersebut. Pertama, program membaca status sensor IR yang terhubung pada pin PB7 dan push button yang terhubung pada pin PB10Selanjutnya, program mengontrol LED berdasarkan kondisi sensor IR. Jika sensor IR mendeteksi objek (HIGH / GPIO_PIN_SET), maka LED merah dan buzzer dinyalakan secara bersamaan sehingga menghasilkan warna merah pada RGB LED dan Buzzer aktif. Sebaliknya, jika sensor IR tidak mendeteksi objek (LOW / GPIO_PIN_RESET), maka RGBLED dan Buzzer dimatikan. Selain itu, program juga mengontrol LED berdasarkan input dari push button. LED biru akan menyala atau mati sesuai dengan status push button. Jika push button aktif (HIGH / GPIO_PIN_SET), LED biru dan Buzzer menyala. Namun, jika push button tidak aktif (LOW / GPIO_PIN_RESET), LED biru dan Buzzer mati.

5. Link Download [Kembali]
Video Disini
Rangkaian Disini
Program Rangkaian Disini
Datasheet STM32F103C8T6 Disini

Komentar

Postingan populer dari blog ini

Modul 1: Gerbang Logika Dasar, Monostable Multivibrator, & Flip flop

Tugas Besar

Tugas Pendahuluan Modul 2 (Percobaan 1 Kondisi 21)