void setup(){ pinMode(A0,INPUT); pinMode(A1,INPUT); pinMode(A2,INPUT); pinMode(A3,INPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); Serial.begin(9600); } void loop(){ int pot1=analogRead(A0); int pot2=analogRead(A1); int pot3=analogRead(A2); int pot4=analogRead(A3); analogWrite(8,pot1); analogWrite(9,pot2); analogWrite(10,pot3); analogWrite(11,pot4); Serial.print(pot1); Serial.print(“\t”); Serial.print(pot2); Serial.print(“\t”); Serial.print(pot2); Serial.print(“\t”); Serial.println(pot3); delay(250); } bu kodla potansiyometreden aldığım değer sağlıklı sonuç vermiyor. yani bir numaralı potansimotre maksimum değerine yaklaşırken iki, üç ve dört numara değeride az da olsa artmaya başlıyor. bunun nedeni ne olabilir? nasıl düzeltebilirim?
Çok kesin bir bilgim yok ama fikirimi söyleyim istersen galiba bunlarda boşluk benzeri bişey oluyor ondan dolayı belli bir yerden sonra tamamen kapalı olsada akım geçebiliyor yazılıma şöyle bişey ekleyebilirisin ne kadar artıyorsa tamamen açıkken örnek 1 artıyor diyelim 1 den sonrasını oku gibi birşey ekleyebilirsin ama okoman gibi profesyonellerin cevabını bekle ama bunuda deneyebilirsin onlar cevap verene kadar.
tüm potların +ya bağladığın uçlarına 100ohm, 470ohm veya 1k gibi elinde ne varsa bir direnci uçlarına seri bağlamayı dene. potları full açtığında yada kapadığında ufak tefek farkları giderebilir. birde potların hepsini aynı yönde bağla çoğu pot lineer değil logoritmiktir yani orta bacağında ölçtüğün değer ilk başlarda yavaş yavaş yükselirken ortadan sonra birden hızlı değer değiştirmeye başlar. eğer ters bağlamışsan o zaman değerler önce hızlı değişir sonra gittikçe yavaş değişir buda senin hizalamanı bozar oradan anlarsın zaten. birde analog okumada 1024 adımda (10bit) ölçüm yapar, analogwrite 255 adım(8bit) kullanır buna da dikkat et. sen analog a0 da full pozisyonda 1024 okursun ama yazarken 255 değerinden fazlasını yazamazsın map komutu ile bunu dengelemen lazım
tüm potların artı bacağına 100 ohm direnç bağladım map ile 0-255 arasına getirdim değeri ama sonuç değişmedi. hatta bi potun değerini arttırınca hiç bişey değişmiyo başka birininkini arttırınca serial monitor de iki değer artıyo. kodun son hali bu void setup(){ pinMode(A0,INPUT); pinMode(A1,INPUT); pinMode(A2,INPUT); pinMode(A3,INPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); Serial.begin(9600); } void loop(){ int pot1=analogRead(A0); int val1=map(pot1,0,1023,0,255); int pot2=analogRead(A1); int val2=map(pot2,0,1023,0,255); int pot3=analogRead(A2); int val3=map(pot3,0,1023,0,255); int pot4=analogRead(A3); int val4=map(pot4,0,1023,0,255); digitalWrite(8,val1); digitalWrite(9,val2); digitalWrite(10,val3); digitalWrite(11,val4); Serial.print(val1); Serial.print(“\t”); Serial.print(val2); Serial.print(“\t”); Serial.print(val2); Serial.print(“\t”); Serial.println(val3); delay(250); }
potların orta bacağı ile gnd arasına 330nf-1000nf arası kondansatör koy. biraz daha stabil olur okuman. ani değişimleri önlemiş olursun. kullandığın potların değeri nedir hepsi aynı olsun..
aynı hepsi 10k. teşekkür ederim okoman üstad sorun çözülmedi ama daha stabil oldu. ledler deneme amaçlıydı aslında servo kontrolü yapmak için kuracağım devreyi ama servolarım kargoda olduğu için ledlerle yaptım. servolarda sorun çıkacağını düşünmüyorum.kolay gelsin