Selasa, 17 Maret 2015

Belajar Arduino untuk Mengerakan Roda Mecanum

Hallo-Hallo, bagaimana kabarnya sobat AWI'ers, Kali ini kami akan membahas tentang Roda mecanum dan bagaimana cara menggerakkannya dengan menggunakan Arduino. Berikut pokok pembahasan tentang topik hari ini
  • Apa Itu Mecanum
  • Bahan-bahan apa saja yang di butuhkan
  • Bagaimana cara pemrogramannya
Oke langsung saja

Mecanum
Mecanum atau Mecanum wheel menurut om Wikipedia "The Mecanum wheel is one design for a wheel which can move a vehicle in any direction". Kalau versi Indonesianya kurang lebih sebagai berikut : Salah satu jenis roda yang di desain bisa bergerak ke segalah arah. "SEGALA ARAH" yap, sobat sobat bisa menggerakkan maju, mundur, geser kiri, geser kanan tanpa merubah sudut posisi Mobile Robot yang menggunakan roda tipe ini.

Contohnya seperti ini

Pergerakan roda mecanum (gbr dari http://www.chiefdelphi.com/forums/showthread.php?p=1432211)
Bentuk mecanum, salah satunya seperti ini
Bahan-bahan apa saja yang di butuhkan
Bahan-bahan yang diperlukan untuk percobaan kali ini adalah
  • Arduino UNO
  • Arduino Adafruit Motor Shield
  • 2 Roda mecanum Right
  • 2 Roda Mecanum Left
  • 4 buah motor DC (high torsi)
  • 4 shaft motor to mecanum
  • 4 bracket L
  • Batere lippo 3 cell
  • Kabel Secukupnya

Pada projek kali ini menggunakan driver Adafruit Motor Shield karena shield ini mempunyai 4 output driver motor, sehingga pas untuk menggerakkan 4 roda.



Cara Pemrograman
  • siapkan arduino software terlebih dahulu
  • pastikan sudah terdeksi com portnya arduino
  • pilih board arduino uno pada software
  • pilih com yang sesuai dengan driver arduino yang sudah terinstall
  • tulis program seperti berikut ini
// Simple Adafruit Motor Shield sketch
// -----------------------------------
// edit by : sekolahrobot.com

// Arduino pins for the shift register
#define MOTORLATCH 12
#define MOTORCLK 4
#define MOTORENABLE 7
#define MOTORDATA 8

// 8-bit bus after the 74HC595 shift register
// (not Arduino pins)
// These are used to set the direction of the bridge driver.
#define MOTOR1_A 2
#define MOTOR1_B 3
#define MOTOR2_A 1
#define MOTOR2_B 4
#define MOTOR3_A 5
#define MOTOR3_B 7
#define MOTOR4_A 0
#define MOTOR4_B 6

// Arduino pins for the PWM signals.
#define MOTOR1_PWM 11
#define MOTOR2_PWM 3
#define MOTOR3_PWM 6
#define MOTOR4_PWM 5
#define SERVO1_PWM 10
#define SERVO2_PWM 9

// Codes for the motor function.
#define FORWARD 1
#define BACKWARD 2
#define BRAKE 3
#define RELEASE 4


void setup()
{
}


void loop()
{
  maju();
  delay(1000);
  mundur();
  delay(1000);
  geserkiri();
  delay(1000);
  geserkanan();
  delay(1000);
 
}
void maju()
{
   motore(1,200);
   motore(2,200);
   motore(3,200);
   motore(4,200);
}
void mundur()
{
   motore(1,-200);
   motore(2,-200);
   motore(3,-200);
   motore(4,-200);
}

void geserkanan()
{
   motore(1,200);
   motore(2,-200);
   motore(3,200);
   motore(4,-200);
 
}

void geserkiri()
{
   motore(1,-200);
   motore(2,200);
   motore(3,-200);
   motore(4,200);
 
}


// Initializing Library Driver
// ------------
// There is no initialization function.
//
// The shiftWrite() has an automatic initializing.
// The PWM outputs are floating during startup,
// that's okay for the Adafruit Motor Shield, it stays off.
// Using analogWrite() without pinMode() is valid.
//


// ---------------------------------
// motor
//
// Select the motor (1-4), the command,
// and the speed (0-255).
// The commands are: FORWARD, BACKWARD, BRAKE, RELEASE.
//
void motor(int nMotor, int command, int speed)
{
  int motorA, motorB;

  if (nMotor >= 1 && nMotor <= 4)
  { 
    switch (nMotor)
    {
    case 1:
      motorA   = MOTOR1_A;
      motorB   = MOTOR1_B;
      break;
    case 2:
      motorA   = MOTOR2_A;
      motorB   = MOTOR2_B;
      break;
    case 3:
      motorA   = MOTOR3_A;
      motorB   = MOTOR3_B;
      break;
    case 4:
      motorA   = MOTOR4_A;
      motorB   = MOTOR4_B;
      break;
    default:
      break;
    }

    switch (command)
    {
    case FORWARD:
      motor_output (motorA, HIGH, speed);
      motor_output (motorB, LOW, -1);     // -1: no PWM set
      break;
    case BACKWARD:
      motor_output (motorA, LOW, speed);
      motor_output (motorB, HIGH, -1);    // -1: no PWM set
      break;
    case BRAKE:
      // The AdaFruit library didn't implement a brake.
      // The L293D motor driver ic doesn't have a good
      // brake anyway.
      // It uses transistors inside, and not mosfets.
      // Some use a software break, by using a short
      // reverse voltage.
      // This brake will try to brake, by enabling
      // the output and by pulling both outputs to ground.
      // But it isn't a good break.
      motor_output (motorA, LOW, 255); // 255: fully on.
      motor_output (motorB, LOW, -1);  // -1: no PWM set
      break;
    case RELEASE:
      motor_output (motorA, LOW, 0);  // 0: output floating.
      motor_output (motorB, LOW, -1); // -1: no PWM set
      break;
    default:
      break;
    }
  }
}

void motore(int xMotor, int kecepatan)
{
  if(kecepatan >= 0 && kecepatan <= 255)
  {
      motor(xMotor, FORWARD, kecepatan);
  }
  if(kecepatan >= -255 && kecepatan <= -1)
  {
      kecepatan = map(kecepatan, -255, -1, 255, 1);
      motor(xMotor, BACKWARD, kecepatan);   
  }
}

// ---------------------------------
// motor_output
//
// The function motor_ouput uses the motor driver to
// drive normal outputs like lights, relays, solenoids,
// DC motors (but not in reverse).
//
// It is also used as an internal helper function
// for the motor() function.
//
// The high_low variable should be set 'HIGH'
// to drive lights, etc.
// It can be set 'LOW', to switch it off,
// but also a 'speed' of 0 will switch it off.
//
// The 'speed' sets the PWM for 0...255, and is for
// both pins of the motor output.
//   For example, if motor 3 side 'A' is used to for a
//   dimmed light at 50% (speed is 128), also the
//   motor 3 side 'B' output will be dimmed for 50%.
// Set to 0 for completelty off (high impedance).
// Set to 255 for fully on.
// Special settings for the PWM speed:
//    Set to -1 for not setting the PWM at all.
//
void motor_output (int output, int high_low, int speed)
{
  int motorPWM;

  switch (output)
  {
  case MOTOR1_A:
  case MOTOR1_B:
    motorPWM = MOTOR1_PWM;
    break;
  case MOTOR2_A:
  case MOTOR2_B:
    motorPWM = MOTOR2_PWM;
    break;
  case MOTOR3_A:
  case MOTOR3_B:
    motorPWM = MOTOR3_PWM;
    break;
  case MOTOR4_A:
  case MOTOR4_B:
    motorPWM = MOTOR4_PWM;
    break;
  default:
    // Use speed as error flag, -3333 = invalid output.
    speed = -3333;
    break;
  }

  if (speed != -3333)
  {
    // Set the direction with the shift register
    // on the MotorShield, even if the speed = -1.
    // In that case the direction will be set, but
    // not the PWM.
    shiftWrite(output, high_low);

    // set PWM only if it is valid
    if (speed >= 0 && speed <= 255)   
    {
      analogWrite(motorPWM, speed);
    }
  }
}


// ---------------------------------
// shiftWrite
//
// The parameters are just like digitalWrite().
//
// The output is the pin 0...7 (the pin behind
// the shift register).
// The second parameter is HIGH or LOW.
//
// There is no initialization function.
// Initialization is automatically done at the first
// time it is used.
//
void shiftWrite(int output, int high_low)
{
  static int latch_copy;
  static int shift_register_initialized = false;

  // Do the initialization on the fly,
  // at the first time it is used.
  if (!shift_register_initialized)
  {
    // Set pins for shift register to output
    pinMode(MOTORLATCH, OUTPUT);
    pinMode(MOTORENABLE, OUTPUT);
    pinMode(MOTORDATA, OUTPUT);
    pinMode(MOTORCLK, OUTPUT);

    // Set pins for shift register to default value (low);
    digitalWrite(MOTORDATA, LOW);
    digitalWrite(MOTORLATCH, LOW);
    digitalWrite(MOTORCLK, LOW);
    // Enable the shift register, set Enable pin Low.
    digitalWrite(MOTORENABLE, LOW);

    // start with all outputs (of the shift register) low
    latch_copy = 0;

    shift_register_initialized = true;
  }

  // The defines HIGH and LOW are 1 and 0.
  // So this is valid.
  bitWrite(latch_copy, output, high_low);

  // Use the default Arduino 'shiftOut()' function to
  // shift the bits with the MOTORCLK as clock pulse.
  // The 74HC595 shiftregister wants the MSB first.
  // After that, generate a latch pulse with MOTORLATCH.
  shiftOut(MOTORDATA, MOTORCLK, MSBFIRST, latch_copy);
  delayMicroseconds(5);    // For safety, not really needed.
  digitalWrite(MOTORLATCH, HIGH);
  delayMicroseconds(5);    // For safety, not really needed.
  digitalWrite(MOTORLATCH, LOW);
}

Test Robot

Sabtu, 08 September 2012

Arduino Seven Segment | Tutorial Arduino Dasar

tutorial arduino | Halo sobat AWI'ers.... ketemu lagi di akhir pekan. Kali ini kami akan sedikit bermain main dasar tentang bagaimana bertatap muka antara arduino dengan seven segment.

Sudah pada tau seven segment kan. itu loh yang biasa dipakai ditampilan-tampilan jam digital yang bentuknya kayak kotak - kotak ada angkanya 0 - 9


Seven Segment 0 - 9 (*)

Sebelum kita belajar lebih jauh alangkah baiknya kita mengenal apa itu seven segment, bagaimana konfigurasinya yang ada di seven segment.

Pada Umumnya seven segment terdiri 7 batang led yang disusun membentuk angka 8 (*seperti pada gambar diatas), dimana setiap segmentnya terdiri dari LED yang salah satu kaki terminal lednya di jadikan satu atau yang disebut dengan common. 

skema dari 7 batang led tadi biasanya di tandai dengan huruf a - g, sebagai berikut

skema seven segment (*)

Kaki yang dijadikan satu / common sendiri dibagi menjadi 2 yaitu kaki common anoda dan kaki common cathoda.
Penjelasan common anoda dan common katoda

Common Anoda
common Anoda merupakan bagian kaki dari anoda (+) yang dijadikan satu dan dihubungkan dengan arus positif tegangan. sedangkan untuk mengaktifkan kaki yang lainnya harus di beri tegangan negatif. atau led akan menyala jika dalam kondisi aktif low (diberi logika 0).
Misalkan ingin menampilkan angka 1, maka yang harus di lakukan adalah. kaki common di beri tegangan +, sedangkan kaki b dan c di beri tegangan -

Common Katoda
Common katoda ini kebalikannya dari common anoda, jadi kaki common yang disatukan adalah kaki katoda (-), sehingga untuk mengaktifkan kaki yang lain di beri tegangan (+) atau diberi logik high (1).

Berikut ini adalah gambar dari seven segment common anoda dan katoda
kaki kaki common (*)

Sekarang langsung ke percobaan arduino dengan seven segment,
yang perlu disiapkan
  • projectboard
  • arduino uno
  • seven segment (boleh anoda maupun katoda)
  • kabel jumper
  • tegangan (power supply)
Langkah langkah tutorial arduino seven segment
  • pasang seven segment pada project board
  • atur kabel jumper dengan susunan sebagai berikut

Arduino Pin 7 Segment Pin Connection
 2 7 (A)
 3 6 (B)
 4 4 (C)
 5 2 (D)
 6 1 (E)
 7 9 (F)
 8   10 (G)
 9  5 (DP)
  • pada percobaan kali ini kami menggunakan seven segment common katoda, maka kaki common dihubungkan dengan ground (-). 
  • masukkan program berikut di arduino software 
// www.arduino.web.id
// urut dari 0 - 9
// untuk 7segment common katoda, jika menggunakan common Anoda, silahkan dganti "1" dengan "0"

void setup() {             
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  digitalWrite(9, 0);  // start with the "dot" off
}

void loop() {
   // write '0'
 digitalWrite(2, 1);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 1);
 digitalWrite(8, 0);
 delay(500);
  // write '1'
 digitalWrite(2, 0);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 0);
 digitalWrite(6, 0);
 digitalWrite(7, 0);
 digitalWrite(8, 0);
 delay(500);
 // write '2'
 digitalWrite(2, 1);
 digitalWrite(3, 1);
 digitalWrite(4, 0);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 0);
 digitalWrite(8, 1);
 delay(500);
  // write '3'
 digitalWrite(2, 1);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 1);
 digitalWrite(6, 0);
 digitalWrite(7, 0);
 digitalWrite(8, 1);
 delay(500);
  // write '4'
 digitalWrite(2, 0);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 0);
 digitalWrite(6, 0);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
 delay(500);
 // write '5'
 digitalWrite(2, 1);
 digitalWrite(3, 0);
 digitalWrite(4, 1);
 digitalWrite(5, 1);
 digitalWrite(6, 0);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
 delay(500);
// write '6'
 digitalWrite(2, 1);
 digitalWrite(3, 0);
 digitalWrite(4, 1);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
 delay(500);
// write '7'
 digitalWrite(2, 1);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 0);
 digitalWrite(6, 0);
 digitalWrite(7, 0);
 digitalWrite(8, 0);
 delay(500);
 // write '8'
 digitalWrite(2, 1);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 1);
 digitalWrite(6, 1);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
 delay(500);
 // write '9'
 digitalWrite(2, 1);
 digitalWrite(3, 1);
 digitalWrite(4, 1);
 digitalWrite(5, 0);
 digitalWrite(6, 0);
 digitalWrite(7, 1);
 digitalWrite(8, 1);
 delay(2000);

}
  • beginilah bentuk hasilnya  

  • Selamat bermain-main dengan seven segment anda. semoga tutorial arduino ini membantu


(*) gambar di dapat dari internet image google

Jumat, 31 Agustus 2012

test midi to usb

Halo sobat AWI'ers (arduino.web.id)... lama tak bersua ya,..
sudah lama tidak bermain-main dengan my arduino. OK di project akhir pekan ini saya akan mulai membahas sedikit demi sedikit tentang bagaimana bermain-main dengan midi. dan nanti project akhirnya akan membuat drum elektronik sendiri secara sederhana dan murah tentunya.

Oke Perlengkapan yang dibutuhkan adalah sebagai berikut
  1. arduino uno + kabel data
  2. midi to usb
buat yang belum tau midi to usb berikut gambarnya
 interface ini mudah didapat di toko komputer ataupun toko musik, biasanya sering di pakai di keyboad piano yang di hubungkan ke pc untuk aransemen lagu. Oh ya fitur dari kabel midi to usb ini adalah sebagai berikut :
  • Connector Computer: USB A male
  • Connector Midi In: 5-Pin DIN male
  • Connector Midi Out: 5-Pin DIN male
  • LED for power and data direction
  • USB powered and true plug & play
  • No driver installation necessary
harga midi to usb ini ada yang mahal ada yang murah, yang saya pakai sekitar 200 ribuan. kalau mau nitip monggo :)

Pertama-tama yang harus di pelajari adalah conector midi In yang berisi 5 pin, ini nanti akan terhubung dengan supply 5 v sama output (tx) dari arduino .

berikut gambar susunan pin nya
susunan dari midi connector
Rangkaian midi controller
Untuk driver dari midi cable sendiri langsung plug and play. Setelah semuanya terpasang. bisa di install terlebih dahulu aplikasi Native instrument battery 3
Jika sudah semua, mari kita coba midi to usb.

download program berikut pada arduino anda



void setup() {
  //  Set MIDI baud rate:
  Serial.begin(31250);
}

void loop() {
  // play notes from F#-0 (0x1E) to F#-5 (0x5A):
  for (int note = 0x24; note < 0x3C; note ++) {
    //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
    noteOn(0x90, note, 0x45);
    delay(500);
    //Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
    noteOn(0x90, note, 0x00); 
    delay(500);
  }
}

//  plays a MIDI note.  Doesn't check to see that
//  cmd is greater than 127, or that data values are  less than 127:
void noteOn(int cmd, int pitch, int velocity) {
  Serial.write(cmd);
  Serial.write(pitch);
  Serial.write(velocity);
}

Sambil di buka aplikasi battery3 coba jalankan.
kalau berbunyi secara gantian maka midi usb anda berhasil. Selamat mencoba

Senin, 30 April 2012

unknown Device pada arduino

Beberapa hari yang lalu setelah install ulang notebook dan mencoba belajar arduino kembali ternyata ada kendala pada arduino. Arduino Uno yang saya miliki tidak bisa terdetect dengan baik, com / port arduino tidak bisa terbaca dan muncul tulisan "unknown device" pada device manager


setelah update sana update sini ternyata juga tidak bisa menyelesaikan masalah tersebut. tetapi berkat bantuan dari si empu google akhirnya masalah ini bisa terselesaikan. adapun caranya adalah sebagai berikut :

  • Klik kanan pada unknown device, pilih update driver software
  • Setelah itu pilih browse my computer for driver software
  • pilih let me pick from a list from a list .... 

  • Pilih ports (COM & LPT)

  • Klik next dan klik arduino LLC jika ada

  • Jika belum ada klik have disk dan arah kan ke driver arduino yang sudah ada, pilih sesuai dengan boar arduino. setelah itu baru muncul arduino yang di maksud.
  • Pilih arduino LLC kemuduan arduino Uno dan klik yes

  • arduino akan succesfully dan terinstal / muncul pada com 
  • Arduino siap digunakan kembali

Semoga membantu








Sabtu, 14 April 2012

Menampilkan Data Rotary Encoder di LCD dengan Arduino

hallo AWI'ers....
postingan kali ini merupakan lanjutan dari postingan rotary encoder kemarin. Kalau kemarin data yang di tampilkan di serial monitor, yg sudah terintegrasi dengan software Arduino. pada kali ini akan di tampilkan pada LCD 16x2

settingan port pada LCD sama dengan postingan LCD sebelumnya

Konfigurasi pin2nya adalah sebagai berikut :

  • Pin RS (kaki 4) di sambungkan dengan pin arduino digital pin 12
  • Pin E (kaki 6) di sambungkan dengan pin arduino digital pin 11
  • Pin D4 (kaki 11) di sambungkan dengan pin arduino digital pin 5
  • Pin D5 (kaki 12) di sambungkan dengan pin arduino digital pin 4
  • Pin D6 (kaki 13) di sambungkan dengan pin arduino digital pin 3
  • Pin D7 (kaki 14) di sambungkan dengan pin arduino digital pin 2
  • sambungkan potensio 10 KOhm ke  +5v dan GND , dan Pin LCD 3 ke potensio
  • Pin 5 (R/W) ke Ground
  • output Rotary (kabel kuning) disambungkan dengan pin arduino digital pin 7 
setelah semua konfigurasi selesai,buka halaman editor untuk arduino silahkan coding seperti di bawah ini


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int inPin = 7;   // pushbutton connected to digital pin 7
int val = 0;     // variable to store the read value
int counter = 0;
int encoderLast = LOW;

void setup() {
  digitalWrite(inPin,HIGH);
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Rotary : ");
  lcd.setCursor(0, 1);
  lcd.print(" Arduino.web.id");

}

void loop() {
  val = digitalRead(inPin);   // read the input pin
  lcd.setCursor(8, 0);
  if((encoderLast == LOW)&&(val==HIGH))
  {
    counter++;
    lcd.print(counter);
  }
  encoderLast = val;
}

gambar hasil percobaan

Kamis, 12 April 2012

Mengendalikan motor DC dengan arduino

Postingan pada kali ini adalah lanjutan dari Rangkaian Driver Motor yang sempat beberapa hari terlupakan, gara-gara asik dengan beberapa postingan baru.

Setelah rangkaian driver yang kemarin yang menggunakan relay selesai. tiba saatnya untuk menggabungkan dengan arduino tentunya dengan sedikit program untuk pemanasan.

pada percobaan kali ini yang perlu di persiapkan adalah
Driver Motor DC (Rangkaian driver motor dc relay)
board arduino
power supply
kabel

sambungkan port input pada driver motor dc ke port digital (pin 3, pin 4, pin 5 dan pin 6). cobalah buat program seperti dibawah ini


#define ka1 3 //pin 3
#define ka2 4 //pin 4
#define ki1 5 //pin 5
#define ki2 6 //pin 6
void setup() {
  // set the digital pin as output:
pinMode(ka1, OUTPUT);
pinMode(ka2, OUTPUT);
pinMode(ki1, OUTPUT);
pinMode(ki2, OUTPUT);

  digitalWrite(ka2, HIGH);
  digitalWrite(ka1, HIGH);
  digitalWrite(ki2, HIGH);
  digitalWrite(ki1, HIGH);

}
void loop()
{
  digitalWrite(ka1, HIGH);
  digitalWrite(ka2, LOW);
  digitalWrite(ki1, HIGH);
  digitalWrite(ki2, LOW);
  delay(1000);
  digitalWrite(ka1, LOW);
  digitalWrite(ka2, HIGH);
  digitalWrite(ki1, LOW);
  digitalWrite(ki2, HIGH);
  delay(1000);
}

relay akan aktif jika di beri kondisi 0 (low)



selamat mencoba

Rabu, 11 April 2012

Motor DC dengan Speed Encoder

Gara-gara kemarin ada yang order motor dc dengan speed encoder, akhirnya project driver motor kemarin masih terbelengkalai.  Banting stir untuk nyobain baca data dari rotary encoder yang sudah built in motor ini dengan arduino.

ada yang penasaran dengan bentuk motor yg murah meriah ini, dan inilah penampakannya

spesifikasi dari motor dc rotary encoder ini bisa di lihat di empunya toko robot

Okeh lanjut, kita perhatikan datasheet dari motor dc yg di lengkapi dg encoder ini



Spesifikasi Warna Kabel
Motor
Input +5 to +12 VDC Merah
Ground Biru
Speed Encoder
Input +5 VDC Orange
Ground Hitam
Output Open Collector Kuning
116 pulsa

setelah diamati data output Encoder adalah open collector, berarti agar bisa langsung masuk ke port dari arduino, harus di kasih pull up. pull up bisa external atau bisa dari internal arduino. mungkin bisa di baca disini untuk tipe2 output dari encoder 

untuk pull up sendiri sebagai referensi bisa di lihat di website resminya arduino
kita konfigurasi pin2 sebagai berikut

 Langsung dari output (open collector) atau kabel kuning yang ada di rotary encoder tersebut masuk ke pin 2 digital. Untuk pull upnya ikut di programnya.

oh ya motor dengan speed encoder ini outputnya hanya berupa 1 data jadi tidak bisa mendeteksi motor itu cw/ccw

setelah terpasang semuanya, saatnya kita melakukan program di arduino, buka editor arduino masing-masing, berikan program seperti dibawah ini



int ledPin = 13; // LED connected to digital pin 13
int inPin = 2;   // encoder output connected to digital pin 2
int val = 0;     // variable to store the read value
int counter = 0;
int encoderLast = LOW;


 void setup() {
   digitalWrite(inPin,HIGH); // pul up arduino
   pinMode(ledPin, OUTPUT);  //pin 13set to output
   pinMode (inPin,INPUT); //pin 2 set to input
  Serial.begin(9600); //to serial monitor
 }

 void loop() {
  val = digitalRead(inPin);   // read the input pin
  digitalWrite(ledPin, val);    // sets the LED when encoder works
  if((encoderLast == LOW)&&(val==HIGH))
  {
    counter++;
    Serial.println(counter); //write in serial monitor
  }
  encoderLast = val;
 
   }

setelah selesai silahkan compile dan program.
percobaan rotary encoder dengan arduino ini adalah langsung di baca di serial monitor. nextime akan dicoba untuk di baca di LCD
Selamat mencoba