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