Arduino da aynı pinin hem lojik 1-0 hemde PWM olarak kullanılması?

Başlatan mr.selim, 14 Mayıs 2017, 18:39:10

mr.selim

Herkese iyi çalışmalar. Tecrübenize dayalı olarak bir soru sormak istiyorum. Projeye arduino ile başladım malesef onla bitirmek zorundayım. Belki tecrübe edeniniz olmuştur diye böyle bir soru sormak istedim. Şimdiden teşekkürler.

Arduino kullanıyorsunuz. İki tane fonksiyonunuz (A ve B) ve 3 tane digital pin çıkışınız var. Anahtarınıza göre A ve B yi seçiyoruz. A fonksiyonun da bu 3 pin duruma göre 0 ile başlayıp Lojik 1 ve 0 çıkışları vermeli. B yi seçtiğinizde bu 3 pin 0 ile başlayıp duruma göre belli oranlarda PWM vermeli.

Şimdi soru şu. Arduino aynı pinde hem lojik çıkış hemde pwm çıkış verebilmede ne kadar iyi ? Ne eklenmeli ki sıkıntılar yaşamiyim ?

Kendi tecrübeme dayanarak söyliyim. Arduinoya ait olan komutu ( analogWrite ) kullanıldığında PWM edilen pinler daha sonrasında mesela PORTA = 0x00 dediğimde sıfırlanmadığını ve PWM edilmeye devam edildiğini gördüm. Ve böyle bir soru sorma gereği duydum.

mehmet

analogWrite(pin, 0);
digitalWrite(pin, HIGH);

şeklinde kullanabilirsiniz. PWM 'i durdurup sonra
dijital giriş-çıkış olarak kullanmak mantıklı olacaktır.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

mr.selim

@mehmet Yorumunuz için teşekkür ederim hocam. Fakat mantığımın almadığı nokta şu. Ben sürekli analog 0 mı kullanıcam ? Mesela dijitale geçtim analog sıfır diyip sonra direk lojik 1 mi yapıcam ? yoksa hem analoğu hemde lojiği her defasında sıfırlayıp dijital high mı yapmam gerekli olacak?


Dediğim gibi en son test ettiğimde analog değerleri PORTA = 0x00 diyip kapatamamıştım. Dijitallerde analog 0 diyip kapanmıyor :)

mehmet

Arduino kullanırken artık PORTA = 0x00; gibi
kullanmaya gerek yok. Analog çıkıştan dijitale
geçmek için, önce analoğ çıkışı durdurup sonra
dijital olarak kullanmak gerekecektir. Hatta
pinMode ile dijital çıkış işlemi yenilenebilir.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

mr.selim

Dijitalden analoğa geçişte yine aynı durum söz konusu mudur ?

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

mr.selim


mr.selim

@mehmet Hocam ufak bişey yaptım kendimce fikrinizi almak isterim. Normalde lojik olarak kullandığım çıkışları, Bu kesme fonksiyonunda analog çıkış olarak kullanmak istedim. Sizce nasıl olmuştur ?
void setup
{
attachInterrupt(5, KESME, RISING);
}

void KESME ()
{
  PORTB = 0x00;
  analogWrite (Afaz, 0);
  analogWrite (Bfaz, 0);
  analogWrite (Cfaz, 0);
  
  while (SW4 == 1)
 {
       if()
       
       if()
       
       if()
       
 } 
 
   analogWrite (Afaz, 0);
   analogWrite (Bfaz, 0);
   analogWrite (Cfaz, 0);
     PORTB = 0x00;
  
  }


Kesmeden çıkarken devamlı kullanılan fonksiyon için sıkıntı çıkarmasın diye sona da ekleme yaptım. SW anahtar. Anahtar basılı olduğu süresince kalsın çıkışda da eski haline döner dedim. Mantıklı mıdır sizce?

BLİZZARD

Çok ilginç .. doğrusu merak ettim ben çok daha çeşitli yapacam aynı pini giriş  sonra çıkış digital ve pwm olarak frekansını da değiştirmeli  çok ilgimi çekti ... Olması gerek  :o

mr.selim

analogwrite yaptıktan sonra digitalwrite yapmak gerekiyor. Hele ki bu sadece çıkış için. Birde hem giriş hem çıkış olursa o zaman da işler daha çılgın oluyor. Frekans değiştirmekte sorun yok ama. Bu write komutların arka planda ne iş yaptıklarını incelemedim ama bence de çok ilginç.