const char pinAdc1 = 26, pin_led = 5;
int check_intevals = 5000, indicator_intervals = 1000;
unsigned long check_prev_millis, indicator_prev_millis;
bool first_run = true;
void read_adc_and_set_pwm_val(const int num_of_sample, const char adc_pin, const char led_pin){
int pwm_data[num_of_sample];
for (int i = 0; i < num_of_sample; i++) {
int read_sensor = analogRead(pinAdc1);
pwm_data[i] = read_sensor;
float voltage = (static_cast<float>(read_sensor) / 4095) * 3.3;
Serial.print("Data ke-");
Serial.print(i+1);
Serial.print(" --- Analog : ");
Serial.print(read_sensor);
Serial.print(" --- Tegangan : ");
Serial.print(voltage);
Serial.println(" V");
}
Serial.println("----------------------------------------------------");
float sum_array;
for (int i = 0; i < num_of_sample; i++) {
sum_array += pwm_data[i];
}
float rata_rata_D = sum_array / num_of_sample;
float rata_rata_V = rata_rata_D / 4095 * 3.3;
int set_pwm_led = rata_rata_D/4095*255;
float persentase_led = (float)set_pwm_led/255*100;
Serial.print("Rata-rata --- Analog : ");
Serial.print(rata_rata_D);
Serial.print(" --- Tegangan : ");
Serial.print(rata_rata_V);
Serial.println(" V");
Serial.print("Set Kecerahan LED : ");
Serial.print(set_pwm_led);Serial.print("/255");
Serial.print(" --- ");
Serial.print(persentase_led);
Serial.print("%");
analogWrite(pin_led, set_pwm_led);
Serial.println("");
}
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(pinAdc1, INPUT);
pinMode(pin_led, OUTPUT);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
if(millis() - check_prev_millis >= check_intevals || check_prev_millis > millis() || first_run == true){
check_prev_millis = millis();
read_adc_and_set_pwm_val(100 /*num of sample taken*/, pinAdc1, pin_led);
}
if(millis() - indicator_prev_millis >= indicator_intervals || indicator_prev_millis > millis() || first_run == true){
indicator_prev_millis = millis();
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}
first_run = false;
delay(10);//speeds up the simulation
}