ana sayfa    videolar     bilgiler     devreler  

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);
}


________________________________________________________________




Kaynak: Çoğunlukla Ekşisözlük ve Wikipedia
 
sonraki bilgi:      Ambalajlı Su Kalite Testi Raporu
önceki bilgi:       Kamera kontrol devresi
 
 
Bu sayfaya 231  defa bakıldı

 


eğitsel videolar     seslisozluklog