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.
analogWrite(pin, 0);
digitalWrite(pin, HIGH);
şeklinde kullanabilirsiniz. PWM 'i durdurup sonra
dijital giriş-çıkış olarak kullanmak mantıklı olacaktır.
@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 :)
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.
Dijitalden analoğa geçişte yine aynı durum söz konusu mudur ?
Bence öyle yapmak uygun olacaktır...
Anladım hocam denerim. Teşekkür ederim cevaplar için.
@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?
Ç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
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ç.