1. sayfa
Çözümü olan yok mu arkadaşlar |
Map etmeden direkt okursan hatanın nedeni daha iyi anlaşılır. |
dediğine gelecek olursam map etmeden önce potansiyometre düzgün çalışıyor. 0 ila 1023 arasında değerler görüyorum potansiyometreyi ne kada rçevirirsem değer o kadar artıyor yani her şey normal çalışıyor devreyi hiç bozmadan map komutunu girince birden sapıtıyor daha potansiyometreyi yarıya kadar çevirmeden değer olarak sona ulaşmış oluyor bile. |
Öyleyse şunu dene. byte pot = analogRead(pin) / 51; |
|
|
İlginç. Ben olsam serial monitor ile hem tam değeri, hem de bölünmüş halini okuyup karşılaştırırdım. |
Hocam zaten bu denemelerin hepsini serial monitör ile yapiyorum. Gercekten ilginc bir durum. Yani normal bir pot kodunu yazip serial monitör de degerlere bakiyorum hkc bir sorun yok ardindan ayni kodun uzerine map komutunu yazip yukleyip serila monitöru acinca bu dedigim olay basima geliyor. Isin ilginc yani birden fazla arduino kart ve birden fazla potansiyometre ile denememe ragmen hep ayni hatayi aliyorum. Sonuc olarak kafayi yemek uzereyim. ![]() |
hocam aklıma şöyle bir fikir geldi acaba uygun mudur. şimdi ben potansiyometreye map komutunu kullanmadığım zaman düzgün çalışıyor ya işte bende vantilatörü kullanmak için potansiyometreden gelen veriyi 1-2-3 aralığına dönüştüreceğime direk 1023/3 deyip 0-341 1. kademe, 341-682 arası 2. kademe ve 682-1023 arası 3. kademe olacak şekilde çalıştırsam uygun olur mu acaba. yani bu mümkn müdür. böylece map komutunu kullaamama gerek kalmaz bu şekilde olunca da potansiyometreler düzgün çalışır. ancak bir nokta daha var. ben bu potansiyometre kısmını switch-case kodu ile kullanacağım ve switch kodunun değeri önceden potansiyometreden gelen dönüştürülmüş tek bir değerdi(1-2-3 gibi) şimdi tek bir değer değil bir aralık olacak (0-341 arası gibi) bunu nasıl kod şekline dönüştürüp switch koduna ekleyeceğim. yardım edersen çok mutlu olurum. |
Bence serial'e yazarken hata yapıyorsun. Çünkü 0-1023 arası doğru, map kullanınca hatalı, üstelik bölme de hatalı çıkıyor diyorsun. Bu mümkün değil. Şunu dener misin. Bu kod ile 0-255 arası bir değer okuman gerekiyor. void loop() { // p -> hangi analog piniyse byte pot = ((uint16_t) analogRead(p)) / 4; Serial.write(pot); delay(250); } |
sorunun kaynağı: ben projemde lm35 sensörüde kullanacağım için void setup() kısmının içine analogReference(INTERNAL); kodunu giriyordum buda potansiyometreden gelen değerlerde bozulmalara neden oluyordu. çünkü analogReference(INTERNAL); kodu alıntı """setup fonksiyonumuzda bulunan analogReference(INTERNAL); komutu, Arduino’muzun analogda dijitale çeviricisinin 1,1V referans voltajı kullanmasını sağlıyor. Bu sayede, analog girişten okuyacağımız 0-1023 arası değerlerin her bir adımı 1,0742 mV (milivolt) gerilime denk düşüyor. LM35 sıcaklık sensörünün çıkış bacağında okuduğumuz her 10 mV, 1 °C sıcaklığa denk geldiğinden; 10 / 1,0742 bize yaklaşık olarak 9,31 değerini veriyor. Yani bu demek oluyor ki, analog girişten ölçtüğümüz değeri 9,31 ile çarparsak, elde ettiğimiz sonuç sensörün verdiği çıkış geriliminin santigrat cinsinden karşılığını elde ediyoruz."""(https://maker.robotistan.com/arduino-dersleri-11-sicaklik-olcumu/) alıntıda bahsedildiği üzere potansiyometredeki ölçümleri referans değeri doğrultusunda çevirdiği için hatalı sonuçlar alıyordum. yani bütün mesele bundan ibaretmiş hocam. o kodu çıkardığımda her şey düzeldi. yardımlarınız için teşekkür eder vaktiniz içinse tekrar özür dilerim. iyi günler hepinize. |
1. sayfa
potansiyometre normalde 0-1023 arası değer gösteriyor ben bunu map komutu ile 0-20 aralığına dönüştürünce şöyle bir hata oluşuyor. potansiyometreyi 10 derece çevirince değer göstermiyor sonra çok az daha çevirince 1-2-3 diye değer gösteriyor ancak potansiyometreyi yarıya kadar çevirince benim belirlediğim sınır noktasına ulaşmış oluyor. yani yarıya kadar çevirince 20ye çoktan gelmiş oluyor ve gerisi boşa dönüyor. birbirinden farklı potansiyometrelerle denesemde her defasında aynı sorunu yaşadım.
bu bir hata mıdır hata ise nasıl düzeltilir.
teşekkürler.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.