Anda di halaman 1dari 7

DIY-P10-C7

“SPINNING LEFT RIGHT”

NAMA NIM

1. ALI ASSEGAF 1315030094


2. JEREMIA GANDA 1315030053
3. SAPTA AJI ZACHRON I 1315030077

PIC : WENI DITA PRANESWARI 1315030018

Kelas : TT- 4C

Jurusan Teknik Elektro


Program studi Teknik Telekomunikasi
Politeknik Negeri Jakarta

2017
A. JUDUL : SPINNING LEFT RIGHT

B. CARA KERJA :
Dalam projek DIY ini saya sebagai PIC akan menggunakan Arduino UNO untuk
menggerakan servo ke kanan dan ke kiri yang dikontrol menggunakan dua buah input push
button dan outputnya dua buah LED dan Motor Servo PWM . Pada awalnya posisi servo akan
bergerak ke posisi awal yaitu 131o . Apabila push button (switch) sebelah kiri ditekan, maka
sebuah LED pertama (berwarna biru) akan menyala, setelah itu posisi servo akan bergerak ke
sebelah kiri hingga mencapai derajat minimum putaran servo yang telah ditentukan. Lalu hal
yang sama, apabila push button (switch) sebelah kanan ditekan, maka sebuah LED pertama
(berwarna kuning) akan menyala, setelah itu posisi servo akan bergerak ke sebelah kiri hingga
mencapai derajat maksimum putaran servo yang telah ditentukan. Posisi terakhir servo
ditentukan berdasarkan bagaimana kondisi push button (switch) dikendalikan terakhir kali,
dan juga terdapat delay selama 15 ms untuk servo mencapai posisi nya.
Selanjutnya, berikut adalah penjelasan sketch yang dibuat agar projek ini dapat bekerja.
1. Sketch untuk mendeklarasikan atau menginisialisasikan pin yang digunakan
dan kondisi awal nya sebagai berikut :
#include <Servo.h>
Servo myservo;
int pos = 90 ;
const int maxDeg = 270;
const int minDeg = 10;
const int leftPin = 3;
const int rightPin = 2;
const int led1Pin = 6;
const int led2Pin = 5;
const int outputPin = 9;
int leftPressed = 0;
int rightPressed = 0;
2. Sketch untuk mendeklarasikan atau menginisialisasikan pin input dan output yang
digunakan sebagai berikut :
pinMode(leftPin, INPUT);
pinMode(rightPin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);

3. Sketch untuk menginisialisasikan apabila kondisi push button (switch) sebelah kiri
ditekan, sehingga membuat servo bergerak ke sebelah kiri sampai menuju nilai minimum
dan LED on (nyala) dan jika push button (switch) tersebut tidak ditekan maka LED off
(mati) sebagai berikut :
{
leftPressed = digitalRead(leftPin);
rightPressed = digitalRead(rightPin);

if(leftPressed){
if(pos < maxDeg) pos += 3;
myservo.write(pos);
digitalWrite(led1Pin,HIGH);
}
else
digitalWrite(led1Pin,LOW);

4. Sketch untuk menginisialisasikan apabila kondisi push button (switch) sebelah kanan
ditekan, sehingga membuat servo bergerak ke sebelah kiri sampai menuju nilai maksimum
dan LED on (nyala) dan jika push button (switch) tersebut tidak ditekan maka LED off
(mati) sebagai berikut :
if(rightPressed){
if(pos > minDeg) pos -= 3
myservo.write(pos);
digitalWrite(led2Pin,HIGH);
}
else
digitalWrite(led2Pin,LOW);

5. Sketch untuk memberikan waktu delay hingga serva bisa bergerak menuju posisinya
sebagai berikut :
delay(15);
}

C. SKEMATIK :
D. ALGORITMA (FLOWCHART) :

MULAI

INISIALISASI
PIN 3, PIN 2 SEBAGAI INPUT
PIN 6, PIN 5, PIN 9 SEBAGAI OUTPUT

SERVO BERGERAK
MENUJU POSSISI
AWAL

F
KONDISI PUSH KONDISI PUSH
BUTTON KIRI LED PERTAMA
F LED KEDUA
BUTTON KIRI
DITEKAN MATI DITEKAN NYALA

T T

LED KEDUA
LED PERTAMA SERVO TIDAK SERVO TIDAK
NYALA
NYALA BERGERAK BERGERAK

DELAY 15 ms DELAY 15 ms

SERVO BERGERAK
SERVO BERGERAK
HINGGA MENUJU
HINGGA MENUJU
POSISI MINIMUM
POSISI MAKSIMUM
MINIMUM

UNO F
OFFLINE

T
SELESAI
Ket :
T = True
F = False
E. SKETCH :
#include <Servo.h>
Servo myservo;
int pos = 131 ;
const int maxDeg = 270;
const int minDeg = 10;
const int leftPin = 3;
const int rightPin = 2;
const int led1Pin = 6;
const int led2Pin = 5;
const int outputPin = 9;
int leftPressed = 0;
int rightPressed = 0;

void setup()
{
myservo.attach(outputPin);
pinMode(leftPin, INPUT);
pinMode(rightPin, INPUT);
pinMode(led1Pin, OUTPUT);
pinMode(led2Pin, OUTPUT);
}

void loop()
{
leftPressed = digitalRead(leftPin);
rightPressed = digitalRead(rightPin);
if(leftPressed){
if(pos < maxDeg) pos += 3;
myservo.write(pos);
digitalWrite(led1Pin,HIGH);
}
else
digitalWrite(led1Pin,LOW);
if(rightPressed){
if(pos > minDeg) pos -= 3
myservo.write(pos);
digitalWrite(led2Pin,HIGH);
}
else
digitalWrite(led2Pin,LOW);
delay(15);
}
F. KESIMPULAN :

Motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide
Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan
akan menentukan posisi sudut putaran dari poros motor servo. Pada kali ini, lebar pulsa
dengan waktu 15 ms (mili detik) akan memutar poros motor servo ke posisi sudut 131⁰.
Bila pulsa lebih pendek dari 15 ms maka akan berputar ke arah posisi 10⁰ atau ke kiri
(berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan lebih lama
dari 15 ms maka poros motor servo akan berputar ke arah posisi 270⁰ atau ke kanan
(searah jarum jam).
Ketika lebar pulsa kendali telah diberikan, maka poros motor servo akan bergerak atau
berputar ke posisi yang telah diperintahkan, dan berhenti pada posisi tersebut dan akan
tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal yang mencoba memutar
atau mengubah posisi tersebut, maka motor servo akan mencoba menahan atau melawan
dengan besarnya kekuatan torsi yang dimilikinya (rating torsi servo). Namun motor
servo tidak akan mempertahankan posisinya untuk selamanya, sinyal lebar pulsa kendali
harus diulang setiap 20 ms (mili detik) untuk menginstruksikan agar posisi poros motor
servo tetap bertahan pada posisinya.

Anda mungkin juga menyukai