Tutorial Belajar Arduino untuk Pemula part 15 : Toogle Swich

Assalamu’alaikum Warahmatullahi wabarakatuh, setelah berpusing pusing ria pada part sebelumnya kini kita akan berpusing pusing ria lagi,hehe pada part kali ini kita akan membuat sketch toogle switch, apa itu? simpelnya gini, kita tekan 1 kali pada push button maka led akan menyala terus, dan ketika kita tekan sekali lagi maka led akan mati terus. disini kita membandingkan logika sekarang (saat tombol ditekan) dengan logika sebelumnya(yang tersimpan), jika saat tombol ditekan lagikanya HIGH dan data yang tersimpan di memori adalah LOW tentu berarti kita akan menyalakan LED, namun jika jika saat tombol ditekan lagikanya HIGH dan data yang tersimpan di memori adalah HIGH berarti kita akan mematikan LED, lebih jelasnya silahkan dipelajari kode berikut:

//Button Press Detection - single message
int buttonPin = 7;
boolean currentState = LOW;//stroage for current button state
boolean lastState = LOW;//storage for last button state
void setup(){
pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT
Serial.begin(9600);//initialize Serial connection
}
void loop(){
currentState = digitalRead(buttonPin);
if (currentState == HIGH && lastState == LOW){//if button has just been pressed
Serial.println("pressed");
delay(1);//crude form of button debouncing
} else if(currentState == LOW && lastState == HIGH){
Serial.println("released");
delay(1);//crude form of button debouncing
}
lastState = currentState;
}

pada sketch diatas kita mendapati kode delay (1);
Penundaan ini dimasukkan untuk memberikan waktu agar nilai / logika pushbutton bisa terbaca secara sempurna / bahasa kerenya mengatasi debouncing

pada pemrograman kali ini kita juga memperkenalkan tipe data baru: boolean . Booleans digunakan untuk menyimpan 1 buah bit informasi, seperti benar / salah, on / off, 1/0, atau HIGH / LOW.

berikut contoh program dimana LED akan Hidup / mati saat Push Button ditekan lalu dilepas


int ledPin = 9;
int buttonPin = 2;
boolean currentState = LOW;//stroage for current button state
boolean lastState = LOW;//storage for last button state
boolean ledState = LOW;//storage for the current state of the LED (off/on)
void setup(){
pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT
pinMode(ledPin, OUTPUT);
Serial.begin(9600);//initialize Serial connection
}
void loop(){
currentState = digitalRead(buttonPin);
if (currentState == HIGH && lastState == LOW){//if button has just been pressed
Serial.println("pressed");
delay(1);//crude form of button debouncing
//toggle the state of the LED
if (ledState == HIGH){
digitalWrite(ledPin, LOW);
ledState = LOW;
} else {
digitalWrite(ledPin, HIGH);
ledState = HIGH;
}
}
lastState = currentState;
}

Dalam kode di atas saya membuat sebuah variabel yang disebut “ledState” untuk menyimpan keadaan LED saat ini, maka setiap kali tombol ditekan, saya menggunakan digitalWrite untuk mengatur LED dan membuat logika baru di “ledState”.

jika kode diatas sudah faham sekarang kita akan mencoba menggunakan teknik toogle ini untuk mengganti Cahaya pada led RGB, berikut kodenya

//Button Press Detection - single message
//pin connections
int red = 9;
int green = 10;
int blue = 11;
int buttonPin = 7;
boolean currentState = LOW;//stroage for current button state
boolean lastState = LOW;//storage for last button state
int currentColor = red;//storage for current color
void setup(){
pinMode(buttonPin, INPUT);//this time we will set the pin as INPUT
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
Serial.begin(9600);//initialize Serial connection
digitalWrite(currentColor, HIGH);//initialize with currentColor on (full brightness)
}
void loop(){
currentState = digitalRead(buttonPin);
if (currentState == HIGH && lastState == LOW){//if button has just been pressed
Serial.println("pressed");
delay(1);//crude form of button debouncing
int nextColor = getNextColor(currentColor);
fader(currentColor, nextColor);
currentColor = nextColor;
}
lastState = currentState;
}
int getNextColor(int color){//helper function that gives us the next color to fade to
if (color == red) return green;
if (color == green) return blue;
if (color == blue) return red;
}
void fader(int color1, int color2){
for (int brightness=0;brightness<256;brightness++){
analogWrite(color1, 255-brightness);
analogWrite(color2, brightness);
delay(2);
}
}

dalam kode diatas Saya menambahkan fungsi pembantu untuk membantu menyederhanakan program saat memilih warna berikutnya.

int getNextColor(int color){
if (color == red) return green;
if (color == green) return blue;
if (color == blue) return red;
}

saya harap anda tidak pusing dengan deret kode diatas, jika ada pertanyaan silahkan ditanyakan, semoga tutorial kali ini dapat bermanfaat, wassalamu’alaikum warahmatullahi wabarakatuh

About Giri Wahyu Pambudi

Giri Wahyu Pambudi - Seorang Pemuda Desa yang berkeinginan ikut membangun Indonesia dengan Sedikit Ilmu yang dimiliki SMK N 2 Wonogiri lulus 2015 UNIV Negeri Yogyakarta lulus 2019 2019 - Sekarang Bekerja di SMK Gajah Mungkur 1 Wuryantoro, Wonogiri

Check Also

Cara Menggunakan / Mengakses Keypad menggunakan Arduino

Assalamu’alaikum teman – teman, kali ini kita akan belajar Arduino lagi, kali ini kita akan …

Tinggalkan Balasan