Temelelektronik.info

Bilgiler > Arduino Kamera Kontrolü Devresi



Arduino Kamera Kontrolü Devresi

Devrenin Elemanları:
Joystick(kumanda Kolu): 5 bacaklı devre elemanıdır. Bu bacaklar + ve - uçları, yatay ve düşey uçları ve kumanda butonu ucudur. Bu elemman kumanda kolunun pozisyonuna göre 2 farklı gerilim değeri üretir.

Servo Motor: 3 adet bacağı bulunur. Bunlar -, + ve sinyal uçlarıdır. Sinyal ucuna uygulanan sinyalin şekline göre 0 'la 180 derece arasında yön değiştirir. 

Devrenin çalışması:
kumanda kolunun konumu değiştiğinde, kumandadan arduinoya bağlı uçlardaki gerilim değerleri değişir. Bu değerleri okuyan arduino bu değerlere göre kameraya sinyal göndererek, konumun değişmesini sağlar. 

Normal bir servo motor 180 derece hareket edebilmektedir. Kameranın altında iki servo motor bir birine bağlanarak, hareket kabiliyeti 360 dereceye çıkarılmıştır. 

_____Program_______________________________________________________________

#include <Servo.h>
int sensorPinh = A0;    // to Vry pin of Left joystick
int sensorPinv = A1;    // to Vrx pin of right joystick
int datah = 0;
int datav = 0;
int sensorValueh = 0;  // variable to store the value coming from the sensor
int sensorValuev = 0;
Servo myservoh1;  //horizantal 1 servo
Servo myservoh2;  //horizantal 2 servo
Servo myservov;   //vertical servo
int temph = 0;
int tempv = 0;
void setup() {
  Serial.begin(9600);
  myservoh1.attach(8);
  myservoh2.attach(9);
  myservov.attach(10);
}
void loop() {
  // read the value from the sensor:
  sensorValueh = analogRead(sensorPinh);
  Serial.println(sensorValueh);
  sensorValuev = analogRead(sensorPinv);
  datah = sensorValueh / 2.84f;  
  datav = (sensorValuev / 5.67f);
//release servos when joysticks are free
  if (datah > 166 && datah < 172)
  {
    temph++;
    if (temph > 10)
    {
      myservoh1.detach();
       myservoh2.detach();
    }
  }
  else
  {
    temph = 0;
    myservoh1.attach(8);
     myservoh2.attach(9);
  }
  if (datav > 87 && datav < 92)
  {
    tempv++;
    if (tempv > 10)
    {
      myservov.detach();
    }
  }
  else
  {
    tempv = 0;
    myservov.attach(10);
  }
//divide one joystick to two servo
if(datah>180)
{
  myservoh1.write(180);
  myservoh2.write(datah-180);  
  }
  else
  {
  myservoh2.write(datah-180);
      myservoh1.write(datah);
    }
    myservov.write(datav);
  Serial.print("yatay:");
  Serial.print(datah);
  Serial.print("dusey:");
  Serial.print(datav);
  Serial.println();
  delay(400);
}


________________________________________________________________


sonraki bilgi:      Ambalajlı Su Kalite Testi Raporu

önceki bilgi:       Kamera kontrol devresi

 
 

Bu sayfaya 267  defa bakıldı


Bu internet sitesi kar amacı gütmemektedir. Bu içeriğin siteden kaldırılmasını istiyorsanız alttaki butonu kullanarak içeriğin kaldırılması için istekte bulunabilirsiniz.