0% menganggap dokumen ini bermanfaat (0 suara)
122 tayangan4 halaman

Analog Output Pada Arduino Menggunakan PWM (Pulse Width Modulation) - CodePolitan

Teknik PWM digunakan untuk menghasilkan output analog pada Arduino dengan mengubah panjang pulsa sinyal digital. Program contoh menyalakan LED secara berangsur-angsur dari redup ke terang lalu meredup lagi menggunakan fungsi analogWrite() pada pin PWM.

Diunggah oleh

Raka Rida
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
122 tayangan4 halaman

Analog Output Pada Arduino Menggunakan PWM (Pulse Width Modulation) - CodePolitan

Teknik PWM digunakan untuk menghasilkan output analog pada Arduino dengan mengubah panjang pulsa sinyal digital. Program contoh menyalakan LED secara berangsur-angsur dari redup ke terang lalu meredup lagi menggunakan fungsi analogWrite() pada pin PWM.

Diunggah oleh

Raka Rida
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 4

Articles (https://www.codepolitan.com/articles) /  Tutorial (https://www.codepolitan.

com/category/tutorial)
/  Analog Output pada Arduino Menggunakan PWM (Pulse Width Modulation)

Toni Haryanto (https://www.codepolitan.com/coder/yllumi)


Co-Founder Codepolitan and web programmer. Antusias pada teknologi web dan mikrokontroller.
Jan 14, 2016
(https://www.codepolitan.com/coder/yllumi)

Analog Output pada Arduino Menggunakan PWM (Pulse


Width Modulation)

Pada tutorial ini kita akan membahas tentang analog output pada Arduino. Bila Kamu masih bingung dengan konsep input-
output dan digital-analog pada Arduino, silakan baca dulu tutorial yang berjudul Digital Input Output pada Arduino
(http://www.codepolitan.com/tutorial/digital-input-output-pada-arduino/) dan Analog Input pada Arduino
(http://www.codepolitan.com/tutorial/analog-input-pada-arduino/).

Kita dapat mengirimkan sinyal HIGH dan LOW atau on dan off pada Arduino untuk menyalakan dan mematikan sesuatu
menggunakan digitalWrite(). Bagaimana kalo kita ingin mengaktifkan sesuatu dengan kekuatan tertentu dan bisa diubah-
ubah sesuai keperluan, seperti misalnya mengatur intensitas cahaya LED atau mengatur kecepatan putaran motor? Dalam
hal ini kita punya analog output. Analog output pada Arduino berarti kita mengirimkan sinyal analog dengan intensitas yang
ditentukan sesuai kebutuhan.

Analog input dihasilkan oleh teknik yang dikenal dengan istilah PWM atau Pulse Width Modulation. PWM memanipulasi
keluaran digital sedemikian rupa sehingga menghasilkan sinyal analog. Mikrokontroler mengeset output digital ke HIGH
dan LOW bergantian dengan porsi waktu tertentu untuk setiap nilai keluarannya. Durasi waktu untuk nilai HIGH disebut
pulse width atau panjang pulsa. Variasi nilai output analog didapatkan dari perubahan panjang pulsa yang diberikan pada
-ekstensif-web-programming)
satu periode waktu dan dilakukan berulang-ulang. Untuk lebih jelasnya perhatikan ilustrasi berikut:Kondisi HIGH adalah
kondisi ketika sinyal berada di atas gra k (5V) dan LOW adalah ketika sinyal berada di bawah (0V). Duty cycle adalah
persentasi panjang pulsa HIGH dalam satu periode sinyal. Ketika duty cyclenya 0% atau sinyal LOW penuh, maka nilai
analog yang dikeluarkan adalah 0V atau setara dengan GND. Ketika duty cyclenya 100% atau sinyal HIGH penuh maka sinyal
yang dikeluarkan adalaah 5V.

Untuk mengatur nilai duty cycle, kita gunakan fungsi analogWrite([nomorPin], [nilai]) . Nilai pada parameter kedia
berkisar antara 0 hingga 255. Bila kita hendak mengeset duty cycle ke 0%, maka kita set nilai parameter ke 0, dan untuk
duty cycle 100%, maka kita set nilai parameter ke 255. Jadi bila misalkan kita hendak mengeset duty cycle ke 50%, berarti
nilai yang harus kita set adalah 127 (50% x 255).

Sebenarnya berdasarkan konsep PWM di atas, kita dapat mensimulasikan PWM pada semua pin digital. Tapi khusus
penggunaan fungsi digitalWrite() kita hanya bisa menggunakannya pada pin-pin PWM. Seperti pada Arduino Uno, pin yang
dapat menggunakan fungsi ini hanya pin 3, 5, 6, 9, 10 dan 11. Biasanya pin PWM disimbolkan dengan karakter '~'.

Demikian sekilas tentang teori PWM. Supaya lebih paham tentang analog output, kita coba implementasikan ke dalam
rangkaian.

Bahan-bahan yang diperlukan untuk percobaan berikut diantaranya;

Arduino Uno board


Breadboard
kabel jumper
LED
Resistor 220 ohm

Buat rangkaian seperti pada gambar di bawah ini:

Pada rangkaian di atas, kita menghubungkan pin 3 ke kaki anoda (positif) LED dengan melalui resistor 220 ohm dan
menghubungkan kaki yang lain ke GND. Alih-alih menyalakan dan mematikan LED menggunakan digitalWrite() seperti pada
artike Digital Input Output, kita akan menyalakan LED dengan intensitas yang terus naik hingga titik maksimum dan
kemudian menurunkan intensitasnya terus hingga mati. Demikian seterusnya. Berikut adalah kode programnya:

-ekstensif-web-programming)
int pinLed = 3; // LED terhubung dengan pin 3

void setup(){}

void loop() {
// buat iterasi dari 0 sampai 255 dengan kelipatan 5
for (int nilai = 0; nilai <= 255; nilai += 5) {
// set nilai analog menggunakan iterasi di atas
analogWrite(pinLed, nilai);
// beri jeda waktu 3 milidetik biar ga terlalu cepat
delay(30);
}

// buat iterasi mundur dari 255 ke 0 dengan kelipatan 5


for (int nilai = 255; nilai >= 0; nilai -= 5) {
// set nilai analog menggunakan iterasi di atas
analogWrite(pinLed, nilai);
// beri jeda waktu 3 milidetik
delay(30);
}
}

Upload program. Bila program berhasil diupload, Kamu akan melihat LED menyala perlahan dari redup ke terang lalu
kemudian meredup hingga mati. Begitu seterusnya.

arduino (https://www.codepolitan.com/tag/arduino)

Dilihat 848 kali

Is this helpful?

YES, THANKS   Thanked by 1 peoples

Share This Post


   

-ekstensif-web-programming)
(https://www.codepolitan.com/cerita-dari-kopi-darat-python-id-bandung-desember-2014)

N E W S ( H T T P S : // W W W. C O D E P O L I T A N . C O M / C AT E G O R Y / N E W S )

Cerita dari Kopi Darat Python ID Bandung Desember: 2014 (https://www.codepolitan.com/cerita-dari-kopi-darat-python-id-bandung-desember-2014)


Ridwan Fajar (https://www.codepolitan.com/coder/ridwan)

(https://www.codepolitan.com/update-board-esp8266-untuk-mencegah-krack-key-reinstallation-attack-59fc318f9ccdf)

T U T O R I A L ( H T T P S : // W W W. C O D E P O L I T A N . C O M / C AT E G O R Y / T U T O R I A L )

Update Board ESP8266 Untuk Mencegah KRACK (Key Reinstallation Attack) (https://www.codepolitan.com/update-board-esp8266-untuk-mencegah-krack-
key-reinstallation-attack-59fc318f9ccdf)

Ekhiw (https://www.codepolitan.com/coder/ekkyhiw)

-ekstensif-web-programming)

Anda mungkin juga menyukai