avatar_elektro77

ADC okumada Virgülden sonra 2 haneli sayı yazma

Başlatan elektro77, 30 Ağustos 2024, 13:18:26

elektro77

@ete Hocam. Sizden aldığım aşağıdaki kodları uzun süredir bir tasarımımda kullanıyorum.
Ama yeni farkettiğim bir şey oldu.
ADC gerilimi 4.03 volt olduğunda ekranda 4.3 olarak görünüyor.
Fakat batarya gerilimi 3.98 ise ekran 3.98 olarak doğru görünüyor.
Durum şu; Virgülden sonraki ilk hane gerilimi "0" olursa formül yanlış hesaplıyor.
Dolayısıyla batarya gerilimi okuması da yanlış oluyor..
Nerede hata yapıyorum?
Volt=(ham */ 125)
      Mvolt=volt//100
      Volt=Volt/100   'Bu formüllerde ise ondalık hanesini 2 hane yapar. yani 4.19 gibi.
      LCDOUT $FE,$C0," VOLT=",#VOLT,",",#Mvolt
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

aRci

Merhaba buradaki Mvolt kısmını 2 basamaklı yazabilmek için DEC2 yapmanız yetecektir.

LCDOUT $FE,$C0," VOLT=",#VOLT,",",DEC2 Mvolt

elektro77

Alıntı yapılan: aRci - 30 Ağustos 2024, 13:39:58Merhaba buradaki Mvolt kısmını 2 basamaklı yazabilmek için DEC2 yapmanız yetecektir.

LCDOUT $FE,$C0," VOLT=",#VOLT,",",DEC2 Mvolt
Malesef olmadı. Aynı sorun devam ediyor.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

ete

#3
ekranda 4,08 şeklii,nde görülecek küçültülmemiş sayı 408 dir.
Bunu 100 e bölersek tam sayı kısmı 408/100=4 olarak bulunur.
Ondalık kısmı ise 408//100 işlemi sonrası 8 olarak hesaplanır.
Ekrana yazdırırken
LCDOUT $FE,$C0," VOLT=",#VOLT,",",#Mvolt
kullanırsan
ekranda 4,8 olarak görürsün. Ama
LCDOUT $FE,$C0," VOLT=",#VOLT,",",DEC2 Mvolt
kullanırsan
4,08 görmen gerekir. Dolayısıyla işlem doğru ise aynı sorunun devam etmemesi gerekir.
Sende bir hata var ama nedir sen bulacaksın.
DEC2 komutu değişken değerini 2 hane olarak yazdırır. Hane sayısı 2 den küçük ise yerini sıfırla doldurur. Hane sayısı 2 den büyük ise yalnızca 2 tanesini alır ekrana verir.

İşin garanti olsun istiyor isen şöylede yapabilirsin.
IF Mvolt<10 then
LCDOUT $FE,$C0," VOLT=",#VOLT,",0",#Mvolt
Else
LCDOUT $FE,$C0," VOLT=",#VOLT,",",#Mvolt
ENDIF

Ete

not: şimdi basit bir programda DEC2 komutu ile denedim ekrana 4,08 olarak yazıyor.
Sorun sende anlayacağın.
 

elektro77

Evet sorun bende imiş.
2 dil seçenekli bir program yazmıştım.
dec2 olarak değiştirdiğim kod türkçe dilinin ekrana yazdırma kodlarında idi. Ama ben ingilizce olarak bakınca dec2 olarak değitirmeyi atladığım kod satırını ekranda okuyormuşum.
Teşekkür ederim.
"Eğer bir konuyu öğrenmek istiyorsan o konunun öğretmeni ol; daha iyi öğrenmek istiyorsan o konuda bir kitap yaz; daha da iyi öğrenmek istiyorsan yazdığın kitabi oku"

Powered by EzPortal