Created
May 10, 2019 04:35
-
-
Save idriszmy/f86ae214d5136ab461437b4d9de4d830 to your computer and use it in GitHub Desktop.
Memaparkan status butang tekan dan mengawal LED pada pin 3 hingga 7 daripada arahan di Serial Monitor melalui komunikasi siri.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Fungsi kod: Memaparkan status butang tekan dan mengawal LED | |
pada pin 3 hingga 7 daripada arahan di Serial | |
Monitor melalui komunikasi siri. | |
Penulis: Idris Zainal Abidin | |
Blog: https://idrisz.my | |
Kemaskini: 10 Mei 2019 | |
*/ | |
#define BUTTON 2 // Butang tekan bersambung pada pin 2 | |
#define LED3 3 // LED L3 bersambung pada pin 3 | |
#define LED4 4 // LED L4 bersambung pada pin 4 | |
#define LED5 5 // LED L5 bersambung pada pin 5 | |
#define LED6 6 // LED L6 bersambung pada pin 6 | |
#define LED7 7 // LED L7 bersambung pada pin 7 | |
#define BUZZER 8 // Pembaz bersambung pada pin 8 | |
#define NOTE_C4 262 | |
#define NOTE_G4 392 | |
#define playMelody1() playTone(melody1, melody1Dur, 1) | |
#define playMelody2() playTone(melody2, melody2Dur, 1) | |
#define playMelody3() playTone(melody3, melody3Dur, 2) | |
int melody1[] = {NOTE_G4}; | |
int melody1Dur[] = {12}; | |
int melody2[] = {NOTE_C4}; | |
int melody2Dur[] = {12}; | |
int melody3[] = {NOTE_G4, NOTE_C4}; | |
int melody3Dur[] = {8, 8}; | |
boolean currentButtonState = false; // Status semasa butang tekan | |
boolean previousButtonState = false; // Status butang tekan sebelumnya | |
String command = ""; | |
void setup() | |
{ | |
pinMode(BUTTON, INPUT_PULLUP); // Tetapkan butang tekan sebagai pin masukan pullup | |
pinMode(LED3, OUTPUT); // Tetapkan LED3 sebagai pin keluaran | |
pinMode(LED4, OUTPUT); // Tetapkan LED4 sebagai pin keluaran | |
pinMode(LED5, OUTPUT); // Tetapkan LED5 sebagai pin keluaran | |
pinMode(LED6, OUTPUT); // Tetapkan LED6 sebagai pin keluaran | |
pinMode(LED7, OUTPUT); // Tetapkan LED7 sebagai pin keluaran | |
Serial.begin(9600); // Aktifkan komunikasi siri dengan kelajuan 9600 bit per saat | |
Serial.println("Memaparkan status butang tekan dan"); // Paparkan ayat di Serial Monitor | |
Serial.println("Masukkan arahan untuk mengawal LED:"); // Paparkan ayat di Serial Monitor | |
Serial.println(); // Enter | |
} | |
void loop() | |
{ | |
currentButtonState = digitalRead(BUTTON); // Membaca status butang tekan | |
if (currentButtonState != previousButtonState) { // Jika terdapat perubahan status | |
if (currentButtonState == LOW) { // Jika butang ditekan | |
Serial.println("Butang ditekan."); // Paparkan "Butang ditekan." di Serial Monitor | |
} | |
else { // Jika butang dilepaskan | |
Serial.println("Butang dilepaskan."); // Paparkan "Butang dilepaskan." di Serial Monitor | |
} | |
previousButtonState = currentButtonState; // Untuk pusingan seterusnya, status sebelumnya | |
// adalah status semasa | |
} | |
if (Serial.available()) { // Jika data diterima | |
delay(100); // Tunggu sebentar untuk pastikan semua data diterima | |
command = ""; // Kosongkan pemboleh ubah command | |
while (Serial.available()) { // Selagi terdapat data arahan | |
char inChar = (char)Serial.read(); // Baca dan simpan data ke pembolehubah inChar | |
command += inChar; // Gabungkan data-data untuk menjadi ayat arahan | |
} | |
// Bandingkan ayat arahan | |
if (command == "LED3 ON") { // Jika ayat arahan adalah "LED3 ON" | |
digitalWrite(LED3, HIGH); // Nyalakan LED L3 | |
Serial.println("LED L3 menyala."); // Paparkan status LED di Serial Monitor | |
playMelody1(); // Mainkan melodi untuk LED menyala | |
} | |
else if (command == "LED3 OFF") { // Jika ayat arahan adalah "LED3 OFF" | |
digitalWrite(LED3, LOW); // Padamkan LED L3 | |
Serial.println("LED L3 padam."); // Paparkan status LED di Serial Monitor | |
playMelody2(); // Mainkan melodi untuk LED padam | |
} | |
else if (command == "LED4 ON") { // Jika ayat arahan adalah "LED4 ON" | |
digitalWrite(LED4, HIGH); // Nyalakan LED L4 | |
Serial.println("LED L4 menyala."); // Paparkan status LED di Serial Monitor | |
playMelody1(); // Mainkan melodi untuk LED menyala | |
} | |
else if (command == "LED4 OFF") { // Jika ayat arahan adalah "LED4 OFF" | |
digitalWrite(LED4, LOW); // Padamkan LED L4 | |
Serial.println("LED L4 padam."); // Paparkan status LED di Serial Monitor | |
playMelody2(); // Mainkan melodi untuk LED padam | |
} | |
else if (command == "LED5 ON") { // Jika ayat arahan adalah "LED5 ON" | |
digitalWrite(LED5, HIGH); // Nyalakan LED L5 | |
Serial.println("LED L5 menyala."); // Paparkan status LED di Serial Monitor | |
playMelody1(); // Mainkan melodi untuk LED menyala | |
} | |
else if (command == "LED5 OFF") { // Jika ayat arahan adalah "LED5 OFF" | |
digitalWrite(LED5, LOW); // Padamkan LED L5 | |
Serial.println("LED L5 padam."); // Paparkan status LED di Serial Monitor | |
playMelody2(); // Mainkan melodi untuk LED padam | |
} | |
else if (command == "LED6 ON") { // Jika ayat arahan adalah "LED6 ON" | |
digitalWrite(LED6, HIGH); // Nyalakan LED L6 | |
Serial.println("LED L6 menyala."); // Paparkan status LED di Serial Monitor | |
playMelody1(); // Mainkan melodi untuk LED menyala | |
} | |
else if (command == "LED6 OFF") { // Jika ayat arahan adalah "LED6 OFF" | |
digitalWrite(LED6, LOW); // Padamkan LED L6 | |
Serial.println("LED L6 padam."); // Paparkan status LED di Serial Monitor | |
playMelody2(); // Mainkan melodi untuk LED padam | |
} | |
else if (command == "LED7 ON") { // Jika ayat arahan adalah "LED7 ON" | |
digitalWrite(LED7, HIGH); // Nyalakan LED L7 | |
Serial.println("LED L7 menyala."); // Paparkan status LED di Serial Monitor | |
playMelody1(); // Mainkan melodi untuk LED menyala | |
} | |
else if (command == "LED7 OFF") { // Jika ayat arahan adalah "LED7 OFF" | |
digitalWrite(LED7, LOW); // Padamkan LED L7 | |
Serial.println("LED L7 padam."); // Paparkan status LED di Serial Monitor | |
playMelody2(); // Mainkan melodi untuk LED padam | |
} | |
else { | |
Serial.println("Arahan tidak sah."); // Arahan tiada dalam senarai | |
playMelody3(); // Mainkan melodi untuk arahan tidak sah | |
} | |
} | |
} | |
void playTone(int *melody, int *melodyDur, int notesLength) | |
{ | |
for (int i = 0; i < notesLength; i++) { | |
int noteDuration = 1000/melodyDur[i]; | |
tone(BUZZER, melody[i], noteDuration); | |
delay(noteDuration); | |
noTone(BUZZER); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment