Sanırım ikinci hafta yapmış olduğumuz deney için verilen rapor ödeviydi. Bu ödevde birçok kişi zorlanmıştı… Algoritma/kodlama dersi almadan mikroişlemci dersi aldırılan mazlum öğrenciler 🙁 Bu haftaki rapor için mikroişlemci olarak laboratuvarda kullandığımız adını sanını bilmediğim soykayı seçmişti hoca. Ben burada hem Arduino için paylaşacağım hem de alt dönem kardeşlerim için ödevde istenen şekilde paylaşacağım.

Rapora buradan ulaşabilirsiniz : Rapor 2

Önce “BCD” ne “Binary” ne?

BCD, onluk tabandaki sayı; Binary ikilik tabandaki sayı diyeyim sen anla. Tabi ki çok kabaca tek cümlede söyledim, daha doğrusunu öğrenmek için Wiki okuyabilirsin. Örnek verip anlatayım bir de 🙂 ,

  • 5 için 0101
  • 2 için 0010
  • 15 için 1111

Amacımız, 1 den 15 e kadar olan sayıları binary sistemine çevirip bu değerdeki 1 ve 0 rakamlarına göre 4 ledi yönetme.

Adım adım düşünelim,

  1. BCD sayıyı Binary sistemine çevir,
  2. Binary değerindeki her basamağı hafızada tut,
  3. Hafızadaki değerleri sırayla lede aktar.

1. 0-15 Sayaç

db9qly

Bu devreyi tüm adımlar için kullanacağız.

Kod için : Normal Sayaç

Açıklama satırlarıyla tüm kodları açıklamaya çalıştım, takıldığınız yer varsa yorumda belirtirseniz cevap vermeye çalışırım.

2. 15-0 Sayaç

Yukarıdaki devreyi hiç değiştirmiyoruz.

Kod için : Ters Sayaç

3. Otomatik Sayaç 0-15-0-15…

Devre yine aynı.

Kod için : Otomatik Sayaç

Kodları bloga koymak için hızlıca yazdım, hata olabilir. Denemeye zamanım olmadı, bildirirseniz sevinirim.

Alternatif algoritma: Bir arkadaşım için bit operatörleri kullanmak yerine, BCD den binary sisteme geçerken kullandığımız 2 ye böl kalanlarını sonda başa doğru yaz methodunu kullandık. Dilerseniz, böyle bir algoritma yazabilirsiniz. Kodu aşağıda paylaşayım ancak algoritmanın sadece binary hesaplama kısmını alın, diğer kısımlarda hata olabilir.

Alternatif kod, BCD den Binary sisteme geçiş : Alternatif Algoritma