Project#2 ESP32 : Digital Input Output
Setelah sebelumnya kita telah mencoba menggunakan ESP32 untuk pertama klainya, mulai dari mengenal ESP32, men-setup ESP32, dan mencoba menjalankan program sederhana pada ESP32. Kali ini kita akan mencoba bagaimana cara menggunakan pin antarmuka Input-Output pada ESP32 yaitu GPIO, untuk mengendalikan lampu LED. kita akan mencoba membuat ESP32 membaca input dari suatu saklar (push button) untuk mengendalikan lampu LED sebagai outputnya. Tetapi sebelum itu, kita harus mengenal terlebih dahulu GPIO pada ESP32.
Input Output ESP32
ESP32 memiliki pin Input dan Output sebagai antarmuka untuk berkomunikasi dengan dunia luar. Pin ini disebut sebagai General Purpose Input Output (GPIO).
Antarmuka Input Output pada ESP32, terdiri dari:
- 18 buah kanal Analog-to-Digital Converter (ADC)
- 3 buah antarmuka Serial-Parallel Interface (SPI)
- 3 buah antarmuka UART
- 2 buah antarmuka I2C
- 16 kanal output PWM
- 2 Digital-to-Analog Converter (DAC)
- 2 buah antarmuka I2S
- 10 buah GPIO Capacitive Sensing
Nah pada Project ESP32 kita dan seterusnya menggunakan ESP32 DEVKIT V1 DOIT dengan 36 pin, dengan sususan pin default seperti berikut

GPIO 34 35 36 39 adalah GPI (Pin khusus utuk input), jadi mereka tidak bisa dijadikan sebagai pin output
GPIO bisa digunakan untuk menerima sinyal input digital maupun analog, dan juga mengeluarkan sinyal output digital maupun analog. Pada sinyal digital berarti hanya ada dua kondisi, yaitu OFF (0 Volt) dan ON (3,3 Volt). Sinyal analog memiliki besaran yang bukan hanya ON dan OFF saja, tetapi ada nilai lain di antara kondisi ON dan OFF. Sebagai contoh output analog adalah untuk meredupkan lampu. dan inilah yang akan kita coba pada Project 2 kali ini.
Komponen
- ESP32 DEVKIT V1
- PC atau Laptop
- Kabel USB to MicroUSB
- Breadboard
- Saklar (Push Button)
- LED
- Resistor 330 Ohm & 10K Ohm
- Jumper Wire Male to male, Male to female, Female to female
- Arduino IDE
Project#2.0
Pada project 2.0 kita hanya akan menggunakan 1 LED sebagai ouput dan 1 push button sebagai input. Dimana ketika button push ditekan LED akan menyala, dan ketika push button dilepas, maka LED akan mati.
Skema Rangkaian
Berikut ini adalah skema rangkaian untuk project 2 ini dimana ESP32 menerima input dari push button untuk menghidupkan LED ketika ditekan. dan LED sebagai outputnya, menyala ketika menerima inputan untuk ON dari push button.


Program
Pertama kita harus melakukan setup untuk men-set push button sebgai input dan LED sebagai ouput pada GPIO 4 dan 5.

setelah melakukan setup, makan selanjutnya ke main programnya seperti berikut.

setelah dipastikan program benar selanjutnya lakukan proses verify/compile prorgam, dan kemudia upload ke ESP32.
Eksperimen dan Demo
setelah program berhasil diupload, sekarang waktunya mencobanya


Project#2.1
Nah pada project 2.1 ini kita akan sedikit memodifikasi dengan mengunakan 3 warna LED dan 2 push button. Button 1 berfungsi untuk menghidupkan 3 lampu dengan delay bergantian. dan button 2 berfungsi untuk mematikan 3 lampu dengan delay.
Skema rangkaian
Berikut ini adalah skema rangkaian untuk project 2.1. Kita menggunakan 3 LED pada GPIO 25, 26, dan 27 sebagai output. Dan menggunakan 2 push button pada GPIO 4 dan 17.



Code Program
- Melakukan inisialisasi variabel untuk LED 1,2,3 dan button push 1,2 sesuai dengan GPIO pada skema.
- Buat variabel state untuk button dengan nilai 0.
- Setup LED 1,2,3 sebagai OUTPUTdan Button sebagai INPUTdengan fungsi pinMode( ) .

4. Buat program utama dengan loop( )
5. Membaca INPUT dari button dengan fungsi digitalRead( )
6. buat code 2 kondisi dengan if, jika button 1 ditekan (HIGH) maka LED 1,2,3 akan menyala berurutan dengan delay 300 ms. dan jika button 2 ditekan (HIGH) maka LED akan mati secara berurutan dengan delay 300 ms.

Setelah itu lakukan verify / compile dan upload program ke ESP32.
Eksperimen & Demo
Setelah berhasil diupload, sekarang mari kita coba.


Project#2.2
Pada project 2.2 ini kita akan sedikit memodifikasi lagi dengan mengunakan 3 warna LED dan 3 push button. Ketika di tekan button 1 menghidupkan LED 1 , dan ketika dilepas akan mati, begitu juga dengan button 2 dan 3. Sebenarnya ini sama saja dengan Project 2.2 tapi saya mencoba untuk menambah jumlah button push dan LED nya.
Skema Rangkaian
Untuk skema rangkaian untuk project 2.2 kita menggunakan 3 LED pada GPIO 25, 26, dan 27 sebagai output. Dan menggunakan 3push button pada GPIO 4, 17, dan 18.



Code Program
- Melakukan inisialisasi variabel untuk LED 1,2,3 dan button push 1,2,3 sesuai dengan GPIO pada skema.
- Buat variabel state untuk button 1, 2, 3dengan nilai 0.

3. Setup LED 1,2,3 sebagai OUTPUTdan Button 1,2,3 sebagai INPUTdengan fungsi pinMode( ) .

4. Buat program utama dengan loop( )
5. Membaca INPUT dari button dengan fungsi digitalRead( ) untuk button 1, 2, 3.

6. buat 3 kondisi if & else if untuk 3 button. dimana ketika button ditekan makan LED yang sesuai akan menyala.

setelah itu lakukan verify / compile dan upload program ke ESP32.
Eksperimen & Demo




Analisis
Untuk melakukan input output pada ESP32 kita harus melihat dahulu apakah GPIO tersebut dapat digunakna untuk input / output, karena sebenernya mereka sudah memiliki default yang ditetapkan. setelah itu perlu dilakukan setup GPIO mana yang akan menjadi input ataupun output. Pada percobaan di atas ESP32 membaca digital input, dimana ketika push button ditekan (HIGH) makan LED akan dibuat menjadi HIGH sesuai program yang dibuat.
Untuk membaca input digital dari push button, dapat menggunakan fungsi digitalRead( ) dan dia akan membaca status buttonya apakah HIGH atau LOW. dan untuk menghasilkan output pada LED dapat menggunakan fungsi digitalWrite( ) untuk mengubah status LOW LED menjadi HIGH dan sebaliknya tergantung inputnya. dan kita dapat membuat lebih dari satu input dan output dengan berbagai variasi pada ESP32 .
