Kontrol Servo dengan Metode Pengajaran (Teach Function)

Ditulis oleh agan

بِسْــــــــــــــــمِ اﷲِالرَّحْمَنِ اارَّحِيم

Halo, Hai, Wuzzup, berjumpa lagi dengan ane pada penghujung hari dibulan Mei Tahun 2016.
Tak terasa hari demi hari, waktu demi waktu sudah berlalu begitu saja dengan cepat ya gan.

Pada hari saat ane mempublish artikel yang sedang ente baca ini bertepatan tanggal 31 Mei 2016. Ane memposting artikel ini di penghujung bulan, wew tumben sekali ya? ada apa memangnya? Nah, sebenarnya di Bulan Mei ini bisa dibilang juga ane masih lumayan banyak kesibukan di dunia nyata, terlebih lagi untuk fokus terhadap tugas yang diberikan oleh Dosen ane nih gan -_-

Dan ane memposting artikel ini karena ane merasa punya hutang kepada ente semua, karena Blog ane ini ane targetkan untuk memposting minimal 4 artikel dalam satu bulannya. Dan setelah ane login blogger dan melihat artikel bulan ini, ternyata ane belum memposting artikel ke-empat di bulan Mei ini, Okelah ane publish di penghujung pergantian bulan Mei 2016. By the way bagi ente yang Muslim, sebentar lagi kita akan berjumpa dengan Bulan Suci Ramadhan, semoga saja dibulan ini kita dapat memaksimalkan peribadatan kita dengan Maksimal. Amiin

Oke tak usah bertele - tele, di artikel atau tutorial arduino kali ini, kita akan mencoba mengontrol servo dengan arduino. Lebih tepatnya kita akan mengontrol derajat putar servo sesuai dari nilai potensiometer yang sudah kita Map range nilainya dari 0-1023 menjadi 0-180. Sama seperti artikel sebelumnya yang sudah di publish di blog ini berjudul "Mengontrol Servo dengan Potensiometer". Lalu apa bedanya dengan artikel kali ini? Bedanya adalah kita akan mengembangkannya dengan menambahkan button untuk merubah state untuk mode "Free mode", "Record mode" atau "Play mode". Penasaran? Mari langsung saja di simak artikelnya :)


Alat dan Bahan yang dibutuhkan :
  • 1x Arduino / Genuino Board
  • 1x Potensiometer 10K
  • 1x LED (Warna bebas)
  • 1x Resistor 220 Ohm
  • 1x Resistor 10K Ohm
  • 1x Button (Tacticle Switch)
  • 1x Motor Servo
  • Kabel jumper secukupnya
  • Breadboard (Project Board)

Langkah - Langkahnya :
1.) Pertama, susunlah rangkaian seperti gambar dibawah ini
Keterangan Konfigurasi Kabel :
  • Hubungkan Pin 5V Arduino pada VCC di Breadboard
  • Hubungkan Pin GND Arduino pada GND di Breadboard
  • Hubungkan Pin A0 Arduino pada Kaki tengan Potensio
  • Hubungkan Pin 2 Arduino pada Salah satu kaki Button
  • Hubungkan Pin 3 Arduino pada kabel Kuning Servo
  • Hubungkan Pin 4 Arduino pada Anoda LED
2.) Setelah itu sambungkan Arduino pada Laptop/PC dengan menggunakan kabel serial.
3.) Download dan Install program Arduino IDE di Arduino.cc ( If Needed )
4.) Setelah itu, jalankan program Arduino-nya.
5.) Klik menu "Tools -> Board -> Arduino Uno"
6.) Klik menu "Tools -> Port -> ( Pilih Port arduino yang terdeteksi di komputer anda )
7.) Lalu masukan Sketch dibawah ini.

Klik LIHAT DONG untuk melihat sketch
/* Mengontrol Servo dengan Metode Teaching
 * Created by Muhamad Andi Prasetyo
 * Senin, 21 Maret 2016
 * Email : Muhandi.prasetyo@gmail.com
 * www.boarduino.web.id 
*/

#include <Servo.h>  
Servo servoAne;
int potensio = 0;
int hasilPotensio;
byte penyimpanan[800];
int hitungRekaman = 0;
const int  tombol = 2;
const int indikator = 4;
int button_penghitung = 0;
int statusButton = 0;
int statusTerakhirButton = 1;

void setup() {
  pinMode(tombol, INPUT_PULLUP);
  pinMode(indikator, OUTPUT);
  Serial.begin(9600);
  servoAne.attach(3);
}

void loop() {
   statusButton = digitalRead(tombol);

   if (statusButton != statusTerakhirButton) {
      if (statusButton == HIGH) {
         digitalWrite(indikator, HIGH);
         button_penghitung++;
         delay(100);
         Serial.print("Counter : ");
         Serial.println(button_penghitung);
      }
      else{
        digitalWrite(indikator, LOW);
      }
   }

   if(button_penghitung == 1) {
      hasilPotensio = analogRead (potensio);
      hasilPotensio = map(hasilPotensio, 0, 1023, 0, 180);
      Serial.println(hasilPotensio);
      servoAne.write (hasilPotensio);
      delay (10);
  } 
   else if(button_penghitung == 2) {
     rekamNilaiPotensio();
  } 
   else if(button_penghitung == 4) {
     mainkanServo();
  }
  statusTerakhirButton = statusButton;
}

void mainkanServo() {
  Serial.println ("Servo sedang bermain, yeah!");
  while(true) {
    for (int i=0;i<hitungRekaman;i++) 
    {
      digitalWrite(indikator, LOW);
      servoAne.write (penyimpanan[i]);
      delay (15);
      Serial.println (penyimpanan[i]);
    }   
  }
}

void rekamNilaiPotensio() {
   Serial.println ("Merekam nilai potensio, Max 12 Detik");
   delay(15);
    for (int i=0;i<800;i++)  
    {
      hasilPotensio = analogRead(potensio);
      hasilPotensio = map(hasilPotensio, 0, 1023, 0, 180);
      servoAne.write(hasilPotensio);
      penyimpanan[i]=hasilPotensio;
      delay(15);
      Serial.println(hasilPotensio);
   
      statusButton = digitalRead(tombol);
      if(statusButton == LOW)
      {
        digitalWrite(indikator, LOW);
        button_penghitung++;
        hitungRekaman = i;
        return;
      }
      else{
        digitalWrite(indikator, HIGH);
      }
   }
   button_penghitung++;
   hitungRekaman = 800;
}


Terimakasih telah berkunjung, selamat mencoba, semoga bermanfaat.

Blog, Updated pada: 23:27:00
Comments
0 Comments

0 comments:

Post a Comment

Masih Bingung atau Hal Lainnya? Silahkan Bertanya di Kolom Komentar :)

~ Dilarang SARA
~ Dilarang PORNOGRAPHY
~ Dilarang SPAM
~ Dilarang MENINGGALKAN LINK AKTIF
~ Maaf untuk Anonymous, tidak bisa Berkomentar.

Apabila Komentar anda belum muncul, Tunggu sampai di Moderasi.
Terimakasih atas Perhatiannya.


English French German Spain Italian Dutch Russian