Arduıno’da analog pinleri digital olarak kullanma

yldrm byzt

Üye
Katılım
28 Ara 2019
Mesajlar
86
Puanları
1
Arduınoda örnek 7 segment display 0-99 sayıcı kodlamasında d1-d13 arası pinlerinin tamamı kullanılmış.

Benim çalışmamda ise d0, d1, d2, d3, d4 pinlerini başka bir komponent pini olarak kullanacağım için 0-99 sayıcı için d0, d1, d2, d3, d4 pinlerinin yerine A0, A1, A2, A3, A4, A5, analog pinlerini kullanmak istiyorum. Kodlamada nasıl bir değişiklik yapmalıyım?

örnek kodlama aşağıdadır.

Kod:
void setup()
{
  for (int i = 0; i <= 13; i++)
    pinMode(i, OUTPUT); //Set all pins from 0 to 13 as OUTPUT
}
//The line below is the array containing all the binary numbers for the digits on a SSD from 0 to 9
const int number[11] = {0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000};

void loop()
{
  for (int tens = 0; tens < 10; tens++)

  {
    display_tens(tens);
  }
}

void display_tens(const int tens)
{
  int pin1, a, ones; 
  //pin1 is just used to deal with pins of the 1st SSD which desplays the tens digit

  for (pin1 = 0, a = 0; pin1 < 7; pin1++, a++)
  {
    digitalWrite(pin1, bitRead(number[tens], a));
  }
  for (ones = 0; ones < 10; ones++)
  {
    display_ones(ones);
    delay(300);
    //I have given a delay of 300 milliseconds. You can put your own Time!!
  }
}

void display_ones(const int x)
{ int pin2, b;         
//pin2 is just used to deal with pins of the 2nd SSD which desplays the ones digit

  for (pin2 = 7, b = 0; pin2 <= 13; pin2++, b++)
  {
    digitalWrite(pin2, bitRead(number[x], b));

  }

}
 
Son düzenleme:
Arduınoda örnek 7 segment display 0-99 sayıcı kodlamasında d1-d13 arası pinlerinin tamamı kullanılmış.

Benim çalışmamda ise d0, d1, d2, d3, d4 pinlerini başka bir komponent pini olarak kullanacağım için 0-99 sayıcı için d0, d1, d2, d3, d4 pinlerinin yerine A0, A1, A2, A3, A4, A5, analog pinlerini kullanmak istiyorum. Kodlamada nasıl bir değişiklik yapmalıyım?

örnek kodlama aşağıdadır.

Kod:
void setup()
{
  for (int i = 0; i <= 13; i++)
    pinMode(i, OUTPUT); //Set all pins from 0 to 13 as OUTPUT
}
//The line below is the array containing all the binary numbers for the digits on a SSD from 0 to 9
const int number[11] = {0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000};

void loop()
{
  for (int tens = 0; tens < 10; tens++)

  {
    display_tens(tens);
  }
}

void display_tens(const int tens)
{
  int pin1, a, ones;
  //pin1 is just used to deal with pins of the 1st SSD which desplays the tens digit

  for (pin1 = 0, a = 0; pin1 < 7; pin1++, a++)
  {
    digitalWrite(pin1, bitRead(number[tens], a));
  }
  for (ones = 0; ones < 10; ones++)
  {
    display_ones(ones);
    delay(300);
    //I have given a delay of 300 milliseconds. You can put your own Time!!
  }
}

void display_ones(const int x)
{ int pin2, b;        
//pin2 is just used to deal with pins of the 2nd SSD which desplays the ones digit

  for (pin2 = 7, b = 0; pin2 <= 13; pin2++, b++)
  {
    digitalWrite(pin2, bitRead(number[x], b));

  }

}
A0-A5 uçlarını belki analog çıkış yapıp 5v seviyesine çekip belki dijital çıkış olarak kullanabilirsin ama bu şekilde hiç düşünmemiştim bende (çekilen akıma dikkat edilmeli ) :)
 
Arduino A0-A5 pinleri, diğer pinler
ile aynı özelliktedir. Dijital olarak ayarlandığında
giriş - çıkış için diğer pinler ile aynı akım
özelliklerine sahiptir.
8161D–AVR–10/09

(A6+A7) pinleri sadece analog giriş olarak
kullanılmaktadır. (TQFP ve QFN/MLF kılıf)
 
Arduino A0-A5 pinleri, diğer pinler
ile aynı özelliktedir. Dijital olarak ayarlandığında
giriş - çıkış için diğer pinler ile aynı akım
özelliklerine sahiptir.
8161D–AVR–10/09

(A6+A7) pinleri sadece analog giriş olarak
kullanılmaktadır. (TQFP ve QFN/MLF kılıf)

sayın mehmet.bey, teşekkür ederim.​

analog pinler nasıl Dijital olarak ayarlanabiliyor. bir-iki kod satırı rica etsem mümkün müdür? giriş ve çıkış için..​

 
Bir fark yok diğerleri ile. Ancak başka bir
yerde analogRead() komutunu kullanmamalısınız.
A0 = 14, A1 = 15...

C++:
void setup(void)
{
    pinMode(A0, OUTPUT);           // veya pinMode(14, OUTPUT);
    pinMode(A1, INPUT_PULLUP);     // veya pinMode(15, INPUT_PULLUP);
}

void loop(void)
{
    if(digitalRead(A1) == 0)
    {
        digitalWrite(A0, HIGH);
    }
    else
    {
        digitalWrite(A0, LOW);
    }
}

https://wokwi.com/projects/335449199516582482
 
Son düzenleme:
Bir fark yok diğerleri ile. Ancak başka bir
yerde analogRead() komutunu kullanmamalısınız.
A0 = 14, A1 = 15...

C++:
void setup(void)
{
    pinMode(A0, OUTPUT);           // veya pinMode(14, OUTPUT);
    pinMode(A1, INPUT_PULLUP);     // veya pinMode(15, INPUT_PULLUP);
}

void loop(void)
{
    if(digitalRead(A1) == 0)
    {
        digitalWrite(A0, HIGH);
    }
    else
    {
        digitalWrite(A0, LOW);
    }
}

https://wokwi.com/projects/335449199516582482

sayın mehmet.bey, çok teşekkür ederim. sağ olun, var olun...​

 

Forum istatistikleri

Konular
128,123
Mesajlar
915,204
Kullanıcılar
449,832
Son üye
SametKepenek

Yeni konular

Geri
Üst