Arduıno ile Robot Kol Yapımı-Joysticklerle Kontrol.


Projemiz; Arduino ile programlanan, joystickler vasıtasıyla sağa-sola, yukarıya-aşağıya ve ileriye geriye hareket edebilen, kıskacı ile cisimleri tutup bırakabilen eklemli mekanik robot koldur. Robot kolun parçaları 3D yazıcı ile üretilmiştir. Eklemler ve dönüşler için 4 Adet Servo Motor kullanılmıştır. Montaj işlemleri vidalar, cıvatalar, somunlar yardımıyla tamamlandıktan sonra, gerekli kodlar yüklenerek proje tamamlanmıştır.

Malzeme Listesi:
1.      Arduino Robot Kol Kiti
2.      Arduino Sensor Shield
3.      Arduino Uno Başlangıç Seti
4.      2 Adet Joystick Modülü
Kodlar:


#include <Servo.h>
Servo myservo1;       // 4 adet servo motor kullanıldı
Servo myservo2;
Servo myservo3;      
Servo myservo4;

int butonDurum = 0;
int pozisyon_x1=0;    // Joystick1`den okunan analog değerler bu değişkenlerde tutulacak
int pozisyon_y1=0;
int butonPin = 2;     // Joystick buton pini arduino bağlantısı (Joystick SW çıkışı)
const int x1_pin=0;   // Joystick in x ve y eksenleri 0 ve 1. pinlere bağlanacak
const int y1_pin=1;

int pozisyon_x2=0;    // Joystick2`den okunan analog değerler bu değişkenlerde tutulacak
int pozisyon_y2=0;
const int x2_pin=3;   // Joystick in x ve y eksenleri 3 ve 4. pinlere bağlanacak
const int y2_pin=4;

void setup() {
myservo1.attach(9);    // ileri geri hareket eden motor -sağ motor
myservo2.attach(10);   //  yukarı aşağı hareket eden motor- sol motor
myservo3.attach(11);   //  kıskaç
myservo4.attach(6);    // alttaki motor
pinMode(butonPin, INPUT_PULLUP);
Serial.begin(9600);    // Seri haberleşme başladı
}

void loop() {
pozisyon_y2 = analogRead(y2_pin);                    //0. pinden analog veri okundu         
pozisyon_y2 = map(pozisyon_y2, 0, 1023, 50, 133);    //0-1023 değeri 50-133 değerine çekildi
myservo1.write(pozisyon_y2);                         // Elde edilen 50-133 arası açı değeri servoya gönderildi          
delay(100);                                          // Servonun uygun konuma gelmesi için kısa bir gecikme
pozisyon_y1 = analogRead(y1_pin);                    //1. pinden analog veri okundu        
pozisyon_y1 = map(pozisyon_y1, 0, 1023, 0, 90);      //0-1023 değeri 0-90 değerine çekildi
myservo2.write(pozisyon_y1);                         // Elde edilen 0-90 arası açı değeri   servoya gönderildi 
  delay(100);

  butonDurum = digitalRead(butonPin);
  if (butonDurum==1){
     myservo3.write(175);                            // Buton kullanılarak kıskaç açılır.          
  }
    else{
       myservo3.write(115);
    }
 
  pozisyon_x1 = analogRead(x1_pin);                        //4. pinden analog veri okundu        
  pozisyon_x1 = map(pozisyon_x1, 0, 1023, 0, 180);         //0-1023 değeri 0-180 değerine çekildi
  myservo4.write(pozisyon_x1);                             // Elde edilen 0-180 arası açı değeri servoya gönderildi
  delay(100);                                              // Servonun uygun konuma gelmesi için kısa bir gecikme

Yorumlar