scriptaccess" value="always">
Bu dersimizde arduino, servo motor ve ivme sensörü kullanarak ivme sensörünündeki hareketi taklit eden bir robot yapmayı öğreneceğiz.

İşe servo motorları monte edeceğimiz aparatları yaparak başlayalım. 2 adet tower pro mg 995 servo motor kullanacağız. Bu motoru internet üzerinden satış yapan malzeme satıcılarından temin edebilirsiniz. Ben gittigidiyor.com sitesinden 24.90TLye aldım.

[img width=310 height=310]https://temrinlerim.org/images/arduino40.jpg[/img]

Motoru bir bakırlı prtinaks üzerine sabitlemeyi düşündüm. Bunun için ares programında bir kalıp hazırladım. Bu kalıba ait ares dosyasını konu ekinden indirebilirsiniz. Bilinen yöntemlerle baskı devremizi çıkarıyoruz.



Daha sonra her iki motorumuzu hazırlamış olduğumuz plaketlere şekilde görüldüğü gibi monte ediyoruz.



Şimdi de her iki motor bloğu tarafından hareket ettirilen parçaları yine bakırlı pertinaks ile yapacağız. Bu parçalara ait ares çizimi ekte mevcuttur. Yine bilinen yöntemlerle baskı devremizi çıkarıyoruz.



Şimdi hazırladığımız parçaları birleştirelim:















Şimdi de robotumuza bir kaç led ekleyelim. Baskı devresi ekte mevcuttur.



Led kartımızı da robata ekleyelim:
Ledlerimiz paralel bağlı olup katotlaına birer tane 470 ohm direnç bağlanmıştır.



Şimdi tüm parçalarımızı birleştirelim:












Fritzing çizimi:
Fritzing dosyaları konu ekinde mevcuttur.


Sensör için Bağlantı Pinleri:
• Vcc:5V
• Gnd: Gnd
• SDA:A4
• SCL:A5

Servo Motor için Bağlantı Pinleri:
• Kahverengi ya da siyah Kablolar:GND
• Kırmızı Kablo: 5V
• Servo 1 Sinyali: D9
• Servo 2 Sinyali: D10

Arduino kodlarımız:
description">Kod:
/* 
İVME SENSORU İLE ile 2 servo motor kontrol
*/

#include <Servo.h>
#include<Wire.h>
const int MPU=0x68;  // I2C address of the MPU-6050
int AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;

Servo myservo1;  // create servo object to control a servo
Servo myservo2;
int potpin1 = 0;  // analog pin used to connect the potentiometer
int potpin2=1;
int val1;    // variable to read the value from the analog pin
int val2; 
void setup()
{
   Wire.begin(); //seri haberleşme 
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);     // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
  Serial.begin(9600);
  myservo1.attach(9); 
 myservo2.attach(10); // attaches the servo on pin 9 to the servo object
}

void loop() 
{ 
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,14,true);  // request a total of 14 registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)     
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  Tmp=Wire.read()<<8|Wire.read();  // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
  GyX=Wire.read()<<8|Wire.read();  // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  GyY=Wire.read()<<8|Wire.read();  // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
  GyZ=Wire.read()<<8|Wire.read();  // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
  Serial.print("AcX = "); Serial.print(AcX);
  Serial.print(" | AcY = "); Serial.print(AcY);
  Serial.print(" | AcZ = "); Serial.print(AcZ);
  Serial.print(" | Tmp = "); Serial.print(Tmp/340.00+36.53);  //equation for temperature in degrees C from datasheet
  Serial.print(" | GyX = "); Serial.print(GyX);
  Serial.print(" | GyY = "); Serial.print(GyY);
  Serial.print(" | GyZ = "); Serial.println(GyZ);
 
  val1 =AcX;       // reads the value of the potentiometer (value between 0 and 1023) 
  val1 = map(val1, -16000, 16000, 0, 180);     // scale it to use it with the servo (value between 0 and 180) 
  val2 = AcY;           // reads the value of the potentiometer (value between 0 and 1023) 
  val2 = map(val2, -16000, 16000, 0, 180);
  myservo1.write(val1);                  // sets the servo position according to the scaled value 
  myservo2.write(val2);
  delay(100);                           // waits for the servo to get there 
}

Konuya ait ekleri temrinlerim.org sitesindeki İvme sensörünün hareketlerini izleyen robot yapalım isimli konu ekinden indirebilirsiniz.