GPIO (General Purpose Input Output) Menggunakan Push Button dan Relay
I. Tujuan
Mahasiswa dapat mengerti fungsi tentang GPIO pada ARM
Mahasiswa dapat melakukan konfigurasi GPIO pada ARM
Mahasiswa dapat mengoperasikan GPIO pada ARM
III. Peralatan
1. Modul ARM STM32F407VGTx
2. Software STM32 Cube MX
3. Software Keli uVision 5
4. Kabel ST-LINK
5. Adaptor 5 Volt dc
V. Langkah Percobaan
1. Menyiapkan peralatan yang digunakan untuk Praktikum.
2. Membuat program pada software.
3. Memasukkan program yang telah dibuat pada modul percobaan.
4. Mengambil data percobaan.
VI. Project
INPUT OUTPUT
PUSH BUTTON RELAY
PE.8 – PE.15 PE.0 – PE.7
VII. Flowchart
START
INISIALISASI
PE.8==1?
N PE.0 = 0 PE.9==1?
N PE.1 = 0 N
PE.15==1? PE.7 = 0
? ?
Y Y Y
PE.0 = 1 PE.1 = 1 PE.7 = 1
END
VIII. Program
#include "stm32f4xx_hal.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
while (1)
{
/* USER CODE END WHILE */
if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_8)==1)
{
HAL_Delay(10);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_0,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_0,0);
if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_9)==1)
{
HAL_Delay(10);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_1,0);
if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_10)==1)
{
HAL_Delay(10);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_2,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_2,0);
if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_11)==1)
{
HAL_Delay(10);
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_3,0);
if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_12)==1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,0);
if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_13)==1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,0);
if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_14)==1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_6,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_6,0);
if (HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_15)==1)
{
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_7,1);
}
else
HAL_GPIO_WritePin(GPIOE,GPIO_PIN_7,0);
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
Dan seterusnya
IX. Analisa
Pada percobaan GPIO kali ini dilakukan 4 percobaan, yaitu Percobaan Relay dan Button
(Koneksi), Percobaan Relay dan Button (Operasi), Percobaan Debounching menggunakan
TooglePin, dan Aplikasi dari Relay dan Button. Relay diletakkan pada PORT E dalam PIN
0-7, sedangkan button berada pada PORT E dalam PIN 8-15.
Pada percobaan Relay dan Button (Operasi), Button difungskan sebagai input dan Relay
sebagai outputnya. Program yang dibuat yaitu apabila push button 1 ditekan maka relay 1
akan menyala, dan setelah tombol dilepas relay akan mati, dan seterusnya. Dari program
tersebut, untuk IF yang pertama, apabila push button 1 ditekan, maka relay 1 akan nyala, dan
setelah tombol dilepas, maka relay akan mati karena pada program terdapat perintah ELSE.
Untuk IF yang kedua, relay 2 akan nyala jika Push Button 2 ditekan. Dan seterusnya sesuai
dengan program yang dibuat.
Berdasarkan program yang telah dibuat, ReadPin berguna untuk memfungsikan port
tersebut sebagai input. WritePin berguna untuk memfungsikan port tersebut sebagai output,
dapat diatur sesuai keinginan dan kebutuhan yaitu 1 dan 0, dimana difungsikan logika 1
apabila output mempunyai karakteristik Active High, sedangkan logika 0 apabila output
memiliki sifat Active Low.
Pada inisialisasi ARM, pada port configuration, dapat diatur kecepatan dari frekuensi
input (push button), karena pada hardware dari push button memiliki rugi-rugi mekanik,
sehingga saat Push Button ditekan, maka ripple mekanik tersebut dapat membuat ARM
membaca bahwa Push Button ditekan beberapa kali, yang menyebabkan relay juga hidup
beberapa kali, inilah yang dinamakan efek bouncing, maka dari itu pada program perlu
ditambah delay agar pembacaan Push Button pada ARM adalah sinyal yang sudah melewati
ripple akibat rugi-rugi mekanik dari Push Button tersebut (Program debouncing). Pada
modul, push button yang masih memiliki efek bouncing yaitu push button 1 dan push button
3. Untuk menghilangkan efek bouncing, tidak lagi digunakan ReadPin ataupun WritePin,
melainkan TooglePin, yaitu apabila push button 1 ditekan sekali, relay akan menyala, dan
apabila ditekan untuk kedua kali, relay akan mati, yang merupakakan gabungan dari
ReadPin dan Write Pin.
Pada percobaan Aplikasi Button dan Relay dibuat program yang apabila pusg button 1
ditekan, maka relay 1 akan menyala, kemudian jeda 1 detik relay 2 menyala, begitu
seterusnya sampai relay 8. Setelah itu apabila push button 2 yang ditekan, maka relay 8 akan
mati, kemudian jeda 1 detik relay 7 mati, begitu seterusnya sampai relay 1.
X. Kesimpulan
ReadPin digunakan untuk memberikan instruksi input.
WritePin digunakan untuk memberikan instruksi output. Output dapat diatur 0 (active
low) atau 1 (active high).
TooglePin merupakan gabungan dari ReadPin dan WritePin, yaitu apabila ditekan sekali
maka akan Active High dan apabila ditekan untuk kedua kali, akan Active Low.
Pada Hardware dari Push button memliki rugi-rugi mekanik yang dapat memberikan
ripple (efek bouncing), sehingga untuk mengatasinya dapat menuliskan program delay
(program debouncing) atau memasang sebuah kapasitor yang diparalel dengan push
button.