Arduino UNO ve Serial Komutları
İçindekiler
- Arduino UNO ve Serial Komutları Arduino programlama dilinde seri haberleşme portunu kullanımı için tanımlanmış bir Serial nesnesi bulunmaktadır. Serial nesnesi işimizi kolaylaştırıcı bir çok fonksiyona sahiptir. Kırmızı Ok – TX ve RX pinleriBeyaz Ok – TX ve RX bilgi ledleri 0’dan başlayıp 13’te bitmek üzere toplamda 14 adet dijital pine sahip olan Arduino UNO kartında da diğer kartlarda olduğu gibi dijital 0 (RX) ve dijital 1 (TX) pinleri Serial Port’u için ayrılmıştır. Serial Port ile haberleşmek için bu iki pinin yanı sıra Arduino kartımız ile bilgisayarımız arasındaki USB bağlantısını kullanarak haberleşme sağlayabiliriz. Arduino kart üzerinde bulunan iki adet uyarıcı ledin yardımı ile çalışma esnasında Serial Port’un o anki çalışma durumunu takip edebiliriz. Not: Serial Port kullanılırken Arduino kartımız üzerinde bulunan Serial Port için ayrılmış pinleri başka giriş veya çıkış işlemleri için kullanamayız. Serial Port Ekranı Butonu Bilgisayarınız ve kartınız arasındaki bağlantıyı sağladıktan sonra Serial Port Ekranı butonuna tıklayarak açılan Serial Port Ekranına ulaşabilir ve bu ekran aracılığı ile kartınız ile haberleşme ekranına ulaşabilirsiniz. Arduino Serial Nesnesi Serial nesnesi bir çok fonksiyona sahiptir. Bu fonksiyonlar; available () availableForWrite () begin () end () find () findUntil () flush () if ( Serial ) parseFloat () parseInt () peek () print () println () read () readBytes () readBytesUntil () readString () readStringUntil () serialEvent () setTimeOut () write () fonksiyonlarıdır. Birlikte bu fonksiyonların bir çoğunu inceleyeceğiz. if ( Serial ) Belirlenen Seri Portun hazır olup olmadığını kontrol etmemize yarar. Serial nesnelerinin mantıksal bir alan alanda kullanılması durumunda eğer belirtilen Seri Port hazır ise True eğer belirtilen Seri Port hazır değilse False değeri dönecektir. if(Serial) örneği Arduino 1 2 3 4 5 6 7 8 9 void setup() { Serial.begin(9600); while (!Serial) { // Serial portun hazır olmasını bekle. ; } } void loop() { } available () Serial Port’tan okuma yapmak için kullanılabilir byte( karakter )’in olup olmadığını kontrol etmemize yarar. Gönderilmiş olan veriyi byte byte değerlendirir. available örnek ekran çıktısı begin () Arduino’dan bilgisayarımıza veya seri haberleşme portunu kullanan diğer cihazlara gönderilecek verinin hızını saniyede bit ( bit / saniye ) cinsinden ayarlar. Bir cihaz ile birlikte kullanıldığında hem Arduino’muzun hemde diğer cihazımızın veri transfer hızları aynı olmalıdır. Kullanım Şekli: Serial.begin(speed)Serial.begin(speed, config) begin() fonksiyonu bir hız parametresi ve isteğe bağlı ikinci bir parametre olarak parity veya stop biti alabilir. Arduino’muz ile bilgisayarımız arasında bir seri haberleşme gerçekleştirmek istediğimizde hız parametresi olarak 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, 230400 veya 250000 kullanmamız gerekmektedir. Bilgisayarımızın varsayılan hızı 9600’dür. Bu hızı değiştirmek için Arduino yazılımında yukarıda nasıl erişileceğinden bahsedilen Serial Port Ekranından aşağıdaki resimdeki gibi değiştirebilirsiniz. Kartınızın ve bilgisayarınızın hızlarının aynı olması gerektiğini unutmayınız. Arduino Serial.begin() Arduino 1 2 3 4 5 6 7 8 void setup() { Serial.begin(9600); // veri transfer hızını 9600 olarak ayarla. Serial.println("Merhaba Dunya !"); // Seri mönitöre Merhaba dünya yaz. } void loop() { // bu örnek için loop'u kullanmadık. } Not: Yukarıdaki örnekte düzgün çıktılar alabilmemiz için Seri Monitörümüzünde baud hızının 9600 olması gerekir. end () Seria Portun çalışmasını devre dışı bırakır. Daha önce belirttiğimiz gibi TX ve RX pinlerini Serial Portu kullandığımızda giriş çıkış işlemleri için kullanamıyoruz. end() ile Serial Port devre dışı bırakıldıktan sorna TX ve RX pinlerini giriş çıkış işlemleri için tekrar kullanabiliriz. Serial Portu tekrar devreye almak istersek begin() fonksiyonunu kullanabiliriz. end() örneği Arduino 1 2 3 4 5 6 7 8 9 10 11 void setup() { Serial.begin(9600); // Seri portu başlat. } void loop() { Serial.print("Mobilhanem !"); // Ekrana Mobilhanem yaz. Serial.end(); // Seri portu devre dışı bırak. Serial.println("Burası yazılmayacaktır."); // Seri port devre dışı olduğu için bu satır yazdırılmayacaktır. Serial.begin(9600); // tekrar seri portu devreye al delay(1000); } örnek ekran çıktısı find () Find fonksiyonu ile Serial Port üzerinden gönderilen değer içerisinde arama işleme yapılır. Eğer aranan değer gönderilen değer içerisinde varsa True, yoksa False değeri döndürür. find örneği Arduino 1 2 3 4 5 6 7 8 9 10 11 12 13 14 void setup() { Serial.begin(9600); // Seri Portu başlat } void loop() { while (Serial.available()) { // okumak için veri varmı. if (Serial.find("arduino")) { // girilen değer içerisinde arduino var mı ? Serial.println("Mobilhanem.com"); } else { Serial.println("Arduino Dersleri"); } } } örnek ekran çıktısı parseFloat () ve parseInt () parseFloat() ve parseInt() fonksiyonları Seri Porta gönderilen veri dizisi içerisindeki ondalıklı ve tam sayıları almamızı sağlar. Bu işlemi yaparken gelen veri dizisinde değişikliklerde oluşur. Bunu aşağıdaki örneğinizde görebilirsiniz. parseFloat ve parseInt örneği Arduino 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 int tamSayi = 0; float ondalikliSayi = 0; void setup() { Serial.begin(9600); // Seri Portu başlat } void loop() { if (Serial.available()) { // okumak için veri varmı. tamSayi = Serial.parseInt(); // veri dizisindeki tam sayıları oku Serial.println(tamSayi); ondalikliSayi = Serial.parseFloat(); // veri dizisindeki ondalikli sayıları oku Serial.println(ondalikliSayi); } } Not: Bu örnek özel bir durumu göstermek için hazırlanmıştır. Örnek ekran çıktısına parametre olarak 3.14 mobilhanem 3.14 verilmiştir. örnek ekran çıktısı print () ve println () Her iki fonksiyonda seri haberleşmede gönderilen parametreleri ASCII‘ye uygun olarak yazdırma işlemi yapar. Diğer programlama dillerinden de alışık olduğumuz şekilde print fonksiyonu yazma işlemini gerçekleştirdikten sonra imleci yazma işleminin bittiği noktada bırakırken, println fonksiyonu yazma işlemi bittikten sonra imleci bir alt satırın başına getirir ve daha sonraki yazmaların bir alt satırdan olmasını sağlar. Kullanım şekilleri: Serial.print(val)Serial.print(val, format) Serial.println(val)Serial.println(val, format) Özellikleri; Parametre olarak aldıkları veriyi seri monitor ekranına yazarlar. C gibi dillerde kullanılan kaçış karakterleri ( t, n vs. ) bu fonksiyonlar içinde geçerlidir. Ondalıklı sayılar yazdırıldığın da varsayılan hassasiyet olan virgülden sonraki 2 basamağı yazdırılır. İkinci parametre olarak alınan format değişkeni ile yazdırma hassasiyeti veya yazdırılan sayının hangi taban aritmetiğinde olması istendiği ayarlanabilir. Serial.println(1.23456) şekildeki kullanımda ekrana onluk tabanda 1.23 yazdırılır. Serial.println(1.23456, 3) şeklindeki bir kullanımda ekrana 1.234 çıktısını yani, virgülden sonra üç basamağı yazdırılır. Daha farklı hassasiyetler için örnekteki 3 rakamını değiştirebiliriz. Serial.println(123, format) kullanımında format değişkeni değer olarak BIN ( ikilik ), OCT ( sekizlik ), DEC ( ondalık), HEX ( on altılık ) değerlerini alır ve bu aldığı değerlere uygun tabanda sayı formatlandırılarak yazdırılır. Not: Bu kullanım şekli ondalıklı sayılar için geçerli değildir. print () ve println () örnekleri Farklı tabanlarda tam sayı yazdırma örneği Arduino 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 void setup() { Serial.begin(9600); // Seri Haberleşme Portunu hızını 9600 olarak ayarla } void loop() { // başlıkları yazmak için bu kod bloğu kullanılmıştır. Serial.print("NO FORMAT"); // Ekrana no format yazdır Serial.print("t"); // bir tab kadar boşluk bırak. Serial.print("DECt"); // Ekrana DEC yazdır ve bir tab kadar boşluk bırak. Gerek No format taki gibi gerekse bu satırdaki gibi t ekleyebiliriz. Serial.print("HEXt"); Serial.print("OCTt"); Serial.print("BINn"); // Ekrana BIN yazdır ve bir alt satıra in for(int x=0; x< 64; x++){ // 0'dan 64'e kadar olan tam sayıları alıp yazdırmak için bu döngü kullanılmıştır. Serial.print(x); // X değerini formatsız bir şekilde yazdırma. Varsayılan olarak DEC (onluk) tabanda yazdırılacaktır. Serial.print("tt"); // prints a tab Serial.print(x, DEC); // X değerini ONLUK tabanda yazdır Serial.print("t"); // prints a tab Serial.print(x, HEX); // X değerini ON ALTILIK tabanda yazdır Serial.print("t"); // prints a tab Serial.print(x, OCT); // X değerini SEKİZLİK tabanda yazdır Serial.print("t"); // prints a tab Serial.println(x, BIN); // X değerini İKİLİK tabanda yazdır ve bir alt satıra in. delay(200); // 200 ms bekle. } Serial.println(); // parametresiz olarak kullanıldığında yalnızca imleci bir alt satıra indirir. } Örnek ekran çıktısı Farklı hassasiyetlerde ondalıklı sayı yazdırma örneği Arduino 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 float y = 1.23456; // formatlamak için kullanacağımız değişken. void setup() { Serial.begin(9600); // } void loop() { Serial.print("Ondalikli sayit"); // Ekrana ondalıklı sayı yaz ve bir tab boşluk bırak. Serial.print("Basamak Hassasiyetit"); Serial.println("Formatli Sayi"); // Ekrana formatlı sayı yaz ve bir alt satıra in. for (int i = 0; i < 7; i++) { Serial.print(y); // Varsayılan yazdırma şekli ile y değişkenini yazdır. Serial.print("tt");
- Arduino programlama dilinde seri haberleşme portunu kullanımı için tanımlanmış bir Serial nesnesi bulunmaktadır. Serial nesnesi işimizi kolaylaştırıcı bir çok fonksiyona sahiptir.
- Arduino Serial Nesnesi
- if ( Serial )
- available ()
- begin ()
- end ()
- find ()
- parseFloat () ve parseInt ()
- print () ve println ()
- Serial.print(val)Serial.print(val, format)
- Serial.println(val)Serial.println(val, format)
- print () ve println () örnekleri
Arduino UNO ve Serial Komutları
Arduino programlama dilinde seri haberleşme portunu kullanımı için tanımlanmış bir Serial nesnesi bulunmaktadır. Serial nesnesi işimizi kolaylaştırıcı bir çok fonksiyona sahiptir.
0’dan başlayıp 13’te bitmek üzere toplamda 14 adet dijital pine sahip olan Arduino UNO kartında da diğer kartlarda olduğu gibi dijital 0 (RX) ve dijital 1 (TX) pinleri Serial Port’u için ayrılmıştır. Serial Port ile haberleşmek için bu iki pinin yanı sıra Arduino kartımız ile bilgisayarımız arasındaki USB bağlantısını kullanarak haberleşme sağlayabiliriz.
Arduino kart üzerinde bulunan iki adet uyarıcı ledin yardımı ile çalışma esnasında Serial Port’un o anki çalışma durumunu takip edebiliriz.
Not: Serial Port kullanılırken Arduino kartımız üzerinde bulunan Serial Port için ayrılmış pinleri başka giriş veya çıkış işlemleri için kullanamayız.
Bilgisayarınız ve kartınız arasındaki bağlantıyı sağladıktan sonra Serial Port Ekranı butonuna tıklayarak açılan Serial Port Ekranına ulaşabilir ve bu ekran aracılığı ile kartınız ile haberleşme ekranına ulaşabilirsiniz.
Arduino Serial Nesnesi
Serial nesnesi bir çok fonksiyona sahiptir. Bu fonksiyonlar;
- available ()
- availableForWrite ()
- begin ()
- end ()
- find ()
- findUntil ()
- flush ()
- if ( Serial )
- parseFloat ()
- parseInt ()
- peek ()
- print ()
- println ()
- read ()
- readBytes ()
- readBytesUntil ()
- readString ()
- readStringUntil ()
- serialEvent ()
- setTimeOut ()
- write ()
fonksiyonlarıdır. Birlikte bu fonksiyonların bir çoğunu inceleyeceğiz.
if ( Serial )
Belirlenen Seri Portun hazır olup olmadığını kontrol etmemize yarar. Serial nesnelerinin mantıksal bir alan alanda kullanılması durumunda eğer belirtilen Seri Port hazır ise True eğer belirtilen Seri Port hazır değilse False değeri dönecektir.
1
2
3
4
5
6
7
8
9
void setup() {
Serial.begin(9600);
while (!Serial) { // Serial portun hazır olmasını bekle.
;
}
}
void loop() {
}
available ()
Serial Port’tan okuma yapmak için kullanılabilir byte( karakter )’in olup olmadığını kontrol etmemize yarar. Gönderilmiş olan veriyi byte byte değerlendirir.
begin ()
Arduino’dan bilgisayarımıza veya seri haberleşme portunu kullanan diğer cihazlara gönderilecek verinin hızını saniyede bit ( bit / saniye ) cinsinden ayarlar. Bir cihaz ile birlikte kullanıldığında hem Arduino’muzun hemde diğer cihazımızın veri transfer hızları aynı olmalıdır.
Kullanım Şekli:
Serial.begin(speed)
Serial.begin(speed, config)
begin() fonksiyonu bir hız parametresi ve isteğe bağlı ikinci bir parametre olarak parity veya stop biti alabilir. Arduino’muz ile bilgisayarımız arasında bir seri haberleşme gerçekleştirmek istediğimizde hız parametresi olarak 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, 230400 veya 250000 kullanmamız gerekmektedir.
Bilgisayarımızın varsayılan hızı 9600’dür. Bu hızı değiştirmek için Arduino yazılımında yukarıda nasıl erişileceğinden bahsedilen Serial Port Ekranından aşağıdaki resimdeki gibi değiştirebilirsiniz. Kartınızın ve bilgisayarınızın hızlarının aynı olması gerektiğini unutmayınız.
1
2
3
4
5
6
7
8
void setup() {
Serial.begin(9600); // veri transfer hızını 9600 olarak ayarla.
Serial.println("Merhaba Dunya !"); // Seri mönitöre Merhaba dünya yaz.
}
void loop() {
// bu örnek için loop'u kullanmadık.
}
Not: Yukarıdaki örnekte düzgün çıktılar alabilmemiz için Seri Monitörümüzünde baud hızının 9600 olması gerekir.
end ()
Seria Portun çalışmasını devre dışı bırakır. Daha önce belirttiğimiz gibi TX ve RX pinlerini Serial Portu kullandığımızda giriş çıkış işlemleri için kullanamıyoruz. end() ile Serial Port devre dışı bırakıldıktan sorna TX ve RX pinlerini giriş çıkış işlemleri için tekrar kullanabiliriz. Serial Portu tekrar devreye almak istersek begin() fonksiyonunu kullanabiliriz.
1
2
3
4
5
6
7
8
9
10
11
void setup() {
Serial.begin(9600); // Seri portu başlat.
}
void loop() {
Serial.print("Mobilhanem !"); // Ekrana Mobilhanem yaz.
Serial.end(); // Seri portu devre dışı bırak.
Serial.println("Burası yazılmayacaktır."); // Seri port devre dışı olduğu için bu satır yazdırılmayacaktır.
Serial.begin(9600); // tekrar seri portu devreye al
delay(1000);
}
find ()
Find fonksiyonu ile Serial Port üzerinden gönderilen değer içerisinde arama işleme yapılır. Eğer aranan değer gönderilen değer içerisinde varsa True, yoksa False değeri döndürür.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void setup() {
Serial.begin(9600); // Seri Portu başlat
}
void loop() {
while (Serial.available()) { // okumak için veri varmı.
if (Serial.find("arduino")) { // girilen değer içerisinde arduino var mı ?
Serial.println("Mobilhanem.com");
}
else {
Serial.println("Arduino Dersleri");
}
}
}
parseFloat () ve parseInt ()
parseFloat() ve parseInt() fonksiyonları Seri Porta gönderilen veri dizisi içerisindeki ondalıklı ve tam sayıları almamızı sağlar. Bu işlemi yaparken gelen veri dizisinde değişikliklerde oluşur. Bunu aşağıdaki örneğinizde görebilirsiniz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int tamSayi = 0;
float ondalikliSayi = 0;
void setup() {
Serial.begin(9600); // Seri Portu başlat
}
void loop() {
if (Serial.available()) { // okumak için veri varmı.
tamSayi = Serial.parseInt(); // veri dizisindeki tam sayıları oku
Serial.println(tamSayi);
ondalikliSayi = Serial.parseFloat(); // veri dizisindeki ondalikli sayıları oku
Serial.println(ondalikliSayi);
}
}
Not: Bu örnek özel bir durumu göstermek için hazırlanmıştır. Örnek ekran çıktısına parametre olarak 3.14 mobilhanem 3.14 verilmiştir.
print () ve println ()
Her iki fonksiyonda seri haberleşmede gönderilen parametreleri ASCII‘ye uygun olarak yazdırma işlemi yapar. Diğer programlama dillerinden de alışık olduğumuz şekilde print fonksiyonu yazma işlemini gerçekleştirdikten sonra imleci yazma işleminin bittiği noktada bırakırken, println fonksiyonu yazma işlemi bittikten sonra imleci bir alt satırın başına getirir ve daha sonraki yazmaların bir alt satırdan olmasını sağlar.
Kullanım şekilleri:
Serial.print(val)
Serial.print(val, format)
Serial.println(val)
Serial.println(val, format)
Özellikleri;
- Parametre olarak aldıkları veriyi seri monitor ekranına yazarlar.
- C gibi dillerde kullanılan kaçış karakterleri ( t, n vs. ) bu fonksiyonlar içinde geçerlidir.
- Ondalıklı sayılar yazdırıldığın da varsayılan hassasiyet olan virgülden sonraki 2 basamağı yazdırılır.
- İkinci parametre olarak alınan format değişkeni ile yazdırma hassasiyeti veya yazdırılan sayının hangi taban aritmetiğinde olması istendiği ayarlanabilir.
- Serial.println(1.23456) şekildeki kullanımda ekrana onluk tabanda 1.23 yazdırılır.
- Serial.println(1.23456, 3) şeklindeki bir kullanımda ekrana 1.234 çıktısını yani, virgülden sonra üç basamağı yazdırılır. Daha farklı hassasiyetler için örnekteki 3 rakamını değiştirebiliriz.
- Serial.println(123, format) kullanımında format değişkeni değer olarak BIN ( ikilik ), OCT ( sekizlik ), DEC ( ondalık), HEX ( on altılık ) değerlerini alır ve bu aldığı değerlere uygun tabanda sayı formatlandırılarak yazdırılır.
- Not: Bu kullanım şekli ondalıklı sayılar için geçerli değildir.
print () ve println () örnekleri
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void setup() {
Serial.begin(9600); // Seri Haberleşme Portunu hızını 9600 olarak ayarla
}
void loop() {
// başlıkları yazmak için bu kod bloğu kullanılmıştır.
Serial.print("NO FORMAT"); // Ekrana no format yazdır
Serial.print("t"); // bir tab kadar boşluk bırak.
Serial.print("DECt"); // Ekrana DEC yazdır ve bir tab kadar boşluk bırak. Gerek No format taki gibi gerekse bu satırdaki gibi t ekleyebiliriz.
Serial.print("HEXt");
Serial.print("OCTt");
Serial.print("BINn"); // Ekrana BIN yazdır ve bir alt satıra in
for(int x=0; x< 64; x++){ // 0'dan 64'e kadar olan tam sayıları alıp yazdırmak için bu döngü kullanılmıştır.
Serial.print(x); // X değerini formatsız bir şekilde yazdırma. Varsayılan olarak DEC (onluk) tabanda yazdırılacaktır.
Serial.print("tt"); // prints a tab
Serial.print(x, DEC); // X değerini ONLUK tabanda yazdır
Serial.print("t"); // prints a tab
Serial.print(x, HEX); // X değerini ON ALTILIK tabanda yazdır
Serial.print("t"); // prints a tab
Serial.print(x, OCT); // X değerini SEKİZLİK tabanda yazdır
Serial.print("t"); // prints a tab
Serial.println(x, BIN); // X değerini İKİLİK tabanda yazdır ve bir alt satıra in.
delay(200); // 200 ms bekle.
}
Serial.println(); // parametresiz olarak kullanıldığında yalnızca imleci bir alt satıra indirir.
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
float y = 1.23456; // formatlamak için kullanacağımız değişken.
void setup() {
Serial.begin(9600); //
}
void loop() {
Serial.print("Ondalikli sayit"); // Ekrana ondalıklı sayı yaz ve bir tab boşluk bırak.
Serial.print("Basamak Hassasiyetit");
Serial.println("Formatli Sayi"); // Ekrana formatlı sayı yaz ve bir alt satıra in.
for (int i = 0; i < 7; i++) {
Serial.print(y); // Varsayılan yazdırma şekli ile y değişkenini yazdır.
Serial.print("tt");
Arduino programlama dilinde seri haberleşme portunu kullanımı için tanımlanmış bir Serial nesnesi bulunmaktadır. Serial nesnesi işimizi kolaylaştırıcı bir çok fonksiyona sahiptir.
0’dan başlayıp 13’te bitmek üzere toplamda 14 adet dijital pine sahip olan Arduino UNO kartında da diğer kartlarda olduğu gibi dijital 0 (RX) ve dijital 1 (TX) pinleri Serial Port’u için ayrılmıştır. Serial Port ile haberleşmek için bu iki pinin yanı sıra Arduino kartımız ile bilgisayarımız arasındaki USB bağlantısını kullanarak haberleşme sağlayabiliriz.
Arduino kart üzerinde bulunan iki adet uyarıcı ledin yardımı ile çalışma esnasında Serial Port’un o anki çalışma durumunu takip edebiliriz.
Not: Serial Port kullanılırken Arduino kartımız üzerinde bulunan Serial Port için ayrılmış pinleri başka giriş veya çıkış işlemleri için kullanamayız.
Bilgisayarınız ve kartınız arasındaki bağlantıyı sağladıktan sonra Serial Port Ekranı butonuna tıklayarak açılan Serial Port Ekranına ulaşabilir ve bu ekran aracılığı ile kartınız ile haberleşme ekranına ulaşabilirsiniz.
Arduino Serial Nesnesi
Serial nesnesi bir çok fonksiyona sahiptir. Bu fonksiyonlar;
- available ()
- availableForWrite ()
- begin ()
- end ()
- find ()
- findUntil ()
- flush ()
- if ( Serial )
- parseFloat ()
- parseInt ()
- peek ()
- print ()
- println ()
- read ()
- readBytes ()
- readBytesUntil ()
- readString ()
- readStringUntil ()
- serialEvent ()
- setTimeOut ()
- write ()
fonksiyonlarıdır. Birlikte bu fonksiyonların bir çoğunu inceleyeceğiz.
if ( Serial )
Belirlenen Seri Portun hazır olup olmadığını kontrol etmemize yarar. Serial nesnelerinin mantıksal bir alan alanda kullanılması durumunda eğer belirtilen Seri Port hazır ise True eğer belirtilen Seri Port hazır değilse False değeri dönecektir.
1
2
3
4
5
6
7
8
9
|
void setup() {
Serial.begin(9600);
while (!Serial) { // Serial portun hazır olmasını bekle.
;
}
}
void loop() {
}
|
available ()
Serial Port’tan okuma yapmak için kullanılabilir byte( karakter )’in olup olmadığını kontrol etmemize yarar. Gönderilmiş olan veriyi byte byte değerlendirir.
begin ()
Arduino’dan bilgisayarımıza veya seri haberleşme portunu kullanan diğer cihazlara gönderilecek verinin hızını saniyede bit ( bit / saniye ) cinsinden ayarlar. Bir cihaz ile birlikte kullanıldığında hem Arduino’muzun hemde diğer cihazımızın veri transfer hızları aynı olmalıdır.
Kullanım Şekli:
Serial.begin(speed)
Serial.begin(speed, config)
begin() fonksiyonu bir hız parametresi ve isteğe bağlı ikinci bir parametre olarak parity veya stop biti alabilir. Arduino’muz ile bilgisayarımız arasında bir seri haberleşme gerçekleştirmek istediğimizde hız parametresi olarak 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, 230400 veya 250000 kullanmamız gerekmektedir.
Bilgisayarımızın varsayılan hızı 9600’dür. Bu hızı değiştirmek için Arduino yazılımında yukarıda nasıl erişileceğinden bahsedilen Serial Port Ekranından aşağıdaki resimdeki gibi değiştirebilirsiniz. Kartınızın ve bilgisayarınızın hızlarının aynı olması gerektiğini unutmayınız.
1
2
3
4
5
6
7
8
|
void setup() {
Serial.begin(9600); // veri transfer hızını 9600 olarak ayarla.
Serial.println("Merhaba Dunya !"); // Seri mönitöre Merhaba dünya yaz.
}
void loop() {
// bu örnek için loop'u kullanmadık.
}
|
Not: Yukarıdaki örnekte düzgün çıktılar alabilmemiz için Seri Monitörümüzünde baud hızının 9600 olması gerekir.
end ()
Seria Portun çalışmasını devre dışı bırakır. Daha önce belirttiğimiz gibi TX ve RX pinlerini Serial Portu kullandığımızda giriş çıkış işlemleri için kullanamıyoruz. end() ile Serial Port devre dışı bırakıldıktan sorna TX ve RX pinlerini giriş çıkış işlemleri için tekrar kullanabiliriz. Serial Portu tekrar devreye almak istersek begin() fonksiyonunu kullanabiliriz.
1
2
3
4
5
6
7
8
9
10
11
|
void setup() {
Serial.begin(9600); // Seri portu başlat.
}
void loop() {
Serial.print("Mobilhanem !"); // Ekrana Mobilhanem yaz.
Serial.end(); // Seri portu devre dışı bırak.
Serial.println("Burası yazılmayacaktır."); // Seri port devre dışı olduğu için bu satır yazdırılmayacaktır.
Serial.begin(9600); // tekrar seri portu devreye al
delay(1000);
}
|
find ()
Find fonksiyonu ile Serial Port üzerinden gönderilen değer içerisinde arama işleme yapılır. Eğer aranan değer gönderilen değer içerisinde varsa True, yoksa False değeri döndürür.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
void setup() {
Serial.begin(9600); // Seri Portu başlat
}
void loop() {
while (Serial.available()) { // okumak için veri varmı.
if (Serial.find("arduino")) { // girilen değer içerisinde arduino var mı ?
Serial.println("Mobilhanem.com");
}
else {
Serial.println("Arduino Dersleri");
}
}
}
|
parseFloat () ve parseInt ()
parseFloat() ve parseInt() fonksiyonları Seri Porta gönderilen veri dizisi içerisindeki ondalıklı ve tam sayıları almamızı sağlar. Bu işlemi yaparken gelen veri dizisinde değişikliklerde oluşur. Bunu aşağıdaki örneğinizde görebilirsiniz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
int tamSayi = 0;
float ondalikliSayi = 0;
void setup() {
Serial.begin(9600); // Seri Portu başlat
}
void loop() {
if (Serial.available()) { // okumak için veri varmı.
tamSayi = Serial.parseInt(); // veri dizisindeki tam sayıları oku
Serial.println(tamSayi);
ondalikliSayi = Serial.parseFloat(); // veri dizisindeki ondalikli sayıları oku
Serial.println(ondalikliSayi);
}
}
|
Not: Bu örnek özel bir durumu göstermek için hazırlanmıştır. Örnek ekran çıktısına parametre olarak 3.14 mobilhanem 3.14 verilmiştir.
print () ve println ()
Her iki fonksiyonda seri haberleşmede gönderilen parametreleri ASCII‘ye uygun olarak yazdırma işlemi yapar. Diğer programlama dillerinden de alışık olduğumuz şekilde print fonksiyonu yazma işlemini gerçekleştirdikten sonra imleci yazma işleminin bittiği noktada bırakırken, println fonksiyonu yazma işlemi bittikten sonra imleci bir alt satırın başına getirir ve daha sonraki yazmaların bir alt satırdan olmasını sağlar.
Kullanım şekilleri:
Serial.print(val)
Serial.print(val, format)
Serial.println(val)
Serial.println(val, format)
Özellikleri;
- Parametre olarak aldıkları veriyi seri monitor ekranına yazarlar.
- C gibi dillerde kullanılan kaçış karakterleri ( t, n vs. ) bu fonksiyonlar içinde geçerlidir.
- Ondalıklı sayılar yazdırıldığın da varsayılan hassasiyet olan virgülden sonraki 2 basamağı yazdırılır.
- İkinci parametre olarak alınan format değişkeni ile yazdırma hassasiyeti veya yazdırılan sayının hangi taban aritmetiğinde olması istendiği ayarlanabilir.
- Serial.println(1.23456) şekildeki kullanımda ekrana onluk tabanda 1.23 yazdırılır.
- Serial.println(1.23456, 3) şeklindeki bir kullanımda ekrana 1.234 çıktısını yani, virgülden sonra üç basamağı yazdırılır. Daha farklı hassasiyetler için örnekteki 3 rakamını değiştirebiliriz.
- Serial.println(123, format) kullanımında format değişkeni değer olarak BIN ( ikilik ), OCT ( sekizlik ), DEC ( ondalık), HEX ( on altılık ) değerlerini alır ve bu aldığı değerlere uygun tabanda sayı formatlandırılarak yazdırılır.
- Not: Bu kullanım şekli ondalıklı sayılar için geçerli değildir.
print () ve println () örnekleri
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
void setup() {
Serial.begin(9600); // Seri Haberleşme Portunu hızını 9600 olarak ayarla
}
void loop() {
// başlıkları yazmak için bu kod bloğu kullanılmıştır.
Serial.print("NO FORMAT"); // Ekrana no format yazdır
Serial.print("t"); // bir tab kadar boşluk bırak.
Serial.print("DECt"); // Ekrana DEC yazdır ve bir tab kadar boşluk bırak. Gerek No format taki gibi gerekse bu satırdaki gibi t ekleyebiliriz.
Serial.print("HEXt");
Serial.print("OCTt");
Serial.print("BINn"); // Ekrana BIN yazdır ve bir alt satıra in
for(int x=0; x< 64; x++){ // 0'dan 64'e kadar olan tam sayıları alıp yazdırmak için bu döngü kullanılmıştır.
Serial.print(x); // X değerini formatsız bir şekilde yazdırma. Varsayılan olarak DEC (onluk) tabanda yazdırılacaktır.
Serial.print("tt"); // prints a tab
Serial.print(x, DEC); // X değerini ONLUK tabanda yazdır
Serial.print("t"); // prints a tab
Serial.print(x, HEX); // X değerini ON ALTILIK tabanda yazdır
Serial.print("t"); // prints a tab
Serial.print(x, OCT); // X değerini SEKİZLİK tabanda yazdır
Serial.print("t"); // prints a tab
Serial.println(x, BIN); // X değerini İKİLİK tabanda yazdır ve bir alt satıra in.
delay(200); // 200 ms bekle.
}
Serial.println(); // parametresiz olarak kullanıldığında yalnızca imleci bir alt satıra indirir.
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
float y = 1.23456; // formatlamak için kullanacağımız değişken.
void setup() {
Serial.begin(9600); //
}
void loop() {
Serial.print("Ondalikli sayit"); // Ekrana ondalıklı sayı yaz ve bir tab boşluk bırak.
Serial.print("Basamak Hassasiyetit");
Serial.println("Formatli Sayi"); // Ekrana formatlı sayı yaz ve bir alt satıra in.
for (int i = 0; i < 7; i++) {
Serial.print(y); // Varsayılan yazdırma şekli ile y değişkenini yazdır.
Serial.print("tt"); |