Cari Blog Ini

LA M3 MIKRO

 






1. Prosedur [kembali]

  • 1 Rangkai komponen sesuai percobaan

    2. Buat program menggunakan Arduino Menggunakan STM 32

    3. Compile program yang telah dibuat lalu Upload ke dalam Arduino Uno.

    4. Saat Proses Penguploadan porgram, lepas pin rx tx pada arduino master dengan arduino slave

    5. Uji coba program pada rangkaian percobaan 

    6. Selesai

 

2. Hardware dan Diagram Blok [kembali]
a. Hardware
  • Hardware










3. Rangkaian Simulasi dan Prinsip Kerja [kembali]









Prinsip Kerja:

Pada percobaan 1 kondisi  ini kita menggunakan komunikasi data UART yang mana mengirimkan data secara serial tanpa mengikuti clock menggunakan pin Rx dan pin Tx. disini kita menggunakan push button pull down (maksud nya push button aktif ketika logika nya 1) sebagai input dari master pada arduino. dan slave (penerima) arduino yang mana nantinya output dapat dilihat pada hidup atau tidak led nya. Ketika 1 dipswitch dihidupkan maka 1 led hidup sedangkan 4 dipswitch dihidupkan maka 3 led akan hidup.

4. Flowchart dan Listing Program [kembali]


b. Listing Program
               

#include "main.h"


UART_HandleTypeDef huart1;

uint8_t buttonStates[5] = {'0', '0', '0', '0', '\n'};


/* Fungsi Prototipe */

void SystemClock_Config(void);

static void MX_GPIO_Init(void);

static void MX_USART1_UART_Init(void);

void Error_Handler(void);


int main(void)

{

HAL_Init();

SystemClock_Config();

MX_GPIO_Init();

MX_USART1_UART_Init();


while (1)

{

buttonStates[0] = (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_1) == GPIO_PIN_RESET) ? '1' : '0';

buttonStates[1] = (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_2) == GPIO_PIN_RESET) ? '1' : '0';

buttonStates[2] = (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_3) == GPIO_PIN_RESET) ? '1' : '0';

buttonStates[3] = (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) == GPIO_PIN_RESET) ? '1' : '0';


HAL_UART_Transmit(&huart1, buttonStates, 5, 100); // 4 data + '\n'

HAL_Delay(100);

}

}


void SystemClock_Config(void)

{

RCC_OscInitTypeDef RCC_OscInitStruct = {0};

RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};


/** Configure the main internal regulator output voltage **/

__HAL_RCC_PWR_CLK_ENABLE();


/** Initializes the RCC Oscillators **/

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_USART1_UART_Init(void)

{

huart1.Instance = USART1;

huart1.Init.BaudRate = 9600;

huart1.Init.WordLength = UART_WORDLENGTH_8B;

huart1.Init.StopBits = UART_STOPBITS_1;

huart1.Init.Parity = UART_PARITY_NONE;

huart1.Init.Mode = UART_MODE_TX_RX;

huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;

huart1.Init.OverSampling = UART_OVERSAMPLING_16;


if (HAL_UART_Init(&huart1) != HAL_OK)

{

Error_Handler();

}

}


static void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};


/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOA_CLK_ENABLE();


/* Configure GPIO pins : PA1 PA2 PA3 PA4 */

GPIO_InitStruct.Pin = GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4;

GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

GPIO_InitStruct.Pull = GPIO_PULLUP; // Tombol aktif LOW


HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}


void Error_Handler(void)

{

__disable_irq();

while (1)

{

// Bisa nyalakan LED error di sini

}

}


#ifdef USE_FULL_ASSERT

void assert_failed(uint8_t *file, uint32_t line)

{

// Tambahkan debug jika diperlukan

}

#endif


5. Video Demo [kembali]






6. Analisa [kembali]




7. Download file [kembali]
Download video Demo klik disini
Download Datasheet LED klik disini
Download Datasheet Mikrokontroler STM32F103C8 [Download]
Download Datasheet Push Button [Download]

Tidak ada komentar:

Posting Komentar

Postingan Populer