Anda di halaman 1dari 20

LAPORAN PRAKTIKUM XII

LABORATORIUM SENSOR DAN TRANSDUSER II


SENSOR KY 040

Dosen Pengampu : Muhamad Cahyo Ardi Prabowo, S.T., M.Tr.T.

Disusun Oleh :

1. Dhyaa Nanda Puspita EK-3B (3.32.20.1.09)

2. Ilham Lilo Juliansyah EK-3B (3.32.20.1.14)

3. Muhammad Rayhan EK-3B (3.32.20.1.18)

PROGRAM STUDI TEKNIK ELEKTRONIKA


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2022
FOTO NAMA
DHYAA NANDA PUSPITA

ILHAM LILO JULIANSYAH

MUHAMMAD RAYHAN
1. Tujuan
1. Mahasiswa dapat mengetahui karakteristik kegunaan Modul Sensor KY 040 sebagai
pendeteksi nilai tegangan dan arus.
2. Mahasiswa dapat mengimplementasikan sensor menggunakan perangkat mikrokontroler
Arduino.
3. Mahasiswa dapat mengukur dan membandingkan hasil pembacaan sensor dengan alat
ukur multimeter.
2. Dasar Teori
2.1 Arduino Uno

Gambar 2.1 Spesifikasi Pin I/O Arduino Uno


Arduino Uno adalah board mikrokontroler berbasis ATmega328 (datasheet). Memiliki 14
pin input dari output digital dimana 6 pin input tersebut dapat digunakan sebagai output
PWM dan 6 pin input analog, 16 MHz osilator kristal, koneksi USB, jack power, ICSP
header, dan tombol reset. Untuk mendukung mikrokontroler agar dapat digunakan, cukup
hanya menghubungkan Board Arduino Uno ke komputer dengan menggunakan kabel USB
atau listrik dengan AC yang-ke adaptor-DC atau baterai untuk menjalankannya.
Setiap 14 pin digital pada arduino uno dapat digunakan sebagai input dan output,
menggunakan fungsi pinMode(), digitalwrite(), dan digitalRead(). Fungsi fungsi tersebut
beroperasi di tegangan 5 volt, Setiap pin dapat memberikan atau menerima suatu arus
maksimum 40 mA dan mempunyai sebuah resistor pull-up (terputus secara default) 20-50
kOhm.

Tabel 2.2 Bagian Arduino


Arduino Uno memiliki sejumlah fasilitas untuk berkomunikasi dengan computer, Arduino
Uno lain, atau mikrokontroler lain. ATMega3282 ini menyediakan UART TTL (5v)
komunikasi serial, yang tersedia pada pin digital 0 (RX dan 1 (TX). ArduinoUno dapat
beroperasi melalui koneksi USB atau power supply. Dalam penggunaan power supply dapat
menggunakan adaptor DC atau baterai. Adaptor dapat dihubungkan dengan jack adaptor
pada koneksi port inputsupply.
Arduino memiliki 32 KB flash memory4 untuk menyimpan kode, juga 2 KB yang
digunakan untuk bootloader.Arduino memiliki 2 KB untuk SRAM dan 1 KB untuk
EEPROM. Komunikasi serial merupakan komunikasi data dengan pengiriman data satu
persatu pada satuan waktu. Transmisi data pada komunikasi serial dilakukan per bit.

2.2 Arduino Kit

Gambar 2.3 Arduino Kit


Arduino Kit adalah sekumpilan rangkain yang berisi tentang komponen- komponen
mikrokontroler yang di rancang untuk memudahkan pengguna elektronika saat membuat
project. Selain memudahkan dalam membuat project Arduino Kit sendiri sangat praktis
dalam pengoperasiannya karena menggunaan komponen in-board yang diklaim
meminimalisir akan terjadinya error yang sering terjadi dalam penggunaan papan percobaan
(protoboard).
Didalam Arduino Kit di dalam nya ada beberapa komponen yang berisikan Arduino Uno,
Liquid Crystall Display 16x2 (LCD), Potensiometer 10Kohm, 4 buah Seven Segmen, 8 buah
Lampu Led, 8 buah push button, LED Matriks, Relay modul, real-time clock (RTC), dan
beberapa komponen pelengkap seperti IC555, resistor, kapasitor, buzzer, trimpot.
2.3 Arduino IDE
Arduino IDE (Intergrated Development Environment) adalah software open source yang
dikembangkan oleh Arduino untuk memrogram Arduino. Arduino IDE ini dapat di-
download di situs resmi Arduino. Arduino IDE ini berguna sebagai text editor untuk
membuat, mengedit, dan juga mevalidasi kode program. bisa juga digunakan untuk meng-
upload ke board Arduino. Kode program yang digunakan pada Arduino disebut dengan
istilah Arduino “sketch” atau disebut juga source code arduino, dengan ekstensi file source
code.ino

Gambar 2.4 Lembar Kerja Arduino IDE


Pada Gambar, Arduino IDE memiliki toolbars IDE yang memberikan akses instan ke fungsi
fungsi yang penting, yaitu :
1. Tombol Verify, untuk mengkompilasi program yang saat ini dikerjakan.
2. Tombol Upload, untuk mengkompilasi program dan mengupload ke papan arduino.
3. Tombol News, menciptakan lembar kerja baru.
4. Tombol Open, untuk membuka program yang ada di file system.
5. Tombol Save, untuk menyimpan program yang dikerjakan.
6. Tombol Stop, untuk menghentikan serial number yang sedang dijalankan.
2.4 Rotary Encoder KY 040
Modul KY-040 merupakan sebuah rotary encoder yang dapat berfungsi sebagai alat input
putaran. Jika diputar searah jarum jam maupun berlawanan arah jarum jam, Modul ini dapat
membedakannya serta mampu menghitung jumlah putaran yang sudah dilakukan. Modul ini
memiliki 30 cycle dalam satu putaran penuh (Cycles Per Revolution - CPR). Rotary encoder
dapat diputar 360 derajat secara terus menerus tanpa ada batasan (unlimited). Modul ini
dapat diaplikasikan sebagai kontrol putaran terhadap motor servo maupun motor stepper.
Bisa juga digunakan sebagai potensiometer digital.

Gambar 2.5 Modul Sensor KY 040

Encoder adalah sebuah rangkaian yang dapat berfungsi mengkonversi suatu data
kedalam bentuk data baru. Encoder dibutuhkan untuk mengkonversi data dari suatu sistem
bilangan ke sistem bilangan lainnya. Prinsip kerja Encoder adalah mengkonversi
suatu data agar data tersebut dapat diterima oleh receiver dalam keadaan utuh. Dimana pada
bagian penerima terdapat decoder yang dapat mengambil data yang telah dikonversi oleh
Encoder.

Incremental encoder terdiri dari dua track atau single track dan dua sensor yang disebut
channel A dan B. Ketika poros berputar, pada contoh Gambar 2.6, deretan pulsa akan
muncul di masing-masing channel pada frekuensi yang proporsional dengan kecepatan
putar sedangkan hubungan fasa antara channel A dan B menghasilkan arah putaran,.
Dengan menghitung jumlah pulsa yang terjadi terhadap resolusi piringan maka putaran
dapat diukur. Untuk mengetahui arah putaran, dengan mengetahui channel mana yang
leading terhadap channel satunya dapat kita tentukan arah putaran yang terjadi karena
kedua channel tersebut akan selalu berbeda fasa seperempat putaran (quadrature signal).
Seringkali terdapat output channel ketiga, disebut INDEX, yang menghasilkan satu pulsa
per putaran berguna untuk menghitung jumlah putaran yang terjadi.
Gambar 2.6 Susunan Incremental Rotary Encoder
Sensor rotary encoder merupakan suatu komponen transuder elektromekanik yang
dimanfaatkan untuk mengukur perpindahan (rotasi) pada motor. Komponen ini dapat
dimanfaatkan untuk mengukur kecepatan. Rotary encoder berbentuk suatu piringan, piringan
ini memiliki beberapa bagian yang transparan dan beberapa bagian tidak tembus cahaya
yang berjajar disepanjang tepi piringan untuk dapat dimanafaatkan dalam mengukur
kecepatan.

2.1 Motor Servo


Motor servo adalah sebuah motor yang dapat diatur sudutnya menggunakan pulsa. Motor
servo bisa dikendalikan karena di dalam motor servo terdapat pengontrol yang menerapkan
prinsip close loop (sistem umpan balik). Sistem kendali umpan balik adalah di dalam servo
terdapat sebuah sensor untuk mendeteksi sudut servo secara langsung. Kemudian informasi
tersebut dikirim lagi ke pengendali. Sensor yang paling umum digunakan pada motor servo
standar adalah berupa potensiometer. jadi apabila sudut motor servo belum mencapai target
maka motor akan terus berputar hingga mencapai target. Motor servo biasanya memiliki 3
buah kabel berwarna hitam/cokelat, merah dan oranye/kuning.
 Kabel berwarna merah adalah kabel power, besarnya tegangan tergantung dari tipe
motor servo yang dapat ditemukan pada datasheet motor servo, namun biasanya
berkisar antara (5V-9V).
 Kabel berwarna hitam/cokelat adalah kabel ground.
 Kabel berwarna oranye/kuning adalah kabel pulsa/data.
Gambar 2.6 Motor Servo
2.2 Modul LCD (Liquid Crystal Display) 16x2
LCD (Liquid Crystal Display) adalah suatu jenis media tampilan yang menggunakan kristal
cair sebagai penampil utama. LCD (Liquid Crystal Display) bisa menampilkan suatu
gambar/karakter dikarenakan terdapat banyak sekali titik cahaya (piksel) yang terdiri dari
satu buah kristal cair sebagai titik cahaya. Walau disebut sebagai titik cahaya, namun Kristal
cair ini tidak memancarkan cahaya sendiri. LCD 16x2 dapat menampilkan sebanyak 32
karakter yang terdiri dari 2 baris dan tiap baris dapat menampilkan 16 karakter.
Pada LCD 16×2 pada umumnya menggunakan 16 pin sebagai kontrolnya, tentunya akan
sangat boros apabila menggunakan 16 pin tersebut. Karena itu, digunakan driver khusus
sehingga LCD dapat dikontrol dengan modul I2C atau Inter-Integrated Circuit. Dengan
modul I2C, maka LCD 16x2 hanya memerlukan dua pin untuk mengirimkan data dan dua
pin untuk pemasok tegangan. Sehingga hanya memerlukan empat pin yang perlu
dihubungkan ke NodeMCU yaitu :
 GND : Terhubung ke ground
 VCC : Terhubung dengan 5V
 SDA : Sebagai I2C data dan terhubung ke pin A4
 SCL : Sebagai I2C data dan terhubung ke pin A5

Gambar 2.7 LCD 16x2 digabung dengan I2C


2.3 LED
Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang
dapat memancarkan  cahaya monokromatik ketika diberikan tegangan maju. LED
merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya
yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang
dipergunakannya. LED juga dapat memancarkan sinar inframerah yang tidak tampak oleh
mata seperti yang sering kita jumpai pada Remote Control TV ataupun Remote Control
perangkat elektronik lainnya.

Gambar 2.8 LED

2.4 Resistor
Resistor merupakan salah satu komponen yang paling sering ditemukan dalam Rangkaian
Elektronika. Hampir setiap peralatan Elektronika menggunakannya. Pada dasarnya Resistor
adalah komponen Elektronika Pasif yang memiliki nilai resistansi atau hambatan tertentu
yang berfungsi untuk membatasi dan mengatur arus listrik dalam suatu rangkaian
Elektronika. Resistor atau dalam bahasa Indonesia sering disebut dengan Hambatan atau
Tahanan dan biasanya disingkat dengan Huruf “R”. Satuan Hambatan atau Resistansi
Resistor adalah OHM (Ω). Sebutan “OHM” ini diambil dari nama penemunya yaitu Georg
Simon Ohm yang juga merupakan seorang Fisikawan Jerman.

Gambar 2.9 Resistor


Fungsi-fungsi resistor di dalam rangkaian elektronika diantaranya adalah sebagai pembatas
arus listrik, sebagai pengatur arus listrik, sebagai pembagi tegangan listrik, sebagai penurun
tegangan listrik.
2.5 Kabel USB-to-Type B
Kabel Type B merupakan bagian dari varian tipe USB, yang mana USB ini dipergunakan
pada perangjat komputer, seperti pada Printer atau pada Scanner. Dimana bentuk dari USB
tipe B ini adalah berentuk kotak. Disini kabel USB tipe B di gunakan untuk menghubungkan
laptop ke Arduino Uno.

Gambar 2.10 Kabel USB-to-Type B


2.6 Kabel Jumper
Kabel jumper adalah kabel yang di pergunakan untuk menghubungkan satu komponen
dengan komponen lain ataupun menghubungkan jalur rangkaian yang terputus pada
breadboard. Konektor yang ada pada ujung kabel terdiri atas dua jenis yaitu konektor jantan
(male connector) dan konektor betina (female connector). Konektor jantan fungsinya untuk
menusuk dan konektor betina fungsinya untuk ditusuk. prinsip kerja kabel jumper yaitu
menghantarkan arus listrik dari satu komponen ke komponen lainnya yang dihubungkan. Ini
terjadi karena di ujung dan di dalam kabel terdapat konduktor listrik kecil yang memang
fungsinya untuk menghantarkan listrik.

Gambar 2.11 Kabel Jumper

3. Alat dan Bahan


1. Arduino Uno 1 buah
2. Arduino Kit 1 buah
3. Rotary Encoder KY 040 1 buah
4. Motor Servo 1 buah
5. LCD I2C 16x2 1 buah
6. Resistor 220Ω 2 buah
7. LED 2 buah
8. Laptop 1 buah
9. Kabel Jumper secukupnya
10. Kabel USB-to-Type B 1 buah

4. Pelaksanaan Percobaan
4.1 Gambar Rangkaian

Gambar 4.1 Rangkaian Percobaan Gambar 4.2 Rangkaian Percobaan Sensor KY 040
Sensor KY 040 dengan Servo

4.2 Cara Kerja Rangkaian


Prinsip kerja Encoder adalah mengkonversi suatu data agar data tersebut dapat diterima
oleh receiver dalam keadaan utuh. Dimana pada bagian penerima terdapat decoder yang
dapat mengambil data yang telah dikonversi oleh Encoder. Incremental encoder terdiri dari
dua track atau single track dan dua sensor yang disebut channel A dan B. Ketika poros
berputar, pada contoh Gambar 2.6, deretan pulsa akan muncul di masing-masing channel
pada frekuensi yang proporsional dengan kecepatan putar sedangkan hubungan fasa
antara channel A dan B menghasilkan arah putaran,. Dengan menghitung jumlah pulsa
yang terjadi terhadap resolusi piringan maka putaran dapat diukur. Untuk mengetahui
arah putaran, dengan mengetahui channel mana yang leading terhadap channel satunya
dapat kita tentukan arah putaran yang terjadi karena kedua channel tersebut akan selalu
berbeda fasa seperempat putaran (quadrature signal). Seringkali terdapat output channel
ketiga, disebut INDEX, yang menghasilkan satu pulsa per putaran berguna untuk
menghitung jumlah putaran yang terjadi.
Pada percobaan ini digunakan LCD I2C 16x2 sebagai tampilan teks berupa derajat position-
nya. Pada modul I2C ini hanya memerlukan 2 koneksi yaitu hanya jalur data (SDA) dan
clock (SCL). Pada protokol I2C terdapat perangkat master dan slave. Perangkat master
adalah perangkat utama yang menjadi sumber pulsa clock dan menjadi pusat transmisi data.
Perangkat slave tidak dapat menginisiasi pertukaran data melainkan hanya perangkat master
yang bisa. Dalam praktiknya, biasanya perangkat master adalah kontroller (seperti Arduino)
dan perangkat slave adalah modul eksternal yang membantu atau membantu dari kontroller
(seperti sensor, dan lain-lain).
4.3 Langkah Percobaan
4.3.1 Percobaan Sensor KY 040
1. Menyiapkan alat dan bahan yang akan digunakan pada rangkaian ini.
2. Membuat program sensor KY 040 di arduino IDE.
3. Mengcompail program yang telah dibuat.
4. Men-setting board ke arduino uno dan port com ke port 7
5. Membuat rangkaian seperti gambar 4.1.
6. Meng-upload program jika tidak ada error setelah di compail.
7. Memutar rotary encoder dengan sudut seperti pada tabel percobaan.
8. Melihat hasil clock wise pada serial monitor arduino IDE.
9. Mencatat hasil pada tabel percobaan.

4.3.2 Percobaan Sensor KY 040 dengan Servo


1. Menyiapkan alat dan bahan yang akan digunakan pada rangkaian ini.
2. Membuat program sensor KY 040 di arduino IDE.
3. Mengcompail program yang telah dibuat.
4. Men-setting board ke arduino uno dan port com ke port 7
5. Membuat rangkaian seperti gambar 4.2.
6. Meng-upload program jika tidak ada error setelah di compail.
7. Memutar rotary encoder dengan sudut seperti pada tabel percobaan.
8. Melihat hasil sudut encoder pada serial monitor arduino IDE.
9. Mengukur sudut servo menggunakan aplikasi angle meter.
10. Mencatat hasil pada tabel percobaan.
5. Hasil Percobaan
5.1 Tabel Hasil Percobaan
5.1.1 Percobaan Sensor KY 040

Tabel 5.1 Hasil Percobaan Sensor KY 040 Tabel 5.2 Hasil Percobaan Sensor KY 040
Sudut Genap Positif Sudut Genap Negatif

Sudut (°) Clock (V) Clock (w) Sudut (°) Clock (V) Clock (w)
0 4,97 1 0 4,95 1
10 4,95 1 -10 4,96 1
20 4,97 1 -20 4,90 1
30 4,94 1 -30 4,89 1
40 4,97 1 -40 4,94 1
50 4,97 1 -50 4,94 1
60 4,97 1 -60 4,93 1
70 4,98 1 -70 4,95 1
80 4,99 1 -80 4,95 1
90 4,97 1 -90 4,94 1

Tabel 5.3 Hasil Percobaan Sensor KY 040 Tabel 5.4 Hasil Percobaan Sensor KY 040
Sudut Ganjil Positif Sudut Ganjil Negatif

Sudut (°) Clock (V) Clock (w) Sudut (°) Clock (V) Clock (w)
1 0,00 0 -1 0,00 0
11 0,01 0 -11 0,00 0
21 0,01 0 -21 0,00 0
31 0,02 0 -31 0,01 0
41 0,01 0 -41 0,01 0
51 0,01 0 -51 0,01 0
61 0,00 0 -61 0,01 0
71 0,02 0 -71 0,01 0
81 0,01 0 -81 0,01 0
91 0,00 0 -91 0,01 0
5.1.2 Percobaan Sensor KY 040 dengan Servo

Tabel 5.5 Hasil Percobaan Sensor KY 040 dengan Servo

Sudut Sudut Sudut Error Sudut Error Sudut


Aktual (°) Encoder (°) Servo (°) Encoder (%) Servo (%)
0 0 0 0,00 0,00
15,17 15 15 1,12 1,12
30,13 30 30 0,43 0,43
45 45 45 0,00 0,00
60,24 60 60 0,40 0,40
75,2 75 75 0,27 0,27
90,5 90 90 0,55 0,55
105 105 105 0,00 0,00
120,8 120 120 0,66 0,66
135,2 135 135 0,15 0,15
150,24 150 150 0,16 0,16
165,14 165 165 0,08 0,08
180,23 180 180 0,13 0,13

5.2 Grafik Hasil Percobaan

Grafik Perbandingan Sudut Aktual, Encoder,


dan Servo
200
180
160
140
120
Sudut (°)

100
80
60
40
20
0
1 2 3 4 5 6 7 8 9 10 11 12 13
Data

Sudut Aktual (°) Sudut Encoder (°) Sudut Servo (°)

Gambar 5.1 Grafik Perbandingan Tegangan Sensor dan Terukur Tanpa Beban
5.3 Percobaan
5.3.1 Percobaan Sensor KY 040

Gambar 5.2 Percobaan Genap Gambar 5.3 Percobaan Genap Gambar 5.4 Percobaan Ganjil
Positif negatif Positif

Gambar 5.5 Percobaan Ganjil


Negatif

5.1.3 Percobaan Sensor KY 040 dengan Servo

Gambar 5.6 Pembacaan Sudut Gambar 5.7 Pembacaan Sudut


Aktual 45° Aktual 135°
6. Kesimpulan
1. Modul KY-040 merupakan sebuah rotary encoder yang dapat berfungsi sebagai alat input
putaran. Jika diputar searah jarum jam maupun berlawanan arah jarum jam, Modul ini
dapat membedakannya serta mampu menghitung jumlah putaran yang sudah dilakukan.
2. Prinsip kerja Encoder adalah mengkonversi suatu data agar data tersebut dapat
diterima oleh receiver dalam keadaan utuh. Dimana pada bagian penerima terdapat
decoder yang dapat mengambil data yang telah dikonversi oleh Encoder. Incremental
encoder terdiri dari dua track atau single track dan dua sensor yang disebut channel A dan
B. Ketika poros berputar, pada contoh Gambar 2.6, deretan pulsa akan muncul di
masing-masing channel pada frekuensi yang proporsional dengan kecepatan putar
sedangkan hubungan fasa antara channel A dan B menghasilkan arah putaran.
3. Pada percobaan sensor KY 040, ketika encoder di putar searah jarum jam maka led hijau
akan menyala dan nilai sudut yang dihasilkan semakin kecil atau semakin negative.
Begitu pula sebaliknya ketika encoder diputar berlawanan arah jarum jam maka LED
merah akan menyala dan nilai sudut yang dihasilkan semakin besar atau semakin positif.
Ketika encoder diputar nilai sudut genap maka clock wise nya 1. Sedangkan encoder
diputar nilai sudut ganjil maka clock wise nya 0.
4. Pada percobaan sensor KY 040 dengan servo, hasil perbandingan nilai sudut antara sudut
actual, encoder, dan servo tidak jauh berbeda bahkan bisa dibilang sama. Errornya pun
rata rata 0,30% saja.
5.
Daftar Pustaka
aldyrazor.com. (2020, 26 Juli). Arduino Starter Kit : Ulasan dan Panduan Membeli Bagi
Pemula. Diakses pada 18 September 2022, dari https://www.aldyrazor.com/2020/07/arduino-
starter-kit.html#:~:text=Starter%20kit%20Arduino%20adalah%20suatu,e%2Dbook%20maupun
%20video%20interaktif.

kmtech.id. (2021, 8 Oktober). Mengenal Perangkat Lunak Arduino IDE. Diakses pada 18
September 2022, dari https://www.kmtech.id/post/mengenal-perangkat-lunak-arduino-ide

aldyrazor.com. (2020, 1 April). Kabel Jumper Arduino : Pengertian, Fungsi, Jenis, dan
Harga. Diakses pada 18 September 2022, dari https://www.aldyrazor.com/2020/04/kabel-
jumper-arduino.html

Percobaan 12 Modul Sensor KY 040 Laboratorium Sensor dan Transduser II. (2022).
Semarang, Indonesia: Politeknik Negeri Semarang.
Lampiran
1. Program Sensor KY 040
1 #include<LiquidCrystal_I2C.h> // Libarary LiquidCrystal_12C
2
3 LiquidCrystal_I2C lcd(0x27,16,2);
4
5 int CLK = A0; // Pin 9 to clk on encoder
6 int DT = A1; // Pin 8 to DT on encoder
7 int RedLed = 4; // You do not need to use the leds.
8 int GreenLed = 5;
9 int RotPosition = 0;
10 int rotation;
11 int value;
12 boolean LeftRight;
13
14 void setup() {
15 lcd.init();
16 lcd.backlight();
17 lcd.setCursor(0,0);
18 lcd.print("BISMILAH");
19 delay(1000);
20 lcd.clear();
21 Serial.begin (9600);
22 pinMode (CLK, INPUT);
23 pinMode (DT, INPUT);
24 pinMode (RedLed, OUTPUT);
25 pinMode (GreenLed, OUTPUT);
26 rotation = digitalRead(CLK);
27 }
28
29 void loop() {
30 value = digitalRead(CLK);
31 if (value != rotation) { // we use the DT pin to find out which way we
turning.
32 if (digitalRead(DT) != value) { // Clockwise
33 RotPosition ++;
34 LeftRight = true;
35 } else { //Counterclockwise
36 LeftRight = false;
37 RotPosition--;
38 }
39 if (LeftRight) { // turning right will turn on red led.
40 Serial.println ("clockwise");
41 digitalWrite (RedLed, HIGH);
42 digitalWrite (GreenLed, LOW);
43 } else { // turning left will turn on green led.
44 Serial.println("counterclockwise");
45 digitalWrite (RedLed, LOW);
46 digitalWrite (GreenLed, HIGH);
47 }
48 Serial.print("Encoder RotPosition: ");
49 Serial.println(RotPosition); // this will print in the serial monitor.
50 lcd.setCursor(0,0);
51 lcd.print("Posisi: ");
52 lcd.print(RotPosition);
53 lcd.print(" Degree ");
54 float sensorValue = analogRead(CLK); // pin analog input A0 sebagai
sensorValue
55 float voltage = sensorValue* (5.0/1023); // pembacaan analog input * (5/1023)
56 Serial.print("Voltage : "); // mengirim karakter "Voltage :" ke serial monitor
57 Serial.print(voltage); // mengirim karakter nilai variabel voltage ke serial
monitor
58 Serial.println(""); // mengirim karakter " " ke serial monitor
59
60 }
61 rotation = value;
62 }
63

2. Program Sensor KY 040 dengan Servo


1 #include <Servo.h>
2 #define inputCLK A0
3 #define inputDT A1
4 #include<LiquidCrystal_I2C.h> // Libarary LiquidCrystal_12C
5 LiquidCrystal_I2C lcd(0x27,16,2);
6
7 Servo myservo;
8 int counter = 0;
9 int currentStateCLK;
10 int previousStateCLK;
11 void setup() {
12 lcd.init();
13 lcd.backlight();
14 lcd.setCursor(0,0);
15 lcd.print("BISMILAH");
16 delay(1000);
17 lcd.clear();
18 pinMode (inputCLK, INPUT);
19 pinMode (inputDT, INPUT);
20 Serial.begin (9600);
21 myservo.attach(9);
22 previousStateCLK = digitalRead(inputCLK);
23 }
24 void loop() {
25 currentStateCLK = digitalRead(inputCLK);
26 if (currentStateCLK != previousStateCLK) {
27 if (digitalRead(inputDT) != currentStateCLK) {
28 counter --;
29 if (counter < 0) {
30 counter = 0;
31 }
32 } else {
33 // Encoder is rotating clockwise
34 counter ++;
35 if (counter > 180) {
36 counter = 180;
37 }
38 }
39 myservo.write(counter);
40 Serial.print("Position: ");
41 Serial.println(counter);
42 lcd.setCursor(0,0);
43 lcd.print("Posisi: ");
44 lcd.print(Counter);
45 lcd.print(" Degree ");
46 }
47 // Update previousStateCLK with the current state
48 previousStateCLK = currentStateCLK;
49 }

Anda mungkin juga menyukai