Skip to content

Instantly share code, notes, and snippets.

@idriszmy
Last active April 29, 2019 01:34
Show Gist options
  • Save idriszmy/4e93bdf23584aec140071120ba5037a9 to your computer and use it in GitHub Desktop.
Save idriszmy/4e93bdf23584aec140071120ba5037a9 to your computer and use it in GitHub Desktop.
Membaca isyarat pada butang tekan di Maker UNO, dan mengawal LED. Aplikasi: Tekan sekali untuk nyalakan LED. Tekan lagi sekali untuk kelipkan LED. Tekan lagi sekali untuk padamkan LED.
/*
Fungsi kod: Membaca isyarat pada butang tekan dan mengawal
LED.
Penulis: Idris Zainal Abidin
Blog: https://idrisz.my
Kemaskini: 27 Mac 2019
*/
#define LED 9 // LED bersambung pada pin 9
#define BUTTON 2 // Butang tekan bersambung pada pin 2
int ledMode = 0; // Pemboleh ubah mod LED
int ledState = 0; // Pemboleh ubah isyarat LED
long previousMillis = 0; // Pemboleh ubah mili saat sebelumnya
int interval = 500; // Pemboleh ubah selang masa
void setup()
{
pinMode(LED, OUTPUT); // Tetapkan pin LED sebagai pin keluaran.
pinMode(BUTTON, INPUT_PULLUP); // Tetapkan pin BUTTON sebagai pin masukan pullup.
}
void loop()
{
// Membaca isyarat masukan pada pin butang tekan
if (digitalRead(BUTTON) == LOW) { // Jika butang tekan ditekan
ledMode++; // Menukar mod LED, dari 0 ke 1, 1 ke 2 dan 2 ke 0
if (ledMode == 3) {
ledMode = 0;
}
while (digitalRead(BUTTON) == LOW); // Tunggu butang tekan dilepaskan
delay(100); // Tunggu sekejap selepas butang tekan dilepaskan
}
switch (ledMode) { // Semak mod LED
case 0: // Jika mod LED adalah 0
digitalWrite(LED, LOW); // Mod 0 akan memadamkan LED
break;
case 1: // Jika mod LED adalah 1
digitalWrite(LED, HIGH); // Mod 1 akan menyalakan LED
break;
case 2: // Jika mod LED adalah 2
digitalWrite(LED, ledState); // Mod 2 untuk kelipkan LED
break;
}
// Proses kelipan LED
if (millis() - previousMillis > interval) {
ledState = !ledState;
previousMillis = millis();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment