Geçenlerde ebay’den bir Arduino Uno almıştım. Yavaş yavaş bu platformu öğreniyorum. Uzun zamandır, devrelerimden aldığım verileri bilgisayarda görebilmeliyim diye düşünüyordum. Bu işi en kolay nasıl yapabilirim diye düşünürken işin sırrının seri iletişimde saklı olduğunu farkettim.
Birkaç gün önce ebay’den, seri iletişim için mutlaka işime yarayacağını düşündüğüm USB to Serial RS232 diye bir eleman aldım. Dün bu aleti kurcalarken ilk defa bilgisayar ile devrem arasında iletişim kurdum. Bugün ise Arduino ile bilgisayarım arasında iletişim kurmak için bu alete gerek olmadığını öğrendim. Zaten elimizdeki Arduino ve USB kablosu ile bu iletişim sağlanıyormuş(Yeniyim bu konularda. Şimdi kendime diyorum be adam yazdığın kodu Arduino’ya aktarıren TX ve RX ledleri yanıyor,demek ki seri iletişebiliyormuş sadece USB kablosu ile:) )
Neyse, hikaye kısmını geçelim. Daha önce Arduino ile ilgili bir anlatımın olduğu dökümanda Motor kontrolü uygulaması vardı. Aynı devreyi tekrar kurdum. Fakat bu sefer bilgisayar ile kontrol edeceğiz. Yandaki şekilde de göreceğiniz üzere çok basit bir devremiz var. Ben 5V yerine 9V’luk bir pil kullanıyorum(12V Motor ile).
Arduino’yu bilgisayarınıza bağladıktan sonra, derleyiciyi açarak aşağıdaki kodları yazalım.
int inByte; //Seri yoldan gelen veri
int motorSpeed=125; //İlk durumda motorun çalışma hızı
void setup() {
Serial.begin(9600); // Seri iletişim ayarı - iletişimi aktifleştir ve hızını ayarla
analogWrite(9,motorSpeed); //Motorumuzu çalıştır
}
void loop() { //Program boyunca çalışan döngü
if (Serial.available() > 0) { //Eğer seri bilgi gelmişse
inByte = Serial.read(); //O bilgiyi oku ve inByte değişkenine ata
Serial.write("Alinan karakter:"); //Bilgisayara seri olarak 'Alınan Karakter:' yazısı gönder
Serial.println(inByte, DEC); //Bilgisayara seri olarak inByte değişkenindeki değeri onluk tabanda gönder(bildiğiniz 10)
if(inByte==119) //'w' harfi int olarak 119'a karşılık geliyor, yani klavyeden 'w' değeri gönderilmişse
{
if(motorSpeed <= 245) //Motor hızı 10 arttırıldığında 25 5'i aşmayacak ise
motorSpeed+=10; //Motor hızını 10 arttır
analogWrite(9,motorSpeed); //9.Pinde motor hızımız kadar PWM uygula
}
if(inByte==115) //'s' harfi int olarak 115'e karşılık geliyor, yani klavyeden 's' değeri gönderilmişse
{ if(motorSpeed >= 10) //Motor hızı 10 azaltığında 0'dan düşük bir duruma gelmeyecek ise
motorSpeed-=10; //Motor hızını 10 azalt
analogWrite(9,motorSpeed); //9.Pinde motor hızımız kadar PWM uygula
}
}
}
Eğer tüm adımları doğru şekilde yaptıysanız, motorunuz dönmeye başlayacaktır. Şimdi kodumuzu yazığımız Arduino Compiler’ımız açıkken CTRL+Shift+M yaparak Serial Monitor’ü açalım. (Tools Menüsü altından da ulaşabilirsiniz).
w yazıp send tuşuna bastığınızda moturunuzun hızlandığını, s yazdığınızda ise yavaşladığını gözlemleyeceksiniz.
Tek tek yapmak canınızı sıkıyor ise, wwwwww.. yazarak bir anda hızlandırabilirsiniz:)
NOT: Küçük harf olan w girmelisiniz, W girerseniz değişim gözlenmez.
* Programda Serial.begin() ile belirttiğiniz sayı ile Serial Monitor içinde sağ altta yer alan baud rate’in aynı olmasına dikkat edin
dostum bu arduinoyu nereden temin ettiğini öğrenmek istiyorum.Mümkünse paylaşır mısın?
http://www.ebay.com
http://www.dx.com buralarda ucuz fiyata klonları bulabilirsiniz. Türkiyeden almak isterseniz eğer
Robotistan burada bulabilirsiniz
güzel bir doküman olmuş.
Teşekkürler.
Bu anlatım tarzı ile devamını beklerim
Motorun uçlarını nasıl bağlayacağız birini 9 a bağladık ama öbür ucunu nere bağlayacağımızı bilmiyoruz yardım ederseniz seviniriz.
Çok öz ve faydalı bir çalışma olmuş. Ben faydalandım. Bu yüzden teşekkür ederim.
ben Arduinoya bağlı bir tuşa basıldığında bilgisayardaki herhangi birşeyin açılmasını istiyorum. Mesela hesap makinesini. Mümkün mü?