//jangan di otak atik kode nya!!
//silahkan di play simulasi nya..

//tolong tekan tombol reset pada arduino
//jika mengalami bug pada serial print..

//have a nice day!

//pembacaan library pakai include
#include <SPI.h>

// Pengaturan pin
const int buttonPin = 2;  // Pin untuk tombol
const float sensor1 = 3950;

#define ledpin 3    // Pin untuk lampu LED
#define led1 4
#define led2 5
#define led3 6
#define trig 8
#define echo 9


void setup() {
  pinMode(buttonPin, INPUT_PULLUP); // Menggunakan internal pull-up resistor
  pinMode(echo, INPUT); //membaca pergerakan gelombang
  pinMode(trig, OUTPUT);
  pinMode(ledpin, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);

  serialkomunikasi(); //contoh serial kpmunikasi

  intperulangan(); //contoh int perulangan
  
  aritmatika(); //contoh int aritmatika

  Serial.begin(230400);
}

void loop() {
  // contoh if
  if (digitalRead(buttonPin) == LOW) {
    // Jika tombol ditekan, nyalakan lampu
    digitalWrite(ledpin, HIGH);
  } else {
    // Jika tombol dilepaskan, matikan lampu
    digitalWrite(ledpin, LOW);
  }

  // contoh while
  while (digitalRead(buttonPin) == LOW) {
    digitalWrite(led1, HIGH); // Menyalakan lampu ketika tombol ditekan
    delay(1000);                  // Menunda selama 0.5 detik
    digitalWrite(led1, LOW);  // Mematikan lampu
    delay(1000);                  // Menunda selama 0.5 detik lagi
  }
  // Jika tombol dilepaskan, lampu dimatikan
  digitalWrite(led1, LOW);

  // contoh for
  for (int i = 0; i < 5; i++) {
    digitalWrite(led2, HIGH); // Menyalakan LED
    delay(1000);  // Menunda selama 1 detik
    digitalWrite(led2, LOW);  // Mematikan LED
    delay(1000);  // Menunda selama 1 detik lagi
  }

  // Mendeklarasikan variabel bertipe int
  int nilaiSensor = 512;

  // Menampilkan nilai variabel ke Serial Monitor
  Serial.print("Nilai Sensor: ");
  Serial.println(nilaiSensor);

  delay(1000);

  // Contoh penggunaan float
  int analogValue = analogRead(A0);
  float temperatur = 1 / (log(1 / (1023. / analogValue - 1)) / sensor1 + 1.0 / 298.15) - 273.15;
  Serial.print("Temperature: ");
  Serial.print(temperatur);
  Serial.println(" ℃");
  delay(1000);

  // Pengulangan berakhir, program akan kembali ke awal loop()
}

void serialkomunikasi(){
  //contoh komunikasi serial
  Serial.print("Hello, World!"); // Mengirimkan pesan ke port serial
  delay(1000); // Menunda selama 1 detik
}

void intperulangan(){
  // Menggunakan variabel int untuk perulangan
  for (int i = 0; i < 5; i++) {
    Serial.print("Iterasi ke-");
    Serial.println(i);
  }
  delay(1000);
}

void aritmatika(){
  // Mendeklarasikan dua variabel bertipe int
  int angka1 = 10;
  int angka2 = 5;

  // Melakukan operasi aritmatika menggunakan variabel int
  int hasilTambah = angka1 + angka2;
  int hasilKali = angka1 * angka2;

  // Menampilkan hasil ke Serial Monitor
  Serial.print("Hasil Penjumlahan: ");
  Serial.println(hasilTambah);
  Serial.print("Hasil Perkalian: ");
  Serial.println(hasilKali);
  delay(1000);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
ntc1:GND
ntc1:VCC
ntc1:OUT
led4:A
led4:C
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND