Arduino ile yürüyen ışık devresi

int led[12]={2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; //2 ile 12 arası dizi oluştur
void setup()
{
for(int i=2; i<13; i++)// “i” ye 2 değerini ver,13 e kadar adım artırılacak
{
pinMode(i, OUTPUT); // “i” çıkış değeri olarak tanımlansın
}
}
void loop(){
for(int i=2; i<13; i++){ //”i” yi 2 den başlayarak 13 kez artır
digitalWrite(i, HIGH); //”i” değerini “1” yap
delay(1000); //1000 milisaniye bekle
digitalWrite(i, LOW); //”i” değerini “0” yap
delay(1); //1 milisaniye saniye bekle
}}
Yukarıda kodu verilmiş olan devre, sağdan sola 2 den 12 ye kadar 11 adet digital çıkışı k sırasıyla”1″ +5V yapar ve program tekrar başa döner.
Bu şekilde çok çıkış içeren ve çıkışları aynı zaman aralıklarında aynı işi yapacak olan kodlar yazarken yukarıdaki gibi dizi oluşturmak ve “for” fonksyonunu kullanmak önemli ölçüde sadelik ve pratiklik sağlar.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Karaşimşek kodu
const int dizi[] = {2,3,4,5,6,7,8,9,10,11,12}; //süslü parantez içindeki pinleri dizi elemanları olarak ata
void setup () {
for(int i=0; i<12 ;i++)// for döngüsü ile dizi elemanlarına ulaş
{ pinMode(dizi[i], OUTPUT); }}// dizi de belitilen pinleri çıkış olarak ayarla
void loop()
{ for(int i=0; i<12; i++){//dizi de tanımlanan pinleri sırasıyla 80 milisaniye “1” yap sonra söndür
digitalWrite(dizi[i],HIGH);
delay(80);
digitalWrite(dizi[i],LOW); }
for(int k=7;k>-1; k–)//dizi de tanımlanan pinleri ters yönde sırasıyla 80 milisaniye “1” yap sonra söndür
{
digitalWrite(dizi[k],HIGH);
delay(80);
digitalWrite(dizi[k], LOW);
}
}
Yukarıda verilen kod dizi oluşturularak for döngüsü ile sağdan sola 2 den 12 ye kadar 11 adet digital çıkışı sırasıyla “1” +5V yapar ve ters sırayla tekrar başa döner.
Yukarıda verilen kodlardaki gibi çok çıkış içeren ve çıkışları aynı zaman aralıklarında aynı işi yapacak olan kodlar yazarken, yukarıdaki gibi dizi oluşturup for fonksyonu ile bunu yapabiliriz ama daha karışık işlemler yaparken aşağıda anlatılacağı gibi her çıkışın “0” veya “1” değerini ayrı ayrı tanımlamamız ve her işlemden sonraki zaman aralığını tek tek girmemiz gerekir.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Led animasyonu
Şu unutulmamalıdır ki burada asıl amaç led yakmak veya ledlerle çeşitli efektler elde etmek değildir,bu devrelerdeki ledler sadece arduino pinlerinin “1” yada “0” oluşunu gözlemlemek amaçlıdır,ledler burada Role,dc motor,lamba,görsel veya işitsel arayüzler,motor sürücüler v.b aygıtları temsil ederler.
Aşağıda verilen kod da void setup() dan sonra {……} süslü parantezler arasındaki noktalı kısma alt alta yazılan pinMode fonksiyonuyla arduinonun çıkış olarak kullanılacak pinleri tanımlanmıştır.Daha sonra void loop() dan sonraki {……} süslü parantezler arasındaki noktalı kısma asıl çalışacak kod yazılmıştır.
Bu kod basit bir led animasyon kodudur 500 ms aralıklarla digitalWrite fonksiyonu ile belirlenen çıkışları “1” veya “0” yapar. Tabi burada her bir ledin röle,motor sürücü v.b bir çıkış aygıtını temsil ettiği unutulmamalıdır.
Örneğin çamaşır veya bulaşık makinesi gibi bir dizi sıralı işlem gerçekleştirerek çalışacak bir cihaz bu şekilde basitçe kodlanabilir.
Ayrıca “if” fonksiyonu kullanılarak belli çıkışların “1” olması veya kodun başlaması,bir yerde durması veya devam etmesi bazı şartlara bağlanabilir.
Örneğin çamaşır makinesi kodunun başlaması kapağın kapalı olmasına ve motorun çalışması makinenin su alması şartına “if” fonksiyonu ile bağlanabilir.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup()
{
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
digitalWrite(12, HIGH);
digitalWrite(7, LOW);
delay(500);
digitalWrite(2, LOW);
digitalWrite(12,LOW);
digitalWrite(3, HIGH);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(12, LOW);
digitalWrite(3, LOW);
digitalWrite(11, LOW);
digitalWrite(4, HIGH);
digitalWrite(10, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(12, LOW);
digitalWrite(3, LOW);
digitalWrite(11, LOW);
digitalWrite(4, LOW);
digitalWrite(10, LOW);
digitalWrite(5, HIGH);
digitalWrite(9, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(12, LOW);
digitalWrite(3, LOW);
digitalWrite(11, LOW);
digitalWrite(4, LOW);
digitalWrite(10, LOW);
digitalWrite(5, LOW);
digitalWrite(9, LOW);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(12, LOW);
digitalWrite(3, LOW);
digitalWrite(11, LOW);
digitalWrite(4, LOW);
digitalWrite(10, LOW);
digitalWrite(5, LOW);
digitalWrite(9, LOW);
digitalWrite(6, LOW);
digitalWrite(8, LOW);
digitalWrite(7, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11, LOW);
digitalWrite(12, LOW);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12, LOW);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(12, LOW);
digitalWrite(3, LOW);
digitalWrite(11, LOW);
digitalWrite(4, LOW);
digitalWrite(10, LOW);
digitalWrite(5, LOW);
digitalWrite(9, LOW);
digitalWrite(6, LOW);
digitalWrite(8, LOW);
digitalWrite(7, LOW);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
delay(500);