Arduino kitabı ile ilgili bir soru

Merhaba; Çoşkun Taşdemir’in yazdığı Arduino kitabında; 9600 baudrate(saniyedeki bit sayısı) haberleşmede, saniyede 960 karakter gönderilebilir çünkü her karakter 1 bytetır (ASCII tablosu 255’te biter ve doğrudur. yani en fazla 1 byte’tır) ve 1 byte 10 bittir diyor (burada 1 karakter 10 bittir demek istemiş olabilir düşüncesindeyim). Bunu 8N1 protokolüne göre mi söylüyor. Çünkü sadece 8N1’de 1 karakter 10 bit olabilir gibi. Açıkçası bunu anlayamadım.

Evet 8N1,'de 1 byte 10 bit ile gönderilir demek istemiştim. Dolayısıyla 9600 baud’da ortalama saniyede 960 karakter gönderilebiliyor

Bu arada yanlış anlamayın, kitabınız gayet güzel ve çok yardımcı (Bir kaç ufak yazım hatası dışında, zaten bunu da okuyucu görebiliyor, yanlışa kapılmıyor) . Peki başka bir protokol kullansam örneğin 5N1 burada hız artabilir ancak 5 bitlik data olduğundan DEC olarak maksimum 31’e yani ascii olarak US (Unit seperator) (?) karakterine kadar mı veri gönderebiliyorum? Ya da diğer karakterleri ayrı ayrı paketlerde mi gönderiyor (aslında hızı azalıyor) ?

5N1 kullanılabiliyor mu şu an emin değilim. Atmega328p’nin datasheet’ine bakmak gerek. Arduino kütüphaneleri default olarak 8N1 olarka çalışıyor. Kitapta gördüğünüz hataları da bildirebilirseniz sevinirim. Baskılar çıktıkça düzeltmeye çalışıyoruz. Sizdeki kaçıncı baskı? mail adresim: coskuntasdemir (at) gmail.com

asenkron serial iletişimde startbit+bytedatabitleri+stopbiti(+istenirse bir stopbit daha) kullanılılır. bu iletişim tipi NRZ dir yani non return zero deniyor. burada data hattı herzaman 1(bir) yüksek konumdadır. iletişimin başlaması için 1 bit zamanı kadar hat 0(sıfır) yapılır ve sonra databitleri 1,0 yollanır ve en son stop bit yine 1(yüksektir) yani hat boştayken hep yuksek(1) konumundadır. asenkron iletişimde çoğu zaman hız baştan bellidir ve bu da bize bir bitin hesaplanmasına yardım eder. 9600 baud için 1/9600 buda yaklaşım 104us (mikrosaniye) maksimum bir bit başına zaman ayırmamız gerektiğini belirtir işlemci bu zaman göre protokolu yönetir. veri hızını arttırmak için bautrate arttırmak bir çözüm olabilir ama rate arttıkça hat mesafesi kısalır. 9600 baudla 10mt ileriden veri okunurken 115200 baud u 3mt öteden okuyamazsınız.

Bilgi için teşekkürler. Bu kablo boyu hadisesi gerçekten ilginçmiş. İş yerinde OBD 2 için 2 m’den fazla kablo boyu kullanamazsın denildiğinde garipsemiştim (Makina mühendisiyim , anlamam elektronikten :slight_smile: ) Ancak baktığım kaynaklarda kablo kapasitansından bahsedilmiş. Kapasitans ve iletim hızı ndan bahsedildiğine göre sanıyorum kablo düşük geçiren bir filtre gibi davranıyor. http://upload.wikimedia.org/wikipedia/commons/e/e0/1st\_Order\_Lowpass\_Filter\_RC.svg Aynı durum gürültü ölçümlerinde problem teşkil ediyor (48kHz örnekleme olduğundan) Bu sebeple kapasitansı ve direnci düşük kablolar kullanılıyor. tabi ki pahalı

Bu arada elimdeki kitap 3.baskı İnternetten gördüğüm kadarıyla 4. baskıya geçmişsiniz. http://www.dikeyeksen.com/products/arduino

  1. baskı çıkmadı henüz, yakında çıkacak. Gördüğünüz hataları mail atarsanız sevinirim

Coşkun bey elimde 5. Baskısı mevcut kitabın bir kac yazim hatasi var. Dijital giris cikis fonksiyonlari bölümü sayfa 145 deki sema da bulunan baglanti ile sonraki Sayfada bulunan koddaki led ve buton bacak atamalari karismis gakiba. Birde sayfa 153 teki cit cit butonlardaki sicrama problemi sonrasında bir çok uygulamada buton durumu okumak için int okunandurum=ButonOku (butonpin); Şeklinde buradaki butonoku anlayamadim. Digitalread mi olmasi gerekli bir cok ornek uygulama bu şekilde cunki. Ben mi birseyi gozden kaciriyorum anlayamadim.

Yazım hatalarını düzeltmeye çalışıyorum ama yine gözden kaçanlar oluyor. Bulduğunuz hataları mail atarsanız sevinirim : coskuntasdemir at gmail .com Oradaki ButonOku kendimizin yazdığı farklı bir fonksiyon, fonksiyonun da kod örneğinde olması lazım