ESP32 Project 2 : Digital Inputs & Ouputs
- Faiza Zuma

- Feb 13, 2022
- 6 min read
Updated: Feb 20, 2022
Hello, balik lagi di sini another part of simple project using ESP32. So dalam project kali ini kita akan menggunakan ESP32 board untuk memahami konfigurasi untuk menggunakan fungsi Inputs dan Ouputs secara bersamaan. Dengan mengerjakan project ini diharapkan kita dapat mengerti cara membaca dan menulis suatu program serta mengerti mengenai ESP32 GPIO dengan menggunakan ESP32 dan Arduino IDE. Simplenya kita kan menyusun rangkaian dengan push button sebagai input dan menggunakan LED Red Light sebagai output. LED Red Light akan menyala saat kita menekan Push Button dan High Status akan terbaca pada ESP32 GPIO

Sebelum memulai membuat project ini, pastikan kita sudah memenuhi semua prerequisites yang ada dari mulai menyiapkan alat dan bahan yang diperlukan sampai set up ESP32 seperti yang sudah disebutkan di artikel sebelumnya
Componect Required
Berikut adalah list komponen yang diperlukan dalam project kali ini:
ESP32 (read Best ESP32 Dev Boards)
RED LED
330 Ohm Resistor
Push Button
10k Ohm Resistor
Breadboard
Jumper wires
Kita disini akan menggunakan digital input pin dari ESP32 untuk membaca logical high dan low State dengan menggunakan fungsi pinMode dari Arduino IDE. So kita mulai dari Pinout ESP32 lalu dilanjut dengan circuit diagram dari push button dan terakhir bagian penjelasan dari program.
Schematic and Pinout
Setelah semua prerequistes terpenuhi kita lanjutkan pembuatan project dengan memahami GPIO Schematic dan Pinout ESP32 yang akan digunakan. Saat ini kita akan menggunakan ESP32 30 pin.

Oke, sekarang kita akan langsung praktek dengan mengkoneksikan push button dengan GPIO pin dan LED pada pin lainnya.
Seperti yang terlihat diatas, kita bisa memakai GPIO15 untuk koneksi push button dan GPIO022 untuk koneksi LED Red. Sebanarnya kita bisa menggunakan hampir semua GPIO sebagai digital input dan output kecuali beberapa GPIO yang memang kegunaannya hanya input pins.

ESP32 Development Board akan mengeluarkan output melalui GPIO 5 di mana dihubungkan dengan kutub positif (Anoda) LED sehingga LED akan menyala (dengan tegangan 3.3 V). Jika lupa bagian mana yang merupakan kutub positif dan negatif, bisa dibedakan dengan cara melihat kaki LED. Kaki LED yang paling panjang merupakan kutub positif dan kaki yang lebih pendek merupakan kutub negatif
Dapat dilihat pada diagram di atas, dapat dilihat GPIO 5 terkoneksi dengan anode pin dari LED Red dan pin lainnya dari LED Red terkoneksi dengan ground melewati resistor 330 ohm. Ingat bahwa arus listrik mengalir dari kutub positif ke kutub negative atau kutub positif ke ground. Resistor ditambahkan supaya arus tidak terlalu besar. Apabila arus terlalu besar, LED akan menjadi panas.
Selanjutnya push button terminal satu akan terkoneksi dengan 3.3 volts dari ESP32 dan terminal lain akan akan terkoneksi dengan GPIO 4 dan resistor 10k ohm. Resistor akan terkoneksi pada ground sehingga saat pushbutton tidak tertekan logic low akan terbaca pada GPIO 4 atau push button akan ada pada keadaan low state dan ketika push button tertekan, logic akan terbaca high pada GPIO 4. Jadi akan terbaca dua states dari push button yakni turn on and turn off.
Hati-hati dalam merangkai karena bisa menyebabkan board ESP32 menjadi panas sehingga bisa mengurangi waktu pemakaian ESP32 atau membuatnya meleleh.
ESP32 Control Digital Outputs
Seperti yang sudah dikatakan sebelumnya kita perlu mengatur LED dengan meggunakan GPIO jika ingin dijadikan output. Dengan menggunakan fungsi pinMode() seperti dibawah. Berdasarkan penjelasan sebelumnya mengenai konfigurasi ESP32 IO untuk menggunakan GPIO secara efisioen.
pinMode(GPIO, OUTPUT);Untuk mengontrol digital ouput kita hanya perlu menggunakan fungsi digitalWrite(), itu akan menerima as argument, GPIO (int Number) akan merefer ke state antara High atau Low.
digitalWrite(GPIO, STATE);ESP32 Read Digital Inputs
untuk membaca data digital di ESP32 board kita perlu mengatur GPIO yang dikehendaki sebagai Input, dengan menggunakan fungsi pinMode(). Dengan seperti ini akan terkoneksi push button as input device pada ESP32.
pinMode(GPIO, INPUT);digitalRead(GPIO);Arduino Sketch Code
Gunakan kode dan uploud code ke ESP32 untuk mengaktifkan rangkaian.
// Complete Instructions: https://RandomNerdTutorials.com/esp32-digital-inputs-outputs-arduino/
// set pin numbers
const int buttonPin = 4; // the number of the pushbutton pin
const int ledPin = 5; // the number of the LED pin
// variable for storing the pushbutton status
int buttonState = 0;
void setup() {
Serial.begin(115200);
// initialize the pushbutton pin as an input
pinMode(buttonPin, INPUT);
// initialize the LED pin as an output
pinMode(ledPin, OUTPUT);
}
void loop() {
// read the state of the pushbutton value
buttonState = digitalRead(buttonPin);
Serial.println(buttonState);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH
if (buttonState == HIGH) {
// turn LED on
digitalWrite(ledPin, HIGH);
} else {
// turn LED off
digitalWrite(ledPin, LOW);
}
}terdapat percabangan dengan 2 kondisi:
Jika buttonState HIGH atau push button ditekan, maka LED akan menyala (akan bertegangan tinggi)
Jika buttonState LOW atau push button tidak ditekan, maka akan mematikan LED.
Setelah kode di compile dan diuploud ke ESP32 maka hasilnya akan seperti dibawah.

Project 2 with More Complex Version
Pada versi ini kita akan membuat Project ESP32 Digital Input dan Ouput dengan rangkaian yang lebih kompleks dan komponen yang lebih banyak. Kita akan membuat dengan menggunakan 3 mode yang meliputi 3 push button dan 2 LED Red dengan mode pertama yaitu menekan push button A akan menyalakan LED Red A, kemudia yang kedua menekan push button B akan menyalakan LED Red B dan mode terakhir dengan menekan push button 3 akan menyalakan kedua LED Red.
Component Required
Alat dan komponen pada versi kedua ini tidak jauh berbeda dari versi sebelumnya, hanya ini jumlah komponennya yang diperbanyak
ESP32 Development Board (1 buah)
Breadboard (2 buah breadboard 830 titik an 2)
LED (2 buah)
Resistor 330 Ohm (2 buah)
Resistor 10K Ohm (3 buah)
Push button (3 buah)
Kabel male to male (10 buah)
Micro USB Cable (1 buah)
Laptop/komputer yang terdapat Aplikasi Arduino IDE (sudah terinstall package board ESP32)
Step selanjutnya kurang lebih sama seperti versi sebelumnya dan kemudian rangkaian akan dirangkai seperti yang ada dibawah ini

Sebenarnya skema rangkaian pada versi 2 ini tidak jauh berbeda dengan versi yang sebelumnya telah di buat, hanya sedikit berbeda pada jumlah komponen yang ada di dalamnya. Pada versi ini terdapat 2 LED Red dan 3 push button yang masing -masing akan dihubungkan ke GPIO ESP32 yang sesuai dengan menggunakan cable jumper (male to male). Pertama-tama kita akan menghubungkan LED Red A dan B ke GPIO berurut pada GPIO 5 dan GPIO 18 melalui cable jumper kemudia dihubungkan dengan Resistor 330 ohm lalu ke ground yang ada di GPIO ESP32.
Selanjutnya push button A, B dan C terminal satu akan terkoneksi dengan 3.3 volts dari ESP32 dan terminal lain akan akan terkoneksi pada GPIO dengan berurut dengan GPIO 23, 4 dan 21 serta terkoneksi juga dengan resistor 10k ohm pada masing-masing push buttonnya. Resistor akan terkoneksi pada ground sehingga saat push button tidak tertekan logic low akan terbaca pada masing-masing GPIO atau push button akan ada pada keadaan low state dan ketika push button tertekan, logic akan terbaca high pada masing-masing GPIO. Total akan ada 3 mode yang
Hati-hati juga dalam merangkai karena bisa menyebabkan board ESP32 menjadi panas sehingga bisa mengurangi waktu pemakaian ESP32 atau membuatnya meleleh.
Arduino Sketch Code
Gunakan sedikit berbeda dengan versi sebelumnya karena ada sedikit modifikasi dan tambahan.
// Complete Instructions: https://RandomNerdTutorials.com/esp32-digital-inputs-outputs-arduino/
// define & set pin numbers
const int ledRed1 = 5; //number of GPIO pin
const int ledRed2 = 18;
const int pushButton1 = 23;
const int pushButton2 = 4;
const int pushButton3 = 21;
// variable for storing the pushbutton status
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
void setup() {
Serial.begin(115200);
// initialize the pushbutton pin as an input
pinMode(pushButton1, INPUT);
pinMode(pushButton2, INPUT);
pinMode(pushButton3, INPUT);
// initialize the LED pin as an output
pinMode(ledRed1, OUTPUT);
pinMode(ledRed2, OUTPUT);
}
void loop() {
// read the state of the pushbutton value
buttonState1 = digitalRead(pushButton1);
Serial.println(buttonState1);
buttonState2 = digitalRead(pushButton2);
Serial.println(buttonState2);
buttonState3 = digitalRead(pushButton3);
Serial.println(buttonState3);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH
if (buttonState3 == HIGH) {
// button 3 pressed, both lamp will turn on
digitalWrite(ledRed1, HIGH);
digitalWrite(ledRed2, HIGH);
} else {
// button 3 not pressed
if (buttonState1 == HIGH) {
// only button 1 pressed, only led 1 turn on
digitalWrite(ledRed1, HIGH);
} else {
// button 1 and 3 not pressed
digitalWrite(ledRed1, LOW);
}
if (buttonState2 == HIGH) {
// only button 2 pressed, only led 2 turn on
digitalWrite(ledRed2, HIGH);
} else {
// button 2 and 3 not pressed
digitalWrite(ledRed2, LOW);
}
}
}
}terdapat percabangan dengan 3 kondisi:
Pertama yaitu menekan push button A akan menyalakan LED Red A,
Kedua menekan push button B akan menyalakan LED Red B
Mode terakhir dengan menekan push button 3 akan menyalakan kedua LED Red.
Setelah kode di compile dan diuploud ke ESP32 maka hasilnya akan seperti dibawah.
MODE 1

MODE 2

MODE 3

FAIZA AQIELA ZUMA
18220059



Comments