LAPORAN PRAKTIKUM 3
Oleh :
Amrullah Salafi Setiono 2141170162
Kelas 2D – D4
Dosen Pengajar :
Leonardo Kamajaya, S.ST., M.Sc.
𝐶𝑙𝑜𝑐𝑘 = 80𝑀𝐻𝑧
1𝑠 = 80.000.000 𝑐𝑜𝑢𝑛𝑡𝑠
1 𝑐𝑜𝑢𝑛𝑡 = 80𝑛𝑠
1 𝑐𝑜𝑢𝑛𝑡 = 80𝑛𝑠 𝑥 𝑁
80.000.000
𝑁=
100.000
𝑁 = 800
Seperti yang ditunjukkan pada gambar diatas, terdapat 8 unit timer yang terbagi
menjadi 2 bagian yaitu unit timer untuk high speed, dan unit taimer untuk low speed.
Dimana masing – masing unit timer tersebut terhubung kedalam 2 buah channel
timer. 16 channel timer ini dapat dioperasikan secara diferensial untuk pengaturan
Duty Cycle gelombang yang dihasilkan, tetapi untuk besar frekuensi timer yang
dihasilkan hanya bisa diatur untuk 8 unit saja. Sebagai contoh unit timer 0 terhubung
pada channel 0 dan channel 1. Untuk nilai Duty Cycle pada channel 0 dan 1 dapat
berbeda, namun untuk nilai frekuensinya tidak dapat dibedakan.
PERCOBAAN 2
PERCOBAAN 3
V. ANALISA
PERCOBAAN 1
PERCOBAAN 2
Pada percobaan 2 led menyala sesuai dengan nilai PWM yang telah
ditentukan, ketiga lampu tersebut menyala dengan tingkat kecerahan yang berbeda
beda sesuai dengan nilai PWM. Tingkat kecerahan ini didapatkan dengan mengalikan
nilai maksimum PWM dengan persentase yang diinginkan, contoh untuk 50% maka
(1023 * 50%), sehingga didapatkan nilai sebesar 511.5 atau dibulatkan menjadi 512,
nilai tersebut akan menyalakan lampu LED dengan tingkat kecerahan hanya 50% saja.
PERCOBAAN 3
VI. KESIMPULAN
Kesimpulan dari praktikum diatas adalah :
ESP32 dapat memanfaatkan fitur timer untuk menghitung waktu secara akurat dan
melakukan tindakan tertentu setelah waktu tertentu telah berlalu.
ESP32 dapat melakukan timer interrupt overflow, yang dimana interrupt akan ter-
trigger apabila waktu tertentu telah terpenuhi.
ESP32 dapat memanfaatkan fitur PWM untuk mengontrol tingkat kecerahan pada
lampu LED atau kecepatan motor dengan mengatur Duty Cyclenya masing
masing.
ESP32 dapat mengatur Duty Cycle PWM untuk naik atau turun sesuai keinginan
berdasarkan waktu yang telah ditentukan.
Dengan demikian fitur timer dan PWM pada ESP32 sangat berguna dalam pengembangan
aplikasi IoT yang membutuhkan pengaturan waktu dan kontrol perangkat listrik, seperti
motor DC, lampu LED, dll.
VII. LAMPIRAN
Program Percobaan 1
hw_timer_t * timer = NULL;
portMUX_TYPE timerMux = portMUX_INITIALIZER_UNLOCKED;
void setup() {
timer = timerBegin(0, 80, true);
timerAttachInterrupt(timer, &onTimer, true);
timerAlarmWrite(timer, 1000000, true);
timerAlarmEnable(timer);
Serial.begin(115200);
}
void loop() {
if(lastDetik != detik){
Serial.print(jam);
Serial.print(" : ");
Serial.print(menit);
Serial.print(" : ");
Serial.println(detik);
lastDetik = detik;
}
}
Program Percobaan 2
int LED1 = 5;
int LED2 = 16;
int LED3 = 17;
void setup() {
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop() {
analogWrite(LED1, DUTY_CYCLE1);
analogWrite(LED2, DUTY_CYCLE2);
analogWrite(LED3, DUTY_CYCLE3);
}
Membuat variable LED 1, LED 2, LED 3 yang terhubung pada pin nomor 5,
16, dan 17 pada ESP32.
4. void loop() {
analogWrite(LED1, DUTY_CYCLE1);
analogWrite(LED2, DUTY_CYCLE2);
analogWrite(LED3, DUTY_CYCLE3);
}
Program Percobaan 3
void setup() {
// Set pin sebagai output
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
// Konfigurasi PWM
ledcSetup(0, PWM_FREQ, PWM_RES);
ledcSetup(1, PWM_FREQ, PWM_RES);
ledcSetup(2, PWM_FREQ, PWM_RES);
// Jika duty cycle sudah mencapai 100%, matikan LED dan pindah ke
LED berikutnya
if (dutyCycle >= 100) {
dutyCycle = 0;
led += 1;
if (led > 3) {
led = 1;
}
// Matikan LED sebelumnya
if (led == 1) {
ledcWrite(2, 0);
} else if (led == 2) {
ledcWrite(0, 0);
} else if (led == 3) {
ledcWrite(1, 0);
}
}
}