Pada umumnya terdapat 2 jenis input output yang terlihat paling "sederhana" dan paling sering dibahas pada sebuah sistem mikrokontroler AVR, arduino maupun ESP 8266. Dari list dibawah ini, nomer 1 dan 2 akan kita praktekkan pada tulisan blog kali ini, bersama dengan adik - adik mahasiswa di jurusan teknik listrik vokasi unesa Surabaya.
Jenis Input Output :
- Digital Pin
- Analog Pin
- PWM
- Serial
- I2C
- SPI
- DIGITAL PIN
Digital pin ini merupakan hal yang paling dasar yang pertama kali harus dipraktekkan ketika memulai mikrokontroler sekelas arduino. Coba pembaca buka sketch dan akan menemukan example yang bernama "blink" yang merupakan coding untuk menyalakan dan mematikan LED internal pada bord arduino ( jenis apapun ) yang umumnya berada pada pin 13.
// inisialisasi digital pin LED_BUILTIN sebagai output.
pinMode(LED_BUILTIN, OUTPUT);
}
//the loop function muter terus
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // HIGH = Nyala
delay(1000); // Tunggu 1 detik
digitalWrite(LED_BUILTIN, LOW); // LOW = Mati
delay(1000); // Tunggu 1 detik
}
Dan kemudian perhatikan gambar ekuivalen dari sebuah Bit Input Output pada mikrokontroler, melalui tombol sebagai Input dan Led sebagai output .
Saya ingin membuat penekanan tombol switch tactile bereaksi terhadap led, dan tidak ingin menjadi on off seperti saklar biasa. Jadi saat tombol (aktif low / pull up) maka akan merubah status dari led nyala atau mati. Perhatikan script berikut dan akan saya bahas per bagian.
const int buttonPin = 9; // pin push button
const int ledPin = 13; // pin LED
int buttonState = 0; // variable status tombol
bool ledstate;
void setup() {
//Pin LED sebagai output
pinMode(ledPin, OUTPUT);
// tombol sebagai intput
pinMode(buttonPin, INPUT);
//status awal led mati
ledstate = false;
digitalWrite(ledPin, LOW);
Serial.begin(9600); //agar bisa dilihat pada terminal
}
void loop() {
// baca status tombol
buttonState = digitalRead(buttonPin);
// cek status tombol High atau Low
if (buttonState == HIGH) {
//nyalakan led dan ubah status led
if ( !ledstate){
digitalWrite(ledPin, HIGH);
ledstate =true;
//kirim serial
Serial.println("Kondisi led = Nyala");
}
//matikan led
else {
digitalWrite(ledPin, LOW);
ledstate = false;
Serial.println("Kondisi led = mati");
}
delay(200);
}
}
Dari script diatas, penjelasan perbagian bisa dilihat pada bagian script berwarna merah, dan yang paling utama adalah proses perubahan status boolean dari led status yang akan tersimpan sesuai kondisi terakhir dari led.
//nyalakan led dan ubah status led
if ( !ledstate){
digitalWrite(ledPin, HIGH);
ledstate =true;
//kirim serial
Serial.println("Kondisi led = Nyala");
}
//matikan led
else {
digitalWrite(ledPin, LOW);
ledstate = false;
Serial.println("Kondisi led = mati");
}
Terdapat perintah Serial.println yang bertujuan untuk melihat kondisi led pada serial monitor yang merupakan fasilitas debuging paling utama pada sketch arduino.
Pada tulisan selanjutnya akan saya bahas input analog yang sangat bermanfaat.
0 komentar:
Posting Komentar