ARDUİNO PROGRAMLAMA 1.ARDUİNO’YU TANIMAK
Arduino, açık kaynak kodlu yazılım ve donanıma sahip bir mikrodenetleyici platformudur. Açık kelimesi ile gerçek anlamda açık tasarımı ifade edilmektedir. Baskılı devresi, şematik tasarımı, pc üzerinde çalışan derleyicisi, kütüphaneleri ve tüm detayları ile internet ortamında ücretsiz paylaşılmaktadır.
Arduino aynı zamanda mikro denetleyici cihazın adı olarak da kullanılmaktadır. Baş tasarımcılarının ( Massimo Banzi ve David Cuartielles ) İtalyan olmaları nedeniyle cihazın adı da doğal olarak İtalyancadan seçilmiş… Kelime “Sıkı arkadaş” anlamına gelen bir erkek ismi.
Niçin Arduino?
- Hem donanımı hem de yazılımı Açık kaynaklı,
- Ucuz
- Sadece USB veya Bluetooth ile iletişim
- İleri teknolojileri Board a kolay entegre edebilirsiniz
Kullandığımız Arduino UNO kartında Atmega 328 mikrodenetleyicisi bulunmaktadır.
Arduino UNO kartımızın özellikleri
Bir proje hazırlanırken kart seçiminde en çok dikkat edilecek huşuların başında kartımızın analog ya da dijital giriş ve çıkış sayısı ile işlemcimizin program hafızasıdır.
ARDUİNO PROGRAM YAZMA PENCERESİ
File: Bu menüden genelde yeni bir yazım sayfası açma, mevcut programı kaydetme gibi işlemler yapılır. Bu menüdeki Preferences/Tercihler seçeneğinden sayfanın yazı büyüklüğünü ayarlayabiliriz.
Sketch: Bu menünün en çok kullanacağımız özelliği kütüphane eklemektir. Arduinonun başka kütüphanelere ulaşabilmesi için o kütüphaneyi buradan ekleyip, program içerisinde uygun kodlarla onu programa çağırırız.
Tools: Bu menüden en çok kullanacağımız özellikler ise kullandığımız arduino bordunu seçmek ve arduinonun takılı olduğu USB portunu seçmek olacaktır. Doğru port seçili değil ve/veya kullandığımız karttan farklı bir kart seçili ise program hata verecektir.
Bu simge ile yazdığımız programı kontrol ederiz, eğer programda bir hata varsa bu hata editörün en alt kısmında gözükür.
Bu simge ile yazdığımız programı kartımıza yükleriz eğer hata varsa yine editörün alt kısmında gözükür hatalar düzeltildikten sonra yükleme yapılabilir. Yükleme yapıldığında program otomatik kaydedilirde.
Yazılan programı kaydetmek için kullanılır.
2. PROGRAM OLUŞTURMA
NOT!
Arduino programında satırların neredeyse %90’ının sonu noktalı virgülle biter. Buna dikkat edilmelidir yoksa program hata verir.
Bir Arduino programında olmazsa olmaz iki kısım (fonksiyon) vardır bunlar void setup() ve void loop()
dur.
Void setup başlangıç ayarlarıdır ve genelde burada giriş çıkış ayarları yapılır. Void loop ise sürekli çalışan ana programdır.Void setup sadece bir defa çalışırken void loop bir döngü olup sürekli baştan sona çalışır.
Void setup ve void loop fonksiyonları yazılırken süslü parantez açılır yazılacaklar yazılır ve parantez kapanır. Parantezler eksik olursa program hata verir.
NOT !
Bir Arduino programı fonksiyonlardan oluşur. Anlatım kolaylığı açısından bazı fonksiyonlara komut diyebiliz. Birçok fonksiyonun (komut) sonu noktalı virgülle bitirilir. Fakat void setup , void loop gibi fonksiyonlara noktalı virgül konulmaz süslü parantez konulur.
pinMode(…,…); komutu
Arduino Uno katımızda 14 adet dijital giriş/çıkış bulunmaktadır. Bunlar 0-13 olarak isimlendirilirler. Bu numaralı portlara özel isimde atanabilir.
Bir portun giriş yada çıkış nasıl yapılabileceği aşağıdaki resimde gösterilmektedir. Giriş çıkış ayarı için kullanılan komut pinMode() komutudur.
Arduino programlamada komutlar parametreler(değerler) alır. PinMode komutu iki adet parametre alır ve bu parametreler komutun parantezleri içine yazılır.
Örneğin aşağıda 9 numaralı dijital pin çıkış olarak ayarlanmıştır.Kullanılan komut pinMode olup ilk aldığı değer pin değeridir (9 nolu pin) ikinci aldığı parametre ise pini çıkış yapan OUTPUT dur (giriş yapmak için INPUT yazılır).
digitalWrite(…,…) ; komutu
Çıkış olarak ayarladığımız bir pini aktif yada pasif etmek için kullanılan komut ise digitalWrite() komutudur.Yine pinmode gibi iki adet parametre alır, bunlardan ilki pin numarası ikincisi ise pinin durumudur (HIGH / LOW ).
Örneğin; digitalWrite(9,HIGH); // 9 numaralı pine 5v gönderir.
digitalWrite(9,LOW); // 9 numaralı pine 0v gönderir.
NOT!
Program yazarken komut satırınınsonuna açıklama yazılacağı zaman yan yana iki tane slash ( // ) konulmalıdır. Slashlar’dan sonra yazılan açıklamaları program algılamaz ,bunlar sadece programcı için yazılmış açıklamalardır.
delay(…); komutu
Bu komut milisaniye(ms) cinsinden bekleme yapar.Tek bir parametre alır oda ms cinsinden bekleme süresidir.
Örneğin ; delay(1000); // 1000ms=1sn bekleme yapar
3. LED YAKMA UYGULAMASI
Arduino kartımızın dijital pinlerinin 13 numaralı pinine kart üzerinde bağlanmış bir adet kırmızı led vardır bu led sadece 13 numaralı pinde olup diğer pinlerde yoktur.Diğer pinlere led bağlantısı gerektiğinde dışarıdan yapılacaktır.
Örnek Soru3.1: Arduino kartımızın üzerindeki 13 numaralı pine bağlı olan led diyodu 1sn ara ile yakıp söndüren programı yazınız.
void setup( )
{
pinMode(13,OUTPUT); // 13 numaralı pini çıkış yap komutu
}
void loop( )
{
digitalWrite(13,HIGH); // 13 numaralı çıkışa 5v gönder
delay(1000); // 1000ms yani 1snhiçbirşey yapmadan bekle
digitalWrite(13,LOW); // 13 numaralı çıkışa 0v gönder
delay(1000); // 1000ms yani 1snhiçbirşey yapmadan bekle
}
4. DEĞİŞKEN TANIMLAMA
Değişkenler içerisinde sayısaklamak için kullanılan veri tipleridir.
Her değişken türünün bir kapasitesi vardır. Örneğin int türünde tanımlanmış değişkenler içerisine en fazla 65535 sayısını yükleyebilirler.
Aşağıda tanımlanmış val isimli int türündeki değişkenin içerisine 5 rakamı atanmıştır.Bu değişkenin içerisine en fazla 65535 sayısı atanabilir.
NOT !Tanımlama yapıldıktan sonra satırın sonu mutlaka noktalı virgülle kapatılmalıdır.
Çok Kullanacağımız Veri tipleri:
byte : 0-255 arası sayıları saklamak için kullanılır (8 bit=1 byte)
int : 2 byte dır. 0-65535 arasısayıları saklamak için kullanılır.
long : 4byte dır. 0-4,294,967,295 sayıları saklamak için kullanılır.
float : 4byte dır. Ondalıklı sayıları saklamak için kullanılır.
double: Ondalıklı sayıları saklamak için kullanılır(virgülden sonra daha fazla basamak).
char: karakter saklamak için kullanılır.
Global Değişken Tanımı : Global değişken Arduino programının her yerinde geçerli değişkendir. Lokal değişken ise hangi fonksiyonun içinde tanımlarsan sadece orada geçerli değişkendir.
Global değişken void setup() fonksiyonunun üzerine yazılır ve hem void setup hemde void loop fonksiyonlarının içerisinde geçerli olur.
Örnek Soru4.1: Arduino kartımızın 2. Ve 3. Digital pinlerine iki adet led diyot bağlanıp 0.5 saniye ara ile yakıp söndürülecektir. Bunu yaparken 2.ve 3. Pinleri led1 ve led2 değişken isimlerini kullanarak gerçekleştiriniz.
int led1=2; //2 numaralı pin int olarak led1 diye adlandırıldı.
int led2=3; //3 numaralı pin int olarak led2 diye adlandırıldı.
// yukarıdaki iki değişken global değişkendir, hem setup hem de loop fonksiyonu için
geçerlidir.
void setup( )
{
pinMode(led1,OUTPUT); //led1 (2 nolu pin) çıkış yapıldı pinMode(led2,OUTPUT); //led2 (3 nolu pin) çıkış yapıldı
}
Void loop( )
{
digitalWrite(led1,HIGH); // led1 e 5v verildi digitalWrite(led2,LOW); //led2 ye 0v verildi
delay(500); // 500ms beklendi
digitalWrite(led1,LOW); // led1 e 0v verildi digitalWrite(led2,HIGH); //led2 ye 5v verildi delay(500); // 500ms beklendi
}
5. SERİ EKRAN KULLANIMI
Seri ekran kullanımı için gerekli iki komut vardır bunlardan birisi setup() fonksiyonuna yazılır diğeri ise
loop() yada diğer alt fonksiyonlara yazılır.
Seri ekran öncelikle Serial.begin(9600) komutu ile tanımlanır. Buradaki 9600 baudrate olan haberleşme hızı olup değişkenlik gösterebilir, fakat birçok uygulamada 9600’ü kullanacağız.
İkinci kullanacağımız komut ise ekrana yazı yazdırmak için kullanılan Serial.prinln(…) dir.
Örnek: void setup( )
{
Serial.begin(9600); // Burada seri ekranı haberleşmesini başlattık ve hızını 9600 yaptık
}
void loop( )
{
Serial.println(“ İyi Dersler”); // Cümleleri tırnak içine yazarız, değişkenleri ise parantezin içine olduğu gibi tırnaksız yazarız.
}
---------------------------------------------------------------------------------------
int degisken; void setup( )
{
Serial.begin(9600);
}
void loop( )
{
degisken=degisken+1; Serial.println(degisken); delay(500);
}
---------------------------------------------------------------------
int ab;
void setup( )
{
Serial.begin(9600);
}
void loop( )
{
ab=ab+1;
Serial.print(ab); // Dikkat! Print den sonra ln yoktur, ln yazılmazsa ,seri ekran Serial.print(“/”); // çıktısı yan yana ekrana yazılır. delay(500);
}
-----------------------------------------------------------------------------------
6. KARŞILAŞTIRMA KOMUTLARI (FONKSİYONLARI)
Karşılaştırma komutları değişkenlerin içeriklerini karşılaştırmak için kullandığımız fonksiyonlardır. Karşılaştırma sonucu bir karara varılıp işlem yapılır.
En çok kullanılan karşılaştırma komutları; IF ELSE, WHILE ve FOR dur.
NOT !
Kıyaslamalar her zaman iki eşit ile yapılacaktır, örneğin ab, 10’a eşitmi (ab==10).
IF Komutu
İf Komutu Kullanımını aşağıdaki gibi şekillerde kullanabiliriz. Hangisi rahatınıza gelirse,
1.örnekte tek satırda işi bitirdik. Süslü paranteze gerek kalmadı.
if (x>120) digitalWrite (led , HIGH) ; // x değeri 120 sayısından büyükse led pinini 5 volt ver
2.örnekte iki satırda işi bitirdik. Süslü paranteze yine gerek kalmadı.
if (x>120)
digitalWrite (led , HIGH) ; // x değeri 120 sayısından büyükse led pinini 5 volt ver
3. örnek,
if (x>120) {digitalWrite (led , HIGH) ;} // x değeri 120 sayısından büyükse led pinini 5 volt ver
4. örnek,
if (x>120) {
digitalWrite (led , HIGH) ; // x değeri 120 sayısından büyükse led pinini 5 volt ver
}
IF ELSE Komutu
Bu komut if karşılaştırması doğru ise if altına yazılan işlemleri yapar doğru değil ise else’in altına yazılan işlemler yapar.
Örnek : AB değişkeninin içeriği 10’mu diye kontrol ediyoruz If (AB==10)
{
Eğer if parantezi içindeki kıyaslama doğru ise buraya yazılan komutları işle
}
Else
{
Eğer if parantezi içindeki kıyaslama yanlış ise buraya yazılan komutları işle
}
----------------------------------------------------------------------------------------
int AB;
void setup()
{
pinMode(2,OUTPUT);
}
void loop ()
{
AB=AB+1;
delay(50);
if(AB==500)
{
digitalWrite(2,HIGH);
}
}
-------------------------------------------------------------------------------------------
WHILE Komutu
While komutu bir kıyaslama doğru olduğu sürece işlem yapmaya yarayan komuttur.
Örnek: AB değişkeni değeri 10 olduğu sürece K değişkeninin içeriğini 1’er 1’er arttırınız. While(AB==10)
{
K=K+1;
}
Örnek Soru6.3: Tanımladığımız bir değişkenin (AB) değeri 50ms arayla 1’er 1’er arttırılıp değeri 500 ‘den küçük olduğu sürece 2 numaralı pine bağlı ledi yakılı bırakan, 500’ün üzerine çıkınca söndüren program.
int AB; void setup()
{
pinMode(2,OUTPUT);
}
void loop ()
{
While(AB<500)
{
AB=AB+1;
delay(50); digitalWrite(2,HIGH);
}
digitalWrite(2,LOW);
}
NOT ! Programın herhangi bir yerine While(1) yazar isek program orada durdurulmuş olup daha başka bir yere gitmez.
FOR Komutu
For komutu da yine , for komutu içine yazılan kıyaslama doğru olduğu sürece yapılacak işlemleri yapmamıza olanak sağlar.
-------------------------------------------------------------------------------
void setup()
{
pinMode(2,OUTPUT);
}
void loop ()
{
for (int AB=0 ; AB<500 ; AB++)
{
delay(50); digitalWrite(2,HIGH);
}
digitalWrite(2,LOW);
}
-------------------------------------------------------------
7. ARDUİNO İLE BUTON KULLANIMI
Arduino ile buton kullanımında öncelikle bir buton ile led yakma örnekleri inceleyeceğiz.
Butonlarda her zaman pull-up ve pull-down direnci kullanılmalıdır devrenin doğru çalışması için.
Buton pull-up düzeneği ile bağlanırsa , butona basılınca devreye 0 bilgisi gider. Buton pull-down ile bağlanırsa , butona basılınca devreye 1 bilgisi gider.
NOT! : Butonları devrelerimize Pull-Down düzeneği ile bağlayacağız.
digitalRead(… ) Komutu
Bu komut bir pindeki dijital bilgiyi okumak için kullanılır ( dijital bilgi 0 ve 1 (0-5v) dur ). Bu komut bir adet parametre alır oda okunacak pin’in ismidir.
Örnek: 2 numaralı pindeki dijital bilgiyi okuyup durum değişkeninin içine aktarınız.
int durum;
durum = digitalRead(2);
----------------------------------------------------
int durum; // Buton okunduktan sonraki bilgi buraya kaydedilecek, butona basılırsa 1 okunur void setup(){
pinMode(5,INPUT); //5 numaralı pini giriş yaptık, çünki buton bağlanacak pinMode(8,OUTPUT); // 8 numara çıkış led bağlanacak
}
Void loop(){
durum = digitalRead(5); // butonu oku ve durum değişkenine kaydet if(durum==1) {
//Eğer okunan değer 1 ise butona basılmış demektir.
delay(500);
digitalWrite(8,HIGH); //Ledi yak
} }
------------------------------------------------
8. ANALOG İŞLEMLER
analogRead(...) Komutu
Bu komut ile Arduino kartımızın 6 adet analog girişlerinden (A0,A1…A5) birisine gelen bilginin okunmasını sağlar. Bir adet parametre alır.
Analog okunana bilgi ADC ( Analogdan Dijitale Çevirici) ile 0-1023arasında bir sayıya dönüştürülür. Örneğin A0 girişine dışarıdan 5v bilgisi gelirse , adc bunu 1023 olarak, 0v gelirse 0 olarak , 2.5v gelirse 512 olarak okur/çevirir.
analogRead(A0);
-------------------------------------------
int led=2; // LED'in bağlı olduğu 2 numaralı pine led ismi verdik ve bundan sonra bu isimle onu kullanacağız.
void setup()
{
pinMode(led,OUTPUT); //LED’in bağlı olduğu pini çıkış yap Serial.begin(9600); // Seri ekran haberleşmesini başlattık
}
void loop() {
Serial.println(analogRead(0)); // pinden okunan değer seri ekrana yazdırılıyor delay(200);
if( analogRead(0)>600 ) { //Eğer A0’a gelen voltajın dijital değeri 600 den büyükse ledi yak küçükse else git ve söndür.
digitalWrite(led, HIGH);
}
Else{
digitalWrite(led, LOW);
}
}
---------------------------------------------------------
- FONKSİYONLAR
Fonksiyonlar yardımı ile void loop () fonksiyonu dışında başka bir fonksiyona ulaşıp, bu fonksiyondaki işlemler yapıldıktan sonra geri dönen ve void loop’a kaldığı yerden devam edebiliriz.
Örneğin ; void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println(“ loop içindeyiz”); delay(1000);
alt_fonksiyon(); // Burada alt fonksiyon ismini yazarak oraya gideriz,orada yapılacaklar yapılınca tekrardan buraya döner ve buradan devam eder.
Serial.println(“loopa geri döndük”); While(1); // loop döngüsü durdurulur.
} // loop fonksiyonu burada biter ve tekrardan başa döner
void alt_fonksiyon()
{
Serial.println(“alt fonsiyon içindeyiz”); delay(1000);
} // Alt fonksiyonda işler bitince tekrardan geri döner
Alt fonksiyonlar özellikle büyük programlarda void loop() döngüsünün içi kalabalık olmasın diye çok fazla tercih edilir.
Alt Fonksiyona veri göndermek
Loop döngüsünün içinden alt fonksiyona istediğimiz kadar sayı gönderebiliriz.Örneğimizde alt fonksiyona iki sayı gönderiyoruz ve bu sayılar alt fonksiyonda toplanıp ekrana yazılıyor.
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println(“ loop içindeyiz”); delay(1000);
alt_fonksiyon(5,8); // buradan alt fonksiyona 5ve 8 rakamlarını gönderiyoruz Serial.println(“loopa geri döndük”);
While(1); // loop döngüsü durdurulur.
}
void alt_fonksiyon(int a,int b) // alt fonksiyona gelen sayılar a ve b değişkenlerine kaydedilir.Geri değer döndürülmeyeceği için alt fonksiyon void olarak tanımlandı
{
a=a+b; Serial.print(“sayi=”); Serial.println(a); delay(1000);
} // Alt fonksiyonda işler bitince tekrardan geri döner
Alt Fonksiyona veri göndermek ve geri veri almak
Alt foksiyona istediğimiz kadar veri gönderip, alt fonksiyondan bir adet veri alabiliriz. int deger;
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println(“ loop içindeyiz”); delay(1000);
deger = alt_fonksiyon(5,8); // buradan alt fonksiyona 5 ve 8 rakamlarını gönderiyoruz
Serial.println(deger);
While(1); // loop döngüsü durdurulur.
}
int alt_fonksiyon(int a,int b) // alt fonksiyona gelen sayılar a ve b değişkenlerine kaydedilir. Geriye tam sayı olarak veri gönderileceği için alt fonksiyon int (int tam sayı değerler alır) olarak tanımlandı.
{
Serial.println(“ alt fonksiyondayız”);
int k = a+b; // alt fonksiyona gelen sayılar toplanır ve k değerine atanır
return k ;//return ile alt programdan geri dönerken k değerini lopa göndeririz
}
10. LCD EKRAN KULLANIMI
Çalışmamızda kullanacağımız LCD ekran 2 satır ve her satıra 16 karakter yazabildiğimiz bir LCD olacaktır (2x16 LCD ).
LCD ekranı Arduino programımızda kullanabilmemiz için öncelikle LiquidCrystal kütüphanesini bilgisayarımıza yükleyip ,ilgili programımıza çağırmamız gereklidir.
Bu işi Sketch/Taslak menüsüne tıklayıp kütüphane ekle sekmesinden gerçekleştireceğiz, ilgili kütüphaneyi internetten indirmeliyiz.
Kütüphaneyi bir kez bilgisayara yüklediğimizde, her yeni program için bir daha yüklememize gerek yoktur, sadece programı yazarken , kütüphaneyi çağırmamız yeterli olacaktır.
Örneğin;
#include <LiquidCrystal.h> // Programımızın ilk satırına bu komutu yazarsak LCD kütüphanemiz programa çağırılmış olur. Fakat önceden Kütüphane mutlaka bilgisayara bir defa yüklenmiş olmalı.
LCD’de çok kullanılan 3 komut
lcd.clear(); // LCD ekranımızı silmek için kullanılır.
lcd.setCursor(5,0); // LCD ekrana yazma işleminin hangi sütun , hangi satırdan başlayacağını ayarlar.
NOT ! Önce sütun seçilir (0-15 arası ) , sonra satır (0-1) seçilir.İlk satır için 0 , ikinci satır için 1 yazılır.
lcd.print(" MERHABA "); // Ekrana yazı yazdırma mutlaka tırnak içerisinde olmalı. Tırnak konulmaz ise program onu değişken olarak kabul eder.
Yapılması gereken başlangıç ayarları
#include <LiquidCrystal.h> // Kütüphane çağrılıyor.
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); // Bu komut ile LCD nin bağlandığı pinler programa tanıtılıyor. Sırası ile LCD üzerindeki RS,E,D4,D5,D6,D7 pinlerinin Arduino karta bağlandığı yerler yazılmalıdır. Bu örnekte LCD A0,A1,A2,A3,A4,A5 pinlerine bağlanmıştır.
void setup()
{
lcd.begin(16, 2); // Kullanılan LCD nin 16 karakter 2 satır olduğunu belirttik.
}
void loop()
{ …….
}
NOT ! LCD ekrana Türkçe karakter yazamayız ( Hoşgeldini , ş ile değil s ile yazmalıyız).
Açıklama: Resimdeki LCD ekranın ilk sol üst pini 1 numaralı pini olup VSS dir , en sağdaki son iki pin ise ekranın arka aydınlatmasıdır ( bir üstteki lcd resminde bu iki bacak gösterilmemiştir).
#include <LiquidCrystal.h> // Kütüphane çağrılıyor.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Bu komut ile LCD nin bağlandığı pinler programa tanıtılıyor. Sırası ile LCD üzerindeki RS,E,D4,D5,D6,D7 pinlerinin Arduino karta bağlandığı yerler yazılmalıdır.
void setup()
{
lcd.begin(16, 2); // Kullanılan LCD nin 16 karakter 2 satır olduğunu belirttik. lcd.clear(); // LCD ekranımızı silmek için kullanılır.
}
void loop()
{
lcd.setCursor(0,0); // LCD ekrana yazma işlemi 0,0 dan başlayacak.
lcd.print(" Derse "); // 0. Satıra yani ilk satıra, 0. Karakterden itibaren “Derse” yazıldı. lcd.setCursor(0,1); // LCD ekrana yazma işlemi 0,1 dan başlayacak. lcd.print("Hosgeldiniz "); // 1. Satırın , 0. Karakterden itibaren “Hosgeldiniz” yazıldı.
}
NOT ! LCD ekranda değişken içeriklerini göstermek için değişkeni tırnak kullanmadan yazmalıyız komuta.
lcd.print(degisken); gibi
-----------------------------------------------------
#include <LiquidCrystal.h> // Kütüphane çağrılıyor.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Bu komut ile LCD nin bağlandığı pinler programa tanıtılıyor. Sırası ile LCD üzerindeki RS,E,D4,D5,D6,D7 pinlerinin Arduino karta bağlandığı yerler yazılmalıdır.
int degisken; // global değişkenimizi degisken ismi ile tanımladık. void setup()
{
lcd.begin(16, 2); // Kullanılan LCD nin 16 karakter 2 satır olduğunu belirttik. lcd.clear(); // LCD ekranımızı silmek için kullanılır.
}
void loop()
{
degisken=degisken+1; delay(500);
lcd.setCursor(0,0); lcd.print(degisken);
if (degisken = = 100)
{
lcd.setCursor(0,1); lcd.print("sayma bitti ");
While(1); // Bu komut programı durdurmaya yarar, buradan sonra loop döngüsü daha dönmez.
}
}
Bir yanıt bırakın