Anda di halaman 1dari 6

Praktikum Mikrokontroler

Percobaan Pertama

Disusun Oleh :
Nama : Raihan Taufiqurahman
Kelas : 2 D3 ELIN A
NRP : 2321500006

PROGRAM STUDI D3 TEKNIK ELEKTRO INDUSTRI


POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
TAHUN 2023
Dasar Teori
Pada mikrokontroler ARM penggunaan I/O atau yang lebih dikenal dengan GPIO
merupakan suatu bagian dari mikrokontroller yang digunakan untuk input maupun output
yang berhubungan dengan interface tambahan. Pada masing-masing pin memiliki
kegunaan yang berbeda-beda hal ini tergantung dari penggunaan jenis perangkat device
STM32 yang digunakan. Maka perlu mengetahui datasheet dari MCU yang digunakan
sehingga dapat mengalokasikan pin-pin yang akan digunakan secara tepat.

GPIO merupakan kependekan dari General Purpose Input Output. GPIO adalah pin sinyal
digital yang tidak terikat pada fungsi tertentu. Hal ini merupakan keuntungan dimana
fungsinya dan sifat output atau inputnya dapat ditentukan sendiri oleh user pada waktu
digunakan.

GPIO secara umum dapat digunakan untuk :

1. Dapat diset menjadi input atau output.


2. Dapat diaktifkan ataupun dinonaktifkan.
3. Dapat digunakan untuk membaca input.
4. Dapat digunakan untuk menulis output.
5. Input dapat digunakan untuk interrupt request (IRQs)

Program
int main(void)
{
/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* MCU Configuration */

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */


SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */


MX_GPIO_Init();
/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
// penulisan menggunakan user label
If (HAL_GPIO_ReadPin(Push_Button_0_GPIO_Port,Push_Button_0_Pin) ==
GPIO_PIN_SET)
{ HAL_GPIO_WritePin(Relay_0_GPIO_Port,Relay_0_Pin,GPIO_PIN_SET);
}else
{ HAL_GPIO_WritePin(Relay_0_GPIO_Port,Relay_0_Pin,GPIO_PIN_RESET);
}
// penulisan menggunakan default HAL IO label
If (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9) == 1)
{ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,1);
}else
{ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,0);
}
}
Analisa

Pada percobaan ini yaitu tentang GPIO (General-Purpose Input Output) dimana kitaakan
mempelajari bagaimana menentukan pin-pin pada mikrokontroller menjadi output atau
input.
langkah pertama yang harus dilakukan adalah dengan mengkonfigurasi software yang
disesuaikan dengan hardware yang akan dipakai. Karena chip yang dipakai adalah
stm32f407vgtx maka yang perlu dilakukan adalah membuka software stm32CubeMX.

Setelah terbuka klik “New Project”

untuk programnya pada percobaan pertama adalah menguji on/off relay.

// penulisan menggunakan user label


If (HAL_GPIO_ReadPin(Push_Button_0_GPIO_Port,Push_Button_0_Pin) ==
GPIO_PIN_SET)
{ HAL_GPIO_WritePin(Relay_0_GPIO_Port,Relay_0_Pin,GPIO_PIN_SET);
}else
{ HAL_GPIO_WritePin(Relay_0_GPIO_Port,Relay_0_Pin,GPIO_PIN_RESET);
}

Terdapat 2 contoh penulisan yang pertama dengan menggunakan user label dimana pada
penulisan ini menggunakan penamaan yang telah diinisialisasi pada software
stm32CubeMX

If (HAL_GPIO_ReadPin(Push_Button_0_GPIO_Port,Push_Button_0_Pin) ==
GPIO_PIN_SET)
{ HAL_GPIO_WritePin(Relay_0_GPIO_Port,Relay_0_Pin,GPIO_PIN_SET);
}else
{ HAL_GPIO_WritePin(Relay_0_GPIO_Port,Relay_0_Pin,GPIO_PIN_RESET);
}
Pada syntax ini menggunaan if/else statement dimana pada syntax ini mensetting pin push
button 0, Jika tombol push ditekan dibaca sebagai (GPIO_PIN_SET), pin keluaran
Relay_0_Pin dari port Relay_0_GPIO_Port diatur ke high (1) diatur sebagai
(GPIO_PIN_SET). Jika tombol push button 0 tidak ditekan, pin output relay 0 diatur ke
low (0) diatur sebagai (GPIO_PIN_RESET).

Pada penulisan kedua menggunakan HAL I/O Label


Pada penulisan ini dengan menggunakan inisialisasi dari pin input/output microkontroler
yang telah diinisialisasi pada stm32CubeMX

// penulisan menggunakan default HAL IO label


If (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9) == 1)
{ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,1);
}else
{ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,0);
}

Pada syntax ini Push button 0 diinisialisasi dengan pin 9 dan output relay 1 diinisialisasi
dengan pin 1, ketika pin 9 bernilai 1 (high) maka output relay 0 pada pin 1 akan bernilai 1 (high),
jika pin 9 bernilai 0 (low) maka output relay 0 pada pin 1 akan bernilai 0 (low)

Pada percobaan yang selanjutnya adalah dengan menambahkan perintah delay() dimana ketika
push botton ditekan maka relay akan menyala namun setelah push botton dilepas lampu led masih
mendelay untuk offnya untk programnya adalah sebagai berikut :

If (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9) == 1)
{ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,1);
{ HAL_Delay(1000); // delay berfungsi sebagai pencegah bouncing
}else
{ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,0);
}

Pada syntax ini diatur delay (1000 ms) dimana Ketika Push button 0 diinisialisasi dengan
pin 9 dan output relay 1 diinisialisasi dengan pin 1, ketika pin 9 bernilai 1 (high) maka output relay
0 pada pin 1 akan bernilai 1 (high), jika pin 9 bernilai 0 (low) maka output relay 0 pada pin 1 akan
bernilai 0 (low) jika sudah melewati 1000 ms ( 1detik) pada modul praktikum nilai delay harus
disetting >500 ms agar tidak terjadi kerusakan.

{ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,1); } // Relay 2 on motor reverse


{ HAL_GPIO_WritePin(GPIOE,GPIO_PIN_0,0); } // Relay 1 off
{ HAL_Delay(1000);} // Delay 1 detik
}

Kesimpulan
1. GPIO merupakan suatu bagian dari mikrokontroller yang digunakan untuk input
maupun output yang berhubungan dengan interface tambahan. Pada masing-
masing pin memiliki kegunaan yang berbeda-beda hal ini tergantung dari
penggunaan jenis
2. Konfigurasi antara aplikasi dan modul praktikum harus sesuai agar bisa saling
terkoneksi
3. Inisialisasi input dan output bisa dilakukan dengan 2 cara yaitu menggunakan user
label atau menggunakan HAL I/O label

Anda mungkin juga menyukai