Arduino Serial monitor dediğimizde aklımıza gelmesi gereken iletişimdir çünkü serial port üzerinden yapılan işlemler serial monitorde gözükür nedir bu işlemler. veri gönderme, yazı yazdırma bilgi verme gibi nedenlerle kullanabiliriz. Örneklerde bunu çok daha iyi anlayacağız. Öncelikle arduino programlayabilmemiz için arduino idesini kurmamız lazım Buradan indirebilirsiniz kolay bir kurulumu var dikkat etmeniz gereken kurulum sonunda arduino driverini kurmak için size soracak kurulmasına izin vermelisiniz. Arduino klon kullanıyorsanız eğer googledan aldığınız klon ürün hangisiyse (uno, mega gibi) klon driver yazarak ulaşabilirsiniz.

Arduino ideyi açarak ilk örneğimizi hemen yapıyoruz ve serial monitor kullanarak sonuca bakıyoruz.

Kod yazmaya geçmeden önce birkaç ayar yapmamız gerekiyor. File menüsünden prefences e giriyoruz. Karşımıza gelen ekrandan isterseniz dil olarak Türkçe’yi seçebilirsiniz. “Show verbose output during” bölümünden upload ve compilation kısımlarını işaretliyoruz böylece daha detaylı çıktı görebileceğiz.

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

İlk defa programı açtığınızda sizi bu yazılar karşılayacak kısaca özetlemek gerekirse Arduino da iki temel fonksiyon vardır bunlar setup fonksiyonu ve loop fonksiyonu. Setup fonksiyonunda yazdığımız kodlar sadece bir kere çalaıştırılırken loop fonksiyonunda yazılan kodlar sürekli tekrar eder yani bir döngü fonksiyonudur. açıklama satırlarını artık silip kodlarımızı yazabiliriz.

void setup() {
Serial.begin(9600);
Serial.print("Burada yazilan kodlar bir kere tekrarlanır");
Serial.println("println yazarsak alt satira yazdiririz.");
}

void loop() {
Serial.print("Merhaba Dunya");
}

“begin” başlatmak anlamındadır serial monitor kullanacaksak ilk olarak seri haberleşmeyi başlatmalıyız. Serial.begin yazarak bunu yapıyoruz 9600 değeri ise baund rate değerimiz normal uygulamalarda 9600 değeri işimizi görecektir. Seri haberleşmeyi başlattıktan sonra Serial.print yada Serial.println yazarak Serial monitore yazı yazdırıyoruz peki bunları nasıl göreceğiz.

Ekranın sağ üstünde gördüğümüz merceğe benzer işaretten serial monitoru açabilirsiniz dikkat etmeniz gereken iki nokta var birincisi serial monitorde sağ alttan baund rate yi kodda yazdığımız değerler aynı yapmak diğer dikkat edilmesi gereken ise arduino nun buyuk kucuk harfe duyarlı olması. Sonraki yazımızda görüşmek üzere 🙂

 

Son zamanlarda çokca gündeme gelen bir konu Arduino kimi yazılarda eleştirilen kimi yazılarda da yere göğe sığdırılamayan bir konu aslında. Biz hem eleştirisini yapıcaz ama eleştirirken öğrenmeyi de ihmal etmiycez çünkü şuan bilimsel makalelerde bile arduino kullanan çalışmalar var biz çevremizde olup biten bu çalışmaları anlamak, geliştirmek daha güzellerini yapmak için bu konuda bilgi edinmemiz şart. İsterseniz öğrendikten sonra bir daha kullanmayın bu size kalmış ama az da olsa bilgimizin olması gereken bir konu bence.

Biraz bakalım bu arduıino nedir? Arduino atmega işlemci ailesini bünyesinde barındıran analog ve digital giriş çıkışlara sahip bilgisayar ortamından kolaylıkla programlanabilen bir mikrodenetleyici. Arduino aslen İtalya da üretilir orjinal bir arduinoyu anlamak için üzerinde arduino logosunun olup olmamasına ve made in italy yazısına bakabilirsiniz bunu diyorum çünkü arduinonun çakma sürümleri mevcut Arduino klon olarak satılıyorlar farkı ne derseniz farkı yok. Piyasada biraz araştırırsanız klonun orjinalden çok daha ucuz olduğunu göreceksiniz. Arduinoyu çocuk oyuncağı olarak gören arkadaşlar var bunun nedeni normal bir işlemciyi kodlamaktan çok daha kolay olması ama aslında yaptığımız bir işlemci kodlamak atmega işlemci kodlamak daha doğrusu.

Arduinonun çeşit çeşit sürümü var kimisinde kendisinde dahili WiFi bulunuyor kimisinde ethernet girişi kimisi çok küçük uygulamalarda kullanılıyor kimisi büyük detaylı uygulamalarda. Başlangıç düzeyinde ise Arduino Uno sıkça kullanılıyor başlangıç için ideal bir sürüm. Unoya biraz daha yakından bakalım isterseniz.

Evet Arduino Uno teknik olarak baktığımızda Atmega328P model mikroişlemci bulunduruyor. Besleme olarak 7-12V arasında bir kaynaktan arduinoyu besleyebilirsiniz. USB den bilgisayara bağladığınızda direk çalışacaktır zaten.

14 adet dijital giriş çıkış bulunmaktadır. bunların 6 tanesi PWM desteklidir. 6 tane de analog giriş çıkış bulunmaktadır. Sıradan bir kullanıcı için yetecek özellikleri bulunuyor sizde küçük ve orta düzey projelerinizde rahatlıkla kullanabilirsiniz.

Yazılımı matematik gibi düşünebiliriz ne kadar çok örnek yaparsak ne kadar çok kod yazarsak konuya o kadar çok hakim oluruz bu yüzden bolca örnek yapmamız gerekiyor bu yazımızda if else ile ilgili örnekleri sıralayacağız tavsiyem kopyala yapıştır yapıp çalışmayın tek tek yazın bütün kodları hadi başlayalım.

1)Klavyeden girilen öğrenci notuna göre harf notunu yazdıran program.

Koşullar=

0-39 = F

40-59 = E

60-69 = D

70-79 = C

80-89 = B

90-100 = A

#include<iostream>
using namespace std;
int sayi;
main(){
    baslangic:
    cout<<"Ogrencinin notunu girin=";
    cin>>sayi;
    if(sayi>=0 && sayi<40)
    {
        cout<<"F Kaldi";
    }
    else if(sayi>=40 && sayi<60)
    {
        cout<<"E";
    }
    else if(sayi>=60 && sayi<70)
    {
        cout<<"D";
    }
    else if(sayi>=70 && sayi<80)
    {
        cout<<"C";
    }
    else if(sayi>=80 && sayi<90)
    {
        cout<<"B";
    }
    else if(sayi>=90 && sayi<=100)
    {
        cout<<"A";
    }
    else
    {
        cout<<"Lutfen 0 ile 100 arasi deger girin\n";
        goto baslangic;
    }
}

2.Klavyeden kilosu ve boyu girilen kişinin vücut kitle indeksini bulup indekse göre durumunu yazdıran program

VKİ = kilo / (boy^2)

18.5 kg/m2’nin altında ise:Zayıf

18.5-24.9 kg/m2 arasında ise:Normal

25-29.9 kg/m2 arasında ise :Fazla kilolu

30-34.9 kg/m2 arasında ise: I. derece obez

35-39.9 kg/m2 arasında ise: II. derece obez

40 kg/m2 üzerinde ise: III. derece obez

#include<iostream>
#include<math.h>
using namespace std;
int vki,kilo;
float boy;
main(){
    cout<<"Kilonuzu girin=";
    cin>>kilo;
    cout<<"Boyunuzu metre cinsinden girin=";
    cin>>boy;
    vki=kilo/pow(boy,2);
    if(vki<18.5)
    {
        cout<<"Zayif";
    }
    else if(vki>=18.5 && vki<=24.9)
    {
        cout<<"Normal";
    }
    else if(vki>=25 && vki<=29.9)
    {
        cout<<"Fazla kilolu";
    }
    else if(vki>=30 && vki<=34.9)
    {
        cout<<"1.Derece obez";
    }
    else if(vki>=35 && vki<=39.9)
    {
        cout<<"2.Derece obez";
    }
    else if(vki>40)
    {
        cout<<"3.Derece obez";
    }
}

3.Kenar uzunlukları girilen üçgenin alanını bulan program

https://www.bilgicik.com/yazi/ucgenin-alani/ alıntıdır

#include<iostream>
#include<math.h>
using namespace std;
int kenarbir,kenariki,kenaruc,u,alan;
main(){
    cout<<"Birinci kenar uzunlugunu girin=";
    cin>>kenarbir;
    cout<<"İkinci kenar uzunlugunu girin=";
    cin>>kenariki;
    cout<<"Ucuncu kenar uzunlugunu girin=";
    cin>>kenaruc;
    u = (kenarbir+kenariki+kenaruc)/2;
    alan = sqrt(u*(u-kenarbir)*(u-kenariki)*(u-kenaruc));
    cout<<"Ucgenin alani="<<alan;
}

4.Klavyeden girilen üç sayinin en buyuk olanini bulan program.

#include<iostream>
using namespace std;
int birincisayi,ikincisayi,ucuncusayi,buyuksayi;
main(){
    cout<<"Birinci sayiyi girin=";
    cin>>birincisayi;
    buyuksayi=birincisayi;
    cout<<"Ikınci sayiyi girin=";
    cin>>ikincisayi;
    if(ikincisayi>buyuksayi)
    {
        buyuksayi=ikincisayi;
    }
    cout<<"Ucuncu sayiyi girin=";
    cin>>ucuncusayi;
    if(ucuncusayi>buyuksayi)
    {
        buyuksayi=ucuncusayi;
    }
    cout<<"Girilen en buyuk sayi="<<buyuksayi;
}

 

Eğer bugün gündüz sitemde iki konu yazarsam gece rahat uyuyabilirim değilse gece rahat uyuyamam,

Eğer sınavdan 60 alırsam dersi geçebilirim değilse geçemem

Eğer yağmur yağarsa dışarı çıkamam değilse çıkabilirim

Ve daha bir sürü koşul ifadelerini günlük hayatta kullanıyoruz. Koşul derken neyden bahsettiğimi anladınız burada dikkat etmeniz gereken kelimeler “Eğer” ve “Değilse” günlük hayatta sıkça  kullandığımız bu kelimeleri programlarda da fazlasıyla kullanırız. Programlamanın olmazsa olmazları desek yanlış olmaz öyle ki sadece C++ da değil diğer programlama dillerinin birçoğunda if else kavramlarını kullanırız.

Hemen bir kaç örnek yaparak konuyu pekiştirelim.

1)Klavyeden girilen sayının pozitif, negatif yada sıfır olma durumlarını gösteren programı yazınız.

Soruda 3 farklı durumdan bahsediliyor sayı ya negatiftir ya pozitiftir bunlar değilse sayı sıfırdır. Soruyu okuduktan sonra ne yapmamız gerektiğini düşünmeliyiz algoritmayı hangi adımları izlememiz gerektiğini planlamalıyız.

a)Programın giriş kodlarını yaz (kütüphane çağırmak gibi)

b)Soruda kullanıcıdan ne isteniyor bu soruyu cevapla. Unutmayın kullanıcı diye ifade ettiğim kişi siz değilsiniz siz o programın yazarısınız kullanıcı bu programı çalıştıracak kişidir.

c)Kullanıcıdan alınan veri varsa bu veriyle ne yapılması isteniyor.

gibi soruları kendinize sorun ve asıl soruyu anlamaya çalışın mümkünse parçalara ayırın.

Cevaba geçelim

#include <iostream>
using namespace std;
int sayi;
main(){
    cout<<"Klavyeden bir sayi girin=";
    cin>>sayi;
    if(sayi<0){
        cout<<"Sayi negatiftir.";
    }
    else if(sayi>0)
    {
        cout<<"Sayi pozitiftir.";
    }
    else
    {
        cout<<"Sayi sifirdir.";
    }
}

if ifadesinin kullanımını örnekte gördük tekrar yazmak gerekirse;

if(koşuk)

{

Koşul sağlandığı takdirde çalışacak kodlar

}

ifden sonra başka koşullarda varsa mesela örnekteki pozitif olma durumu gibi else if yapısını kullanır tekrar bir koşul yazarız eğer başka koşul kalmamışsa son olasılıkta tekrar if kullanmıyor else den sonra direk çalışacak kodları yazıyoruz.

İkinci örneğe geçelim

2)Klavyeden girilen sayının tek yada çift olma durumunu gösteren programı yazınız

bir sayının tek yada çift olduğunu anlamamız için yapmamız gereken işlem ikiye bölmektir bölme işlemi sonucunda kalan 1 ise tek 0 ise çifttir. Bunun için “sayi%2==0” yada “sayi%2==1″ifadelerini kullancağız.

#include <iostream>
namespace std kullanarak;
int sayısı;
ana(){
    cout<<"Klavyeden bir sayi girin=";
    cin>>sayi;
    eğer (sayı% 2 == 1)
    {
        cout<<"Sayi tektir.";
    }
    Başka
    {
        cout << "Sayi cifttir.";
    }
}

dikkat etmemiz gereken bir nokta if içerisinde “==” kullanmamız bunun nedeni “=” atama anlamına gelmektedir “==” eşittir anlamındadır.

Bir sonraki derste bu konu hakkında daha detaylı örnekler yapmaya çalışacağız şimdiden kolay gelsin.

 

Temel olarak programda kullanılan ifadelere hakim olduktan sonra bu bilgileri birkaç örnekte pekiştirerek çalışmalarımıza devam edelim

#include <iostream>
using namespace std;
int main(){
	cout<<"Bu ornekte ekrana yazi yazdirdik sonraki örnekte kullanicidan\n2 sayi girmesini isteyecek ve bu sayilari ekrana yazdiracagiz";
}

İlk örneğimizi yaptık burada size yabancı olan bir ifade var oda “\n” ifadesi bu bir satir aşağı indirmek anlamına gelmektedir.

#include <iostream>
using namespace std;
int birincideger,ikincideger;
main(){
	cout<<"Birinci sayiyi girin=";
	cin>>birincideger;
	cout<<"İkinci sayiyi girin=";
	cin>>ikincideger;
	cout<<"Girilen birinci sayi="<<birincideger<<"\tGirilen ikinci sayi="<<ikincideger;
}

Burada yeni olarak gördüğümüz ifade “\t” ifadesi buda yazıyı bir tab ileri kaydırmak için kullanılır.

Sıradaki örneğimizde girilen bu iki değerin dört işlemini yapalım ve elde edilen sonuçları ekrana yazdıralım

#include <iostream>
using namespace std;
int birincideger,ikincideger,toplam,fark,carpim;
float bolum;
main(){
	cout<<"Birinci sayiyi girin=";
	cin>>birincideger;
	cout<<"Ikinci sayiyi girin=";
	cin>>ikincideger;
    toplam = birincideger + ikincideger;
    fark = birincideger - ikincideger;
    bolum = birincideger*1.0 / ikincideger;
    carpim = birincideger * ikincideger;
    cout<<"Sayilarin toplami="<<toplam<<"\nSayilarin farki="<<fark<<"\nSayilarin carpimi="<<carpim<<"\nSayilarin bolumu="<<bolum;
}

Evet arkadaşlar klaviyeden girilen 2 değerin dört işlemini yaptık burada dikkat edilmesi gereken bir husus var oda bölme işlemi

bölme işleminin sonucu ondalıklı çıkabileceği için bolum değişkenini float olarak tanımladık

ikinci husus da programa göre 2 tam sayının bölümü ondalıklı çıkamaz bunun için birinci sayıyı 1.0 la çarparak ondalıklı hale getirdik böylece sonucun ondalıklı şekilde çıkabilmesini sağladık bu iki ifade önemli çünkü sonucu doğru almamıza olanak sağlayacak aksi takdirde sonuç 0 olacaktı.

Evet arkadaşlar temel örneklerimizi burada bitirelim sonraki yazımızda artık daha kompleks örneklere doğru ilerleyelim

Yazılım konusunda yeniyseniz operatörler kavramı biraz tuhaf gelebilir ilk bakışta değişik gelen bir kelime olmasına karşılık günlük hayatta hep karşılaştığımız ifadeler olduğunu gördüğünüzde rahatlayacaksınız. C++ da kullandığımız operatörleri sıralayalım

“=” atama operatörüdür örneğin a=5 dediğimiz de a değişkenine 5 sayısını atayacaktır.

“+,-,/,*” dört işlemin C++ da karşılığı toplama,çıkarma,bölme ve çarpma yapacağımız zaman bu operatörleri kullanacağız.

“%” bir sayının başka bir sayıya kalanını bulmak istiyorsak % operatörünü kullanırız örnek vermek gerekirse 5%2 nin sonucu 1 dir.

“++” yada “–” dendiği zaman aklımıza arttırma yada azaltma gelmeli değişkenin tuttuğu ifadeyi 1 arttırır yada azaltır.

“<,>,<=,>=,==,!=” karşılaştırma operatörlerimiz bunlar 2 ifadeyi karşılaştırırken bunları kullanacağız size yabancı gelebilecek 2 ifade == ve != bunlar eşittir ve eşit değil anlamındadır eşittir de tek “=” olmamasının nedeni “=” bu ifadenin atama operatörü olmasındandır.

Mantıksal Operatörler

“!,&&,||” bunlarda mantıksal operatörlerimiz ! sonucun tersini ifade eder yani 3<5 bu ifadenin sonucu true yani doğrudur !(3<5) ifadesi ise false yani yanlış anlamına gelir.

&& ifadesi günlük hayatta kullandığımız ve anlamındadır örneğin ((3<5) && (9>8)) ifadesinin okunuşu 3 5 ten küçüktür ve 9 8 den büyüktür mantıksal olarak hepimize doğru gelir sonucumuz true olacaktır. && ile bağlanan ifadelerden bir tanesi yanlış sa sonuçta yanlıştır

|| ise veya anlamındadır bağlanılan 2 ifadeden birinin doğru olması sonucu doğru yapmaya yeter

İlerleyen konularda operatörlerle ilgili örneklerimiz olacak ama şimdilik bukadar bilgi yeterli diye düşünüyorum kolay gelsin arkadaşlar

Değişkenler  “sık sık değişebilme özelliği bulunan” anlamına gelen kelime. Tabi yazılım dünyasında bu kadarla yetinmiyoruz. Değişkenler olmazsa olmazlarımızdır örneklerle devam etmekte fayda var öncelikle gerçek hayattan bir örnek verelim Yazılım okulunun 1.sınıfından 1.sırasında oturan öğrenci diye bir tanımlama yapayım size tanıttığımız aslında bir değişken yıldan yıla farklı öğrencilerden bahsediliyor olacak gerçek hayatta bir sürü yerde de değişkenler kullanırız. Şimdi yazılıma geçelim “11101001” diyelim ki bu değeri programımızda bir çok yerde kullanacağız birçok yer derken 100 200 belki daha fazla sürekli bu şekilde yazmak bize vakit kaybına neden olur hem de sürekli yazdığımız için hata yapabiliriz bu gibi sorunların önüne geçmek için ve daha düzenli kod yazmak için bu değeri bir değişkene aktarırız ve bu değeri kullanmak istediğimizde o değişkeni çağırırız. Diyelim ki değişken kullanmadık her seferinde tek tek yazdık ama sonra “11101000” bu şekilde değiştirmemiz gerekti ne yapacağız ? tek tek uğraşmak zorunda kalabiliriz bize sorun çıkartabilir değişken kullansaydık tek satırda bu sorunu çözebilirdik.

Veri Tipleri

C++ da değişkenlere gelecek olursak programlamada veri tipleri vardır bunlardan bir kaçı;

İnteger: Tam sayılardan oluşur.

Float: ondalıklı sayılardan oluşur.

String: Yazılar kelimelerden oluşur.

bunların yanında double, char gibi veri tipleride var zamanı geldikçe hepsine değiniriz. Şunu unutmamak lazım bu değişkenlerin hepsi bellekte yer kaplar atıyorum float 3 birim yer kaplarsa integer 1 birim yer kaplar bunun için ihtiyacımıza göre değişkenin veri tipini ayarlamalıyız.

hemen küçük bir örnek yapalım

#include <iostream>
using namespace std;
int main(){
    int birincideger=10;
    int ikincideger=20;
    int toplam=birincideger+ikincideger;
    cout<<toplam;
}

örneğimizde 3 tane integer tipinde değişken tanımladık ve programımızı çalıştırdık ama çokta düzenli bir yazım şekli olmadı biraz daha düzenlemeye gidelim

#include <iostream>
using namespace std;
int birincideger,ikincideger,toplam;
main(){
    birincideger=10;
    ikincideger=20;
    toplam=birincideger+ikincideger;
    cout<<toplam;
}

bu şekilde düzenlemek daha doğru olacaktır değişkenleri programa başlamadan önce tanımladık ama değerlerini main fonksiyonunun içinde verdik peki değerlerini biz değilde son kullanıcı yani yazdığımız programı verdiğimiz kişiye girdirmek isteseydik

#include <iostream>
using namespace std;
int birincideger,ikincideger,toplam;
main(){
	cout<<"Birinci degeri girin=";
    cin>>birincideger;
    cout<<"Ikinci degeri girin=";
    cin>>ikincideger;
    toplam=birincideger+ikincideger;
    cout<<"Toplam="<<toplam;
}

örneğimiz bu şekilde değişecekti

C++ da değişkenlerle işlemler örnek çıktısı

C++ da değişkenler bu şekilde sorularınızı yorum alanından yazabilirsiniz. Ayrıca konuyla alakalı daha fazla bilgiye bu linkten ulaşabilirsiniz. Hepinize kolay gelsin arkadaşlar 🙂

Evet arkadaşlar en çok ders verilen dillerden birisi olan C++ dilinin temel örneğini yaparak başlıyoruz. Sitemizin de ilk örneği olması nedeniyle manevi değeri yüksek bir ders 🙂 Fazla uzatmadan hemen konuya girelim.

Öncelikle C++ örneklerimizde DevC++ derleyicini kullanacağız https://sourceforge.net/projects/orwelldevcpp/

adresinden programı indirebiliriz direk next next şeklinde hızlı kolay bir kurulumu var kurulum bittikten sonra ilk programı açarken Türkçe dilini seçmeyi unutmayın.

Her programlama dilinin kendine has kütüphaneleri yazım tipleri vardır. C++ örneklerimizde de başlangıç için belirli kütüphaneler kullanacağız. C++ dili temel C programlama diline kıyasla daha fazla kütüphane içerir. C kütüphaneleri C++ da mevcutken bunlara ek daha fazla kütüphane vardır. Bir örneğe başlarken ilk yapacağımız iş bu kütüphaneleri dahil etmek bunun için #include komutunu kullanacağız. C++ temel kütüphanelerinden birisi iostream dir. Programa olan girdi ve çıktı fonksiyonlarının bulunduğu kütüphanedir. Örneğin cout,cin gibi fonksiyonları barındırır. Temelde yapılması gereken bir diğer şey ise isim çakışmalarını önlemek amacıyla namespace kullanmak. Özellikle büyük projelerde isim bulmakta zorlanılacağı için namespace kullanılır.

Özetlemek gerekirse yeni bir programlama diline başlamak istedik buda C++ oldu ilk örneğimizi yapacağız ve şu şekilde ilk başlangıcımızı yapıyoruz

#include <iostream>
namespace std;
int main () {
     cout<<"Merhaba Dunya";
 }

Klasik olarak ekrana merhaba dünya yazan programla örneklerimize başladık. İncelemeye başlayalım program 1.satırdan başlayıp tek tek aşağıya doğru inecek.

1.satırda kütüphanemizi çağırdık

2.satırda bütün namespace leri dahil ettik

3.satırda main yani programın ana fonksiyonunu başlattık fonksiyonlara daha sonra değineceğiz ama burada bilmemiz gereken 1.satırda ve 3.satırda ; kullanmadık

4.satırda cout yani çıktı verme komutunu kullandık bu şu anlama geliyor konsolda “” işaretleri arasında yazan yazıyı bilgisayar tarafından kullanıcıya yazdır yani çıktı ver anlamındadır.

son olarak 3.satırda açtığımız { kapatıyoruz ve programı sonlandırıyoruz }

programı çalıştırmak için F11 tuşunu kullanabiliriz bu kısayol derleme yapıp ardından programa çalıştırma komutunu verir ve konsol ekranı açılır.