Arduino programlamayı duyman neredeyse yoktur. Şayet ilk defa duydum diyorsanız bence bu konuya giriş için Arduino nedir? yazısını okuyabilirsiniz. Aşağıda yapacağımız örneğimizde ışıkların ardarda sırayla yanan ve sönen Arduino modelleme tasarlamaya çalışalım.
Gerekli Malzemelerimiz bir adet ARDUINO, bir adet BOARD, iki adet LED, iki adet DİRENÇ, iki adet JUMPER kablo bu oluşturacağımız örnek için yeterli olacaktır.
Şemada da gözüktüğü gibi topraklamayı GND üzerinden jumper ara kablo ile boarda yapılır. Bu kısım bizim negatif olarak adlandırdığımız kısımdır. Ledlerimizi yerleştirtikten sonra Ledlerimizin dengesiz bir elektrik akımına karşı yanmaması için direnç kullanılır. Şayet kullanmazsak Ledlerimizin yanma olasılığı artar. LED lerin bir bacağı kısa bir bacağı ise uzun olur kısa olan bacak sırası üzerinden şemaya dikkatlice bakınız topraklama yaptığımız sıraya bir adet direnç koyulur, diğer taraftan yani uzun bacak üzerinden de pin ler üzerine JUMPER kablo ile bağlama işlemi yapılır. Diğer Led içinde aynı işlemler yapılır. Anlaşılabilir olması için iki adet LED kullanılmıştır.
apt-get install arduino
void setup() { pinMode(4, OUTPUT); pinMode(5, OUTPUT); } void loop() { digitalWrite(4, HIGH); digitalWrite(5, LOW); delay(1000); digitalWrite(4, LOW); digitalWrite(5, HIGH); delay(1000); }
Yukarıda Arduino setup fonksiyonu pinleri ile girişi mi çıkış mı yapacağımızı belirlerken çağırırız. Cihaz ilk önce bu methodu okur ardından da devamlı olarak loop fonksiyonunu çağırır.
Peki biz örneğimizi biraz daha genişletelim ve örneğimize üçüncü bir LED ekleyelim bağlantı şemamıza uygun bir şekilde yapılandıralım bu örneğimizde ise üç LED'i ters ya da düz yanacağını python programlama dili üzerinden göndereceğimiz kod ile belirleyelim.
int gelenByte; void setup() { Serial.begin(9600); pinMode(6, OUTPUT); pinMode(5, OUTPUT); pinMode(4, OUTPUT); } void duz() { digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); delay(1000); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, LOW); delay(1000); digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); delay(1000); } void ters() { digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); delay(1000); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, LOW); delay(1000); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); delay(1000); } void loop() { if (gelenByte == 'R') { duz(); } if (gelenByte == 'L') { ters(); } if (Serial.available() > 0) { gelenByte = Serial.read(); if (gelenByte == 'R') { duz(); } if (gelenByte == 'L') { ters(); } } }
import serial ser = serial.Serial('/dev/ttyUSB1', 9600) ser.write('L') # sola dogru ser.write('R') # saga dogru
Yorumlar
Phyton ile ilgili olan kısmını başka konularda biraz daha açabilir misiniz?
Python seri port haberleşmesi konusuyla ilgili daha önce bir örnek yayınlamıştım. Python seri port haberleşmesi için python-serial kurulumu yapmanız gerekebilir. Linux kullanıcıları konsol üzerinden apt-get install python-serial diyerek kurulum yapabilirler.