int8_t var1; //bertanda (minus) 8bit -128 sampai 127
uint8_t var2; //tidak bertanda 8bit 0 sampai 255

#define KELUAR OUTPUT

const int8_t pinMotor1 = 7;

#define pinServo1 13

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("Hello, ESP32!");
  int8_t data_sementara = ini_fungsi_pertama();
  int16_t data_sementara_kedua = ini_fungsi_pertama(100);
  // ini_fungsi_kedua();

  // Serial.println(data_sementara);
  // Serial.println(data_sementara_kedua); 
  Serial.println(ini_fungsi_pertama(20)); 
  // Serial.println(ini_fungsi_pertama(140)); 
  // Serial.println(ini_fungsi_pertama(-200)); 

  hitung_perkalian(10, 3);
  hitung_perkalian(30, 100);
  motor(100, 100, 100, 100);
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(10); // this speeds up the simulation
}

int8_t ini_fungsi_pertama(){ //fungsi yang diawali dengan tipe data dan tidak punya parameter
  int8_t hasil = 100;

  return hasil;
}

float ini_fungsi_pertama(int16_t tambah_nilai){ //fungsi yang diawali dengan tipe data dan dengan parameter
  int16_t hasil = 100 + tambah_nilai;

  float total = hasil / 10;

  total = total * 0.3;

  return total;
}

void ini_fungsi_kedua(){
  Serial.println("Print fungsi kedua");
}  

void hitung_perkalian(int16_t data1, int16_t data2){
  
  int16_t hasil = data1 * data2;

  Serial.println(hasil);
}

void motor(int8_t pwm1, int8_t pwm2, int8_t pwm3, int8_t pwm4){
  analogWrite(2, pwm1);
  analogWrite(3, pwm2);
  analogWrite(4, pwm3);
  analogWrite(5, pwm4);   
}

// Tugas
/*
  Bikin Program yang didalamnya ada 
  -Variabel (Lebih dari 1 tipe data)
  -Constanta (boleh 1 tipe data)
  -Macros (minimal 1)
  -Fungsi (yang memiliki parameter)
  -Khusus Tim devisi program sesuai dengan robot masing
*/