Arduino seri port ile PWM kontrolü

Yani seri porttan 1-255 arası bir değer girildiğinde ilgili PWM pinini o değerde ayarlayacak. IDE anladığım bir konu değil. :(
Bence birazcık uğraşıp C öğrenmeye çalışın. Biraz zor görünebilir ancak öğrendikçe daha da kolaylaşacaktır. Belli bir yerden sonra konuşur gibi kod yazmaya başlıyorsunuz. Hatta kafanızda olan algoritmayı bir bilemediniz iki denemede koda döküveriyorsunuz.
 
Bence birazcık uğraşıp C öğrenmeye çalışın. Biraz zor görünebilir ancak öğrendikçe daha da kolaylaşacaktır. Belli bir yerden sonra konuşur gibi kod yazmaya başlıyorsunuz. Hatta kafanızda olan algoritmayı bir bilemediniz iki denemede koda döküveriyorsunuz.
Bir deneyeyim hocam o zaman. Bu kodu nasıl yazabilirim birkaç tane tüyö verir misiniz? :D

MBlock üzerinden denedim, olmadı. Bir arkadaşa lazım. Bekletmek de istemiyorum. Bir deneyeyim C'yi :)
@The Anorak @Alpha Centauri
MBlock üzerinden yapmayı deneyeceğim. Sonrasında da C öğrenmeye çalışacağım. Aslında Arduino kursu satın almıştım. Onları izleye izleye öğreneyim bari. :)
 
Son düzenleme:
Eğer tek bir PWM portunun değerini ayarlayacaksanız işiniz kolay. Ama birden fazla pin varsa;
PinNo, Değer gibi ikili değer göndermeniz gerekiyor.
Araya bir ayraç(seperator) koymanız sonrasıda ise bu ayraca göre tek girdiyi ayırmanız gerekiyor. C#, Java gibi dillerde Split() gibi bir method ile istenilen char/string'e göre dizi haline getirebiliyor. C'de de benzer işi yapan fonksiyonlar var ama biraz daha karmaşık çalışıyorlar. strchr() ve strtok() ikilisini kullanarak yapabilirsiniz.

Aranan karakterin index'ini bulup o indexden öncesi ve sonrası olarak 2 adet substring oluşturulabilir.
 
MBlock üzerinden denedim, olmadı. Bir arkadaşa lazım. Bekletmek de istemiyorum. Bir deneyeyim C'yi :)
@The Anorak @Alpha Centauri
MBlock artık sizi kesmez diye düşünüyorum, bir şekilde C'ye başlamanız gerek. Kaçış yok. 🙂

Bir deneyeyim hocam o zaman. Bu kodu nasıl yazabilirim birkaç tane tüyö verir misiniz? :D
Seri haberleşme kolaydır zaten, ufak bir denemeyle hemen çözersiniz. Tüyo olarak şöyle diyeyim, yeni satır karakteri "\n"dir. Yani byte byte okurken her "\n" gördüğünüzde yeni satır gelmiştir.

Ardından elde etmiş olacağınız değeri bir değişkene atayın. Maksimum değer 255 ise, rahatlıkla byte türünü kullanabilirsiniz. Boşa yer tutmaz böylece.

Bunun dışında ayarı 0-255 değil de 0-100 gibi aralıklarla yapmak isterseniz "map" fonksiyonu hayat kurtarır.

Başka da bir tüyo gelmedi aklıma. 🙂

Bu arada direkt seri monitörle elle mi yazmak istiyorsunuz yoksa bilgisayarda bir client olacak mı?
 
MBlock artık sizi kesmez diye düşünüyorum, bir şekilde C'ye başlamanız gerek. Kaçış yok. 🙂


Seri haberleşme kolaydır zaten, ufak bir denemeyle hemen çözersiniz. Tüyo olarak şöyle diyeyim, yeni satır karakteri "\n"dir. Yani byte byte okurken her "\n" gördüğünüzde yeni satır gelmiştir.

Ardından elde etmiş olacağınız değeri bir değişkene atayın. Maksimum değer 255 ise, rahatlıkla byte türünü kullanabilirsiniz. Boşa yer tutmaz böylece.

Bunun dışında ayarı 0-255 değil de 0-100 gibi aralıklarla yapmak isterseniz "map" fonksiyonu hayat kurtarır.

Başka da bir tüyo gelmedi aklıma. 🙂

Bu arada direkt seri monitörle elle mi yazmak istiyorsunuz yoksa bilgisayarda bir client olacak mı?
Yani istendiği zaman el ile değer girilecek ve direkt olarak 5 PWM pinine uygulayacak. Read.Serial gibi bir kod vardı galiba. Onla olur mu? :)
 
Yani istendiği zaman el ile değer girilecek ve direkt olarak 5 PWM pinine uygulayacak. Read.Serial gibi bir kod vardı galiba. Onla olur mu? :)
Yakın, ama tersi. 😀 "Serial.read()" ile okuyoruz.

Tabii öncesinde setup fonksiyonunda "Serial.begin(9600)" fonksiyonu ile seri haberleşmeyi başlatmak gerekiyor. Buradaki 9600 baud rate, siz 9600 dediğiniz için ben de o şekilde yazdım. Değiştirebilirsiniz.

Tabii direkt okumuyoruz. Önce gelen bir veri olup olmadığını kontrol etmemiz gerekiyor. Bunu "Serial.available()" ile kontrol edebiliriz. Bir örnek vereyim:
C:
if (Serial.available() > 0) {
    //Ne yapmak istiyorsanız
}

Burada okuyabileceğimiz bir değer olup olmadığını kontrol ediyoruz. Varsa, okuyabiliriz. 🙂

 

Yeni konular

Geri
Yukarı