Daha önce bahsettiğimiz gibi robotik sistemler giriş/çıkış (I/O -Input/Output) sistemleridir. Robotik bir sistem çevreden belirli sinyaller alır bunları kendi içerisinde değerlendirir ve sonucunda da başka bir birime (eyleyiciler) çıkış olarak bir iş yaptırır. Butonlar da giriş elemanıdır Arduino'ya dış ortamdan veri gönderir. Bu bize basit bir şekilde sensör etkisi sağlayarak algoritmalarımızı geliştirmemize yardımcı olacaktır. Yapacak olduğumuz ilk uygulama bir buton ile bir ledi yakmak. Bu örnek bu kadar kolay görünse de bizlere ufuk açacaktır. Çünkü bu basit koşul durumu robotik sistemlerin temelidir.
İlk Programımızı yazalım. Yapmak istediğimiz şey bir butona basıldığında ledin yanması buton bırakıldığında tekrar sönmesi, benzer bir şekilde gaza basıldığında arabanın gitmesi bırakıldığında durması gibi türevleri düşünülebilir. Ki bu örnek böyle diğer örnekleri pekiştirsin diye yapılıyor.
İlk Programımızı yazalım. Yapmak istediğimiz şey bir butona basıldığında ledin yanması buton bırakıldığında tekrar sönmesi, benzer bir şekilde gaza basıldığında arabanın gitmesi bırakıldığında durması gibi türevleri düşünülebilir. Ki bu örnek böyle diğer örnekleri pekiştirsin diye yapılıyor.
int butonPin = 5; // Butonu bağladığımız Pini 5 olarak ayarladık.
int ledPin = 8; // Ledi bağladığımız Pini 8 olarak ayarladık.
int butondurum = 0; // Butonun durumunu atadığımız bir değişken tanımladık.
void setup()
{
pinMode(ledPin, OUTPUT); // Led çıkış olarak ayarlandı.
pinMode(butonPin, INPUT); // Buton giriş olarak ayarlandı.
}
void loop()
{
butondurum = digitalRead(butonPin); // Buton pininden dijital okuma işlemi
if (butondurum == HIGH) // Butona basılmış ise durumu
{
digitalWrite(ledPin, HIGH); // Ledi yak .
}
else // Butona basılmamış ise durumu
{
digitalWrite(ledPin, LOW); // Ledi söndür.
}
}
8 yorum
Click here for yorumDirençle uğraşmadan ben direk 13. pini yakıp söndürüyorum daha kolay oluyor. Bu resimi nasıl çiziyorsunuz acaba? DEvre elemanları felan çok iyi duruyor?
ReplyFritzing ile yapıldı o resim...
Replyhttp://fritzing.org/home/
SAOL REYİZ SON MADDEYİ ATLAMIŞIM YAZDIM OLDU
ReplyHocam merhaba. Yazınızı okudum başarılı bir şekilde uyguladım. Öncelikle bundan dolayı teşekkür ederim. Ancak şöyle bir uygulama yapmak istiyorum. Butona bir defa basıp bıraktıktan sonra ledin örneğin 10 saniye yanması ve sonrasında sönmesi. Ya da butona bas çek yapıldıktan sonra motorun bir tam tur dönmesi gibi. Yardımcı olursanız sevinirim...
ReplyButonun kontrolüni yaptığın if kalıbının içine 10 sn delay verek led yakıp söndürme kodu yaz.
Replyif(Koşul)
{
LedYAK; // Burada senin kodun geçerli hangi pin kullanmışsan ona göre..
delay(10000);
LedKapat;
}
Motora tam tur attırma mevzusuna gelince motorunun cinsi önemli. Step motor ise butana basıldıktan sonra tam bir tur atacak şekilde komut yollamalısın. Step motorun adım sayısına göre. DC motorda tam bir tur attırabilmek için yardımcı ekipmana ihtiyacın olabilir. Encoder gibi. Tam tur atınca uyarı alıp duracak. Tabi burada mekanik şartlarda göz önüne alınmalı. Çünkü bir motor bir tam tur atmadan yeterince atalet kazanmışsa. sen ona voltaj vermesen de dönmeye devam edecektir. Buna dikkat etmelisin. Düşük hızlarda dönmesi daha avantajlı.
Aslında butona basıldı mı diye kontrol etmemize gerek yok. digitalWrite fonksiyonu zaten bu işi yapıyor. Yani if komutu ile durumu kontrol etmek yerine aşağıdaki kodu kullanabiliriz.
ReplydigitalWrite(ledPin, butondurum);
Aynı işlemi butonla değil de anahtarla yapmak istiyorum. Kodda ve bağlantılarda nasıl bi değişiklik olur acaba?
ReplyAynı işlemi butonla değil de anahtarla yapmak istiyorum. Kodda ve bağlantılarda nasıl bi değişiklik olur acaba?
ReplyConversionConversion EmoticonEmoticon