programlama hakkında bir kaç soru..(Çözüldü)
  • merhaba arkadaşlar, arduino ile 3 aydır uğraşıyorum, az biraz c dilini de biliyorum. Baştan belirteyim arduino kitabındaki uygulamaları ve sitedeki konuları inceledim. Şu anda kendimi ufak ufak geliştirmeye çalışıyorum ancak araştırmama rağmen çözümünü bulamadığım bir kaç sorum hakkında yardımınızı istiyorum..

    1. si arduino'nun 2,3,4 ve 5. dijital pinlerini output olarak ayarlıyorum ve sırasıyla 4 lede bağlıyorum
    byte A[4]={B1000,B0100,B0010,B0001} şeklinde bir dizi tanımlayalım ( byte veri tipinin doğru seçim olacağını düşündüm bilmiyorum ne kadar doğru olur?)
    arduino'ya A[0] komutunu verdiğimde ilk ledin,A[1] komutunu verdiğimde ikinci ledin, A[2] komutunu verdiğimde 3. ledin ve A[3] komutunu verdiğimde ise son ledin yanmasını istiyorum, ancak bunu nasıl yapacağımı bir türlü bulamadım


    2. si byte C[5]= {B10100100,B10011010,B10010100,B10000000,B11110000}; şeklinde bir dizimiz olduğunu düşünelim, buradaki her bir dizi elemanın yani C[0],C[1],C[2],C[3] ve C[4] ' ün bitlerini her defasında bir tane sağa kaydırmak istiyorum, ancak normal bit kaydırmaktan farklı olarak en sağdaki bitin kaymadan sonra en sola eklenmesini istiyorum yani;
    C[0]=B10100100 iken ilk kaymadan sonra C[0]=B01001001, bir sonraki kaymadan sonra C[0]=B10010010 olacak şekilde devam etmesini istiyorum, bu konuda fikirlerinizi rica ediyorum...

    desteğiniz için teşekkür ediyorum..
  • Merhaba
    1. soru için byte tipi 8bitten oluşur ama sanırım kod derlenirken sayıların en başına 0 lar ekleniyor. Ama soru sanki çok açık değil. Mesela A[0] komutunu nasıl veriyorsun? Bir değişken tanımlayıp if-else if-else yapıp bu değişkeni dizi elemanlarıyla karşılaştırabilirsin. Soruyu biraz daha açarsan iyi olur.

    2. soru için şöyle yazmışın
    "en sağdaki bitin kaymadan sonra en sola eklenmesini istiyorum yani;
    C[0]=B10100100 iken ilk kaymadan sonra C[0]=B01001001, bir sonraki kaymadan sonra C[0]=B10010010" bu sanırım yanlış olmuş sen sola ötelemek istiyorsun ama sağa yazmışın.
    Burada shit işlemi yapman gerekli şu linke biraz bak
    http://playground.arduino.cc/Code/BitMath#bit_shift

    Örnek olarak yazıyorum önce ötelemek istediğin sayıya B10000000 sayısı ile AND işlemini uygula bunu bir geçici değişkene at. O değişkeni 7bit sağa ötele. Sonra Dizideki sayıyı 1bit sola ötele. Ötelediğin iki sayıyıda topla istediğine ulaşırsın.
  • yardımın için teşekkür ederim, verdiğin link sayesinde 1. sorumun cevabınıda almış oldum, ayrıca 2. soruda açıkladığın yöntemle çözüldü.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.