const int ledPin = 2;
unsigned long previousMillis = 0;
const long interval = 1000;
char pilih;
String getValue(String data, char separator, int index);
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Contoh:
// program_serial_monitor_input();
// program_led_blinking_nodelaay();
// program_parsing_data_lengkap();
}
void program_led_menyala() {
digitalWrite(ledPin, HIGH);
while (true);
}
// 2. LED menyala dengan jeda 2 detik
void program_led_menyala_jeda() {
digitalWrite(ledPin, HIGH);
delay(2000);
digitalWrite(ledPin, LOW);
while (true);
}
// 3. LED Blinking (menyala 3 detik, mati 3 detik)
void program_led_blinking() {
digitalWrite(ledPin, HIGH);
delay(3000);
digitalWrite(ledPin, LOW);
delay(3000);
}
// 4. LED Blinking tanpa delay (paling efisien)
void program_led_blinking_nodelaay() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (digitalRead(ledPin) == LOW) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
}
void program_serial_monitor_datadiri() {
Serial.println("NAMA\t: <TULIS NAMA KALIAN>");
Serial.println("KELAS\t: <TULIS KELAS KALIAN>");
Serial.println("SEKOLAH\t: <TULIS SEKOLAH KALIAN>");
Serial.println("MOTTO\t: <TULIS MOTTO KALIAN>");
while (true);
}
// 2. Menampilkan data berdasarkan input angka
void program_serial_monitor_input() {
Serial.println("Masukkan angka 1-5 di Serial Monitor:");
if (Serial.available()) {
pilih = Serial.read();
if (pilih == '1') {
Serial.println("1 : Ketuhanan yang maha esa");
} else if (pilih == '2') {
Serial.println("2 : Kemanusiaan yang adil dan beradab");
} else if (pilih == '3') {
Serial.println("3 : Persatuan Indonesia");
} else if (pilih == '4') {
Serial.println("4 : Kerakyatan yang dipimpin oleh hikmat kebijaksanaan dalam permusyawaratan/perwakilan");
} else if (pilih == '5') {
Serial.println("5 : Keadilan bagi seluruh rakyat Indonesia");
} else {
Serial.println("Input tidak valid. Masukkan angka 1-5.");
}
}
}
// 3. Menampilkan data berdasarkan Nomor Induk Siswa (NIS)
void program_serial_monitor_nis() {
Serial.println("Masukkan NIS Anda:");
if (Serial.available()) {
String nisInput = Serial.readStringUntil('\n');
nisInput.trim();
if (nisInput.equals("12345")) {
Serial.println("NIS\t: 12345");
Serial.println("Nama\t: Nama Anda");
Serial.println("Kelas\t: Kelas Anda");
} else {
Serial.println("Data tidak ditemukan.");
}
}
}
// =======================================================
// FUNGSI UNTUK PROGRAM PARSING DATA
// =======================================================
// 2. Menghasilkan urutan nilai (Suhu & Kelembaban)
void program_parsing_data_sederhana() {
Serial.println("Masukkan data (cth: 25.5,60):");
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
input.trim();
String temperature = getValue(input, ',', 0);
String humidity = getValue(input, ',', 1);
Serial.print("Temperature\t: ");
Serial.println(temperature);
Serial.print("Humidity\t: ");
Serial.println(humidity);
}
}
// 3. Program Parsing data lengkap dengan kontrol LED
void program_parsing_data_lengkap() {
Serial.println("Masukkan data (cth: 25.5,60,On,Off,On):");
if (Serial.available()) {
String input = Serial.readStringUntil('\n');
input.trim();
String temperature = getValue(input, ',', 0);
String humidity = getValue(input, ',', 1);
String lamp1 = getValue(input, ',', 2);
String lamp2 = getValue(input, ',', 3);
String lamp3 = getValue(input, ',', 4);
Serial.print("Temperature\t: "); Serial.println(temperature);
Serial.print("Humidity\t: "); Serial.println(humidity);
Serial.print("Lamp1\t\t: "); Serial.println(lamp1);
Serial.print("Lamp2\t\t: "); Serial.println(lamp2);
Serial.print("Lamp3\t\t: "); Serial.println(lamp3);
// Kontrol LED Internal
if (lamp1.equalsIgnoreCase("on")) {
digitalWrite(ledPin, HIGH);
} else if (lamp1.equalsIgnoreCase("off")) {
digitalWrite(ledPin, LOW);
}
}
}
// =======================================================
// FUNGSI PENDUKUNG (jangan diubah)
// =======================================================
// Fungsi untuk memisahkan string berdasarkan karakter
String getValue(String data, char separator, int index) {
int found = 0;
int strIndex[] = {0, -1};
int maxIndex = data.length() - 1;
for (int i = 0; i <= maxIndex && found <= index; i++) {
if (data.charAt(i) == separator || i == maxIndex) {
found++;
strIndex[0] = strIndex[1] + 1;
strIndex[1] = (i == maxIndex) ? i + 1 : i;
}
}
return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
}