Embedded System Project : Digital Input and Output

Galuh Dipa Bharata
3 min readFeb 6, 2021

--

Halooo, jadi kemarin aku sudah membuat project yang sederhana dengan penggunaan ESP32, yaitu membuat built-in LED di ESP32 menyala. Untuk project saat ini sebenarnya sama saja, namun sekarang pakai Push Button, jadi ketika Push Button di tekan lampu LED menyala, kalau di lepas mati.

Ini dia daftar komponen yang digunakan

  1. ESP32
  2. 5 mm LED
  3. resistor 30 Ohm
  4. Pushbutton
  5. resistor 10k Ohm
  6. Breadboard
  7. Jumper wires (male to male)
Komponen yang Saya gunakan

Skema yang digunakan dalam project ini dapat dilihat dibawah ini :

Skema Rangkaian

Dari skema tersebut ada yg namanya GPIO, GPIO atau General-Purpose Input/Output adalah salah satu fitur yg dimiliki oleh ESP32. Nah, masing-masing GPIO ini memiliki fungsi yg default, misal fungsi untuk terhubung ke sinyal analog kah, atau terhubung ke interface, dll.

Macam macam I/O interface di ESP32

Baik, masuk kebagian program yg dilakukan pada IDE Arduino,

Pertama kita harus tau dulu fungsi untuk memrogram ESP32, pertama dari PinMode. Kita harus memutuskan mana yg input, mana yg output.

pinMode(GPIO, OUTPUT);

Lalu ada fungsi digitalWrite(), yg akan menerima argumen, mulai dari nomor GPIO itu sendiri, statenya (bisa high atau low)

digitalWrite(GPIO, STATE);

Semua GPIOs dapat digunakan sebagai output, kecuali GPIO nomor 6 sampai 11, dan GPIO 34,35,36, dan 39 (hanya untuk input)

Lalu kita berhubungan dengan digital inputnya. Pertama untuk membaca inpput kita menggunakan kembali fungsi pinMode() namun dengan parameter input, lalu dibaca dengan digitalRead(). Contoh ada dibawah ini

pinMode(GPIO, INPUT);digitalRead(GPIO);

Semua GPIO yang ada di ESP32 dapat dibuat sebagai input, kecuali nomor 6 sampai 11.

Untuk Full Codenya dapat dilihat dibawah ini

// 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);
}
}

pada seti pin numbers, nomor GPIO yang diberikan variabel, nomor 4 untuk push button dan nomor 5 untuk LED pin. Status awal yang diberikan untuk pushbutton adalah 0.

Lalu masuk ke setup(), pin diberikan mode, yaitu sebagai input untuk pushbutton dan output untuk ledPin.

Setelah itu masuk ke loop() pertama membaca buttonstate awal ada pada nomor berapa (dalam hal ini 4) lalu masuk ke if statement, yaitu jika buttonState == HIGH (artinya ada arus yang mengalir) maka LED akan nyala, selain itu LED mati, menyalanya LED dengan perintah dari fungsi digitalWrite().

Ini adalah video saya dalam mengerjakan projek ini.

Dari projek ini saya mengulang kembali materi fisika semasa SMA mengenai listrik dan rangkaian listrik. Awalnya terdapat sedikit masalah, code sudah di upload namun lampu tetap tidak ingin menyala, ternyata ada kesalahan rangkaian yang dilakukan dan ada kerusakan di pushbuttonnya, setelah membenahi hal tersebut, akhirnya lampu dapat menyala seperti yang ada pada video.

Terimakasih!

Galuh Dipa Bharata
18219100

Embedded System Course,
Information System and Technology, Institut Teknologi Bandung.

--

--