Arduino programında C programlama dili kullanılır. Bu nedenle temel seviyede C programlama dilinden bahsedeceğim.
1.1. Değişkenler: Program içerisinde farklı değerler alarak programın işleyişini gerçekleştiren değerler kümesine denir. Değişken tanımlarken dikkat etmemiz gereken hususlar vardır. Bunlar:
int DEGER;
int DeGer;
int 9Deger; //Yanlış
int Deger9;
string Ad1;
int De&ger; //Yanlış
- Değişken tanımlanırken büyük ve küçük harf duyarlılığı vardır. Aşağıdaki örnekte tanımlanan değişkenler aynı isme sahip farklı değişkenlerdir.
int DEGER;
int DeGer;
- Değişken isimleri kesinlikle rakamla başlamaz. Fakat ilk karakterden sonra diğer karakterler rakam olabilir.
int Deger9;
string Ad1;
- Değişken isimleri içerisinde noktalama işaretleri ve diğer karakterler kullanılmaz. Sadece alt çizgi ( _ ) karakteri kullanılabilir.
string Ad_Soyad;
string Ad Soyad; //Yanlış
strind Ad_Soyad;
string text; // Yanlış
Kullanılan Değişken Türleri
1. Tamsayı Değişken Tipleri: Sadece sayısal değer alabilir. Sayısal değerlerinde ondalıklı kısımların kullanılmadığı değişken türüdür.
2. Ondalıklı Sayı Değişken Tipleri: Sadece ondalıklı sayısal değerleri alabilir.
3. Metin Türü Değişken Tipleri: Sayısal değerler dışında metinsel değerleri barındırmak için kullanılan değişken tipidir.
Ad="ALİ CAN";
Karakter='A';
4. bool değişken: "true" ve "false" olmak üzere sadece 2 değer alır. Evli-Bekar, Evet-Hayır gibi iki secenekli durumlar için kullanılır.
2. Kara Şimşek Programı ve Çalıştırılması
Kara şimşek olarak adlandırılan, paralel bağlı LED’lerden oluşan uygulamayı anlatacağım. Uygulamada devremizi istediğimiz kadar LED bağlayabiliriz. Bu uygulamayı 6 adet LED ile gerçekleştireceğiz. Aşağıdaki ilk uygulamamızda çıkış pinleri tek tek tanımlandı. Ana programda 7 numaralı pine bağlı portdan başlayarak sırasıyla 12 numaralı pine bağlı porta kadar ilk önce port lojik 1 yapıldı (5 volt çıkış) arkasından 100 mili saniye beklendi ve aynı port lojik 0 (Çıkış 0 volt) yapıldı. Bu işlemler tanımlanan portların hepsine sırasıyla uygulandı.
Kara Şimşek İlk Uygulama
void setup()
{
pinMode (7, OUTPUT); // 7 Numaralı Digital Pin Çıkış yapıldı
pinMode (8, OUTPUT); // 8 Numaralı Digital Pin Çıkış yapıldı
pinMode (9,OUTPUT); // 9 Numaralı Digital Pin Çıkış yapıldı
pinMode (10, OUTPUT); // 10 Numaralı Digital Pin Çıkış yapıldı
pinMode (11, OUTPUT); // 11 Numaralı Digital Pin Çıkış yapıldı
pinMode (12, OUTPUT); // 12 Numaralı Digital Pin Çıkış yapıldı
}
void loop()
{
digitalWrite (7, HIGH); // 7 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay (100); // 100 mili saniye bekle
digitalWrite (7, LOW); // 7 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (8, HIGH); // 8 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (8, LOW); // 8 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (9 , HIGH); // 9 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (9, LOW); // 9 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (10, HIGH); 10 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (10, LOW); 10 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (11, HIGH); 11 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (11, LOW); 11 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (12, HIGH); 12 Numaralı Pin Lojik 1 yapıldı (5 Volt) -LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (12, LOW); 12 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
}
Kara Şimşek İkinci Uygulama
İlk uygulamamızı programlama bilgimizi kullanarak kısaltabilir ve daha anlaşılır hale getirebiliriz. İlk olarak kullanacağımız port numaraları için integer veri türünde sabit bir dizi tanımlıyoruz. Arkasından bu dizi değişkeni ve for döngüsünü kullanarak Port pinlerini çıkış olarak tanımladık. For döngüsü program içerindeki tekrarlı işlemleri gerçekleştirmek için kullanılır. For döngüsünün yapısı aşağıdaki gibidir.
For(int i =Başlangıç Değeri; i <= Bitiş Değeri; Artım Değeri)
{
// Buradaki kodlar başlangıç değeri ile bitiş değerine arasındaki fark kadar tekrar eder.
// Bitiş değerine kadar sayılırken değer artım değeri kadar artar.
}
For(int i =1; i < =10; i ++)
{
// Bu aradaki kodlar 10 defa tekrar edecek
// Her tekrarda i değeri 1 arttırılacak
// i değeri 10’a eşit olana kadar döngü devam edecek
}
const int ledPini [] = {7,8,9,10,11,12}; // Port Numaraları için Sabit Dizi - ledPini[0]=7 gibi
void setup ()
{
for(int i=0; i<6;i++)
{
pinMode(ledPini [i], OUTPUT); // LED pinlerini çıkış olarak tanımladık
}
}
void loop()
{
for(int i=0; i<=5; i++) //İleri Sayım için
{
digitalWrite(ledPini[i],HIGH); //ledPini[i] Lojik 1 yapıldı (5 Volt) - LED Yanar
- Değişken isimleri birden fazla kelimeden oluşamaz. Yani kelimeleri boşluk tuşuyla ayıramayız. birden fazla kelimeden oluşacaksa alt çizgi " _ " karakteri kullanılır.
strind Ad_Soyad;
- Değişken tanımlamada Türkçe karakter kullanamayız. Değişken ismini nasıl tanımladıysak program içerisinde değiştirmeden kullanmalıyız.
- C# programında kullanılan komutlar değişken ismi olarak kullanılmaz.
Kullanılan Değişken Türleri
1. Tamsayı Değişken Tipleri: Sadece sayısal değer alabilir. Sayısal değerlerinde ondalıklı kısımların kullanılmadığı değişken türüdür.
Değişken | Değişken Adı | Değişken Aralığı |
SByte | Signed Byte | (-128) ~ (127) |
Byte | Byte | 0 ~ 255 |
short | Short | (-32768) ~ (+32767) |
ushort | Unsigned Short | 0 ~ 65535 |
int | Integer | (-2147483648) ~ (+2147483647) |
uint | Unsigned Integer | 0 ~ 4294967295 |
long | Long | (-9223372036854775808) ~ (+9223372036854775807) |
ulong | Unsigned Long | 0 ~ 184467440737095516157 |
Değişken | Değişken Adı | Değişken Aralığı |
float | Float | (± 1.5x10-45) ~ (±3.4x1038 ) |
double | Double | (± 5.0x10-324) ~ (±1.7x10308 ) |
decimal | Decimal | (± 1.0x10e-28) ~ (±7.9x10e28 ) |
3. Metin Türü Değişken Tipleri: Sayısal değerler dışında metinsel değerleri barındırmak için kullanılan değişken tipidir.
- String: Metinsel içerikli değerleri alabilen değişken tipidir
Ad="ALİ CAN";
- Char: Metinsel bir değişken türüdür, fakat değer olarak içerisinde tek bir karakteri barındırır.
Karakter='A';
4. bool değişken: "true" ve "false" olmak üzere sadece 2 değer alır. Evli-Bekar, Evet-Hayır gibi iki secenekli durumlar için kullanılır.
bool Durum;
5. Sabit Tanımlamak: Program içerisinde değişmeyen sayısal verileri tanımlamak için kullanılır.
const Double Pi=3,14; //Sabit değer
Sabit tanımlarken "const" deyimi kullanılır arkasından sabitin veri türü tanımlar ve son olarak sabitin ismi belirtilerek değeri atanır.
6. Dizi Değişkenlerin Tanımlanması: Çok elemanlı olan bir yapıda değişken tanımlarken dizi değişken kullanılır. Örneğin bir sınıfa ait öğrencilere ait veriler için değişken tanımlanırken dizi değişkenler kullanılır.
Double[] Sinif=new Double[30];
Yukarıda "Sinif" isminde, 30 elemanlı, double veri türünde bir dizi değişken tanımlanmıştır. Burada dikkat etmemiz gereken nokta dizilerde indis değeri "0" (Sıfır) ile başlar. Yukarıda tanımladığımız dizinin ilk elemanın indis değeri "0" son elemanın indis değeri ise "29" olacaktır.
Programda kullanılan değişkenler ve sabitler üzerinde yapılan matematiksel ve karşılaştırma işlemleri operatörler tarafından gerçekleştirilir.
const int ledPini [] = {8,9,10,11,12};
Yukarıki örnekte ise integer veri türünde 5 boyutlu sabit bir dizi tanımlanmıştır.Bu dizideki elemanların değerleriaşağıdaki gibidir
ledPini[0]=8, ledPini[1]=9, ledPini[2]=10, ledPini[3]=11, ledPini[4]=12,
1.2. Operatörler
Programda kullanılan değişkenler ve sabitler üzerinde yapılan matematiksel ve karşılaştırma işlemleri operatörler tarafından gerçekleştirilir.
Operatör | Anlamı | Örnek | Açıklama |
+ | Toplma | 10+30 | |
- | Fark | 30-20 | |
* | Çarp | 25*10 | |
/ | Böl | 50/5 | |
% | Mod | 10%3 | |
= | Atama | A=20 | |
= = | Gerçek Eşitlik | İf(A= =20) | |
!= | Eşit Değil | if(x ! =20) | |
|| | Veya | if( (k= =5) || (m>10) ) | |
| | Mantıksal Veya | ||
&& | Ve | if( (k= =5) && (m>10) ) | |
& | Mantıksal Ve | ||
>> | Sağa Ötele | 20>>5 | 20/25 |
<< | Sola Ötele | 20<<5 | 20*25 |
* = | Çarp | ||
+ = | Topla | ||
- = | Çıkar | ||
/= | Böl | ||
<<= | Sola Ötele | X<<=2 | |
>>= | Sağa Ötele | X>>=2 | |
%= | Mod | Y%=2 | Y=Y%2 |
> | Büyük | m>45 | |
< | Küçük | m<45 | |
>= | Büyük Eşit | m>=45 | |
<= | Küçük Eşit | m<=45 | |
+ + | Bir arttır | m++ | m=m+1 |
- - | Bir eksilt | m-- | m=m -1 |
2. Kara Şimşek Programı ve Çalıştırılması
Kara Şimşek İlk Uygulama
void setup()
{
pinMode (7, OUTPUT); // 7 Numaralı Digital Pin Çıkış yapıldı
pinMode (8, OUTPUT); // 8 Numaralı Digital Pin Çıkış yapıldı
pinMode (9,OUTPUT); // 9 Numaralı Digital Pin Çıkış yapıldı
pinMode (10, OUTPUT); // 10 Numaralı Digital Pin Çıkış yapıldı
pinMode (11, OUTPUT); // 11 Numaralı Digital Pin Çıkış yapıldı
pinMode (12, OUTPUT); // 12 Numaralı Digital Pin Çıkış yapıldı
}
void loop()
{
digitalWrite (7, HIGH); // 7 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay (100); // 100 mili saniye bekle
digitalWrite (7, LOW); // 7 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (8, HIGH); // 8 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (8, LOW); // 8 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (9 , HIGH); // 9 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (9, LOW); // 9 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (10, HIGH); 10 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (10, LOW); 10 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (11, HIGH); 11 Numaralı Pin Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (11, LOW); 11 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
digitalWrite (12, HIGH); 12 Numaralı Pin Lojik 1 yapıldı (5 Volt) -LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite (12, LOW); 12 Numaralı Pin Lojik 0 yapıldı (0 Volt) - LED Söner
}
Kara Şimşek İkinci Uygulama
İlk uygulamamızı programlama bilgimizi kullanarak kısaltabilir ve daha anlaşılır hale getirebiliriz. İlk olarak kullanacağımız port numaraları için integer veri türünde sabit bir dizi tanımlıyoruz. Arkasından bu dizi değişkeni ve for döngüsünü kullanarak Port pinlerini çıkış olarak tanımladık. For döngüsü program içerindeki tekrarlı işlemleri gerçekleştirmek için kullanılır. For döngüsünün yapısı aşağıdaki gibidir.
For(int i =Başlangıç Değeri; i <= Bitiş Değeri; Artım Değeri)
{
// Buradaki kodlar başlangıç değeri ile bitiş değerine arasındaki fark kadar tekrar eder.
// Bitiş değerine kadar sayılırken değer artım değeri kadar artar.
}
For(int i =1; i < =10; i ++)
{
// Bu aradaki kodlar 10 defa tekrar edecek
// Her tekrarda i değeri 1 arttırılacak
// i değeri 10’a eşit olana kadar döngü devam edecek
}
const int ledPini [] = {7,8,9,10,11,12}; // Port Numaraları için Sabit Dizi - ledPini[0]=7 gibi
void setup ()
{
for(int i=0; i<6;i++)
{
pinMode(ledPini [i], OUTPUT); // LED pinlerini çıkış olarak tanımladık
}
}
void loop()
{
for(int i=0; i<=5; i++) //İleri Sayım için
{
digitalWrite(ledPini[i],HIGH); //ledPini[i] Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite(ledPini[i],LOW); // ledPini[i] Lojik 0 yapıldı (0 Volt) - LED SÖNER
}
digitalWrite(ledPini[i],LOW); // ledPini[i] Lojik 0 yapıldı (0 Volt) - LED SÖNER
}
for(int j=5; j>=0; j--) //Geri Sayım için
{
digitalWrite(ledPini[j],HIGH); //ledPini[i] Lojik 1 yapıldı (5 Volt) - LED Yanar
{
digitalWrite(ledPini[j],HIGH); //ledPini[i] Lojik 1 yapıldı (5 Volt) - LED Yanar
delay(100); // 100 mili saniye bekle
digitalWrite(ledPini[j],LOW); // ledPini[i] Lojik 0 yapıldı (0 Volt) - LED SÖNER
}
}digitalWrite(ledPini[j],LOW); // ledPini[i] Lojik 0 yapıldı (0 Volt) - LED SÖNER
}
Ana programda ledPini[i] olarak tanımlanan sabit dizi ile pin çıkışları iki for döngüsü içerisinde kontrol edildi. Sırasıyla ledPini[i] numaralı pine bağlı port ilk önce lojik 1 yapıldı (5 volt çıkış) arkasından 100 mili saniye beklendi ve aynı port lojik 0 (Çıkış 0 volt) yapıldı. Bu işlemler for döngüsü bitene kadar tanımlanan portların hepsine sırasıyla uygulandı.
Ders Videosu