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

  1. devre şemasını paylaşabilirmisiniz hocam

    YanıtlaSil
  2. hocam buton2 joysticki nereye bağlayacağız 3.pine mi? kodlarda olmadığı için devre şeması da yok bu haliyle tam çalışmıyor

    YanıtlaSil

Yorum Gönder

Yorumlarımızda genel ahlak kurallarınının dışına çıkmayalım, lütfen.