avishorp/TM1637 kütüphanesi ve noktalı değerler [Sorun Bulundu]
  • Selam arkadaşlar. bu modülü kullanarak derece yazdırmaya çalışıyorum ama bir türlü yazdıramadım.

    Mesela 27.60 yazacağına direk 27 yazıyor.

    Sensör bmp180
    Sıcaklığı burdan okuyorum serial printde direk noktalı değeri görebilirken displayde olmadı.
    Temperature*0.1 yerine direk Temperature yazınca da 276 yazıyor.
    Sonra altituda denemesi yaptım. - sayılar yerine F6 gibi saçma sapan şeyler gösteriyor.
    Herhalde kütüphaneyle ilgili?

    Kod;

    #include Wire.h>
    #include BMP085.h>
    #include Arduino.h>
    #include TM1637Display.h>

    // Module connection pins (Digital Pins)
    #define CLK 2
    #define DIO 3

    TM1637Display display(CLK, DIO);
    BMP085 dps = BMP085();

    long Temperature = 0, Pressure = 0, Altitude = 0;

    void setup(void) {
    Serial.begin(9600);
    Wire.begin();
    delay(1000);
    dps.init();
    display.setBrightness(0x0f);
    }

    void loop(void) {
    dps.getPressure(&Pressure);
    dps.getTemperature(&Temperature);
    dps.getAltitude(&Altitude);

    Serial.print("Pressure(mm Hg):");
    Serial.print(Pressure/133.3); //Выводим давление в мм.рт ст
    Serial.print("Temp:");
    Serial.println(Temperature*0.1); // Температуру в градусах Цельсия
    display.showNumberDec(Temperature*0.1);
    delay(2000);
    }
  • Bence,
    noktalı sayı tanımı float ile olmalı,
    sen temperature değişkenini long tanımlamışsın. Long tanımladığın için tam sayıya yuvarlıyor. Noktalı olacak bütün değişkenleri float tanımla birde öyle dene.
  • ekmekci dediğini denedim float yapınca;

    dps.getPressure(&Pressure);
    dps.getTemperature(&Temperature);
    dps.getAltitude(&Altitude);

    şu kısımlarda hata veriyor. Yani kütüphaneden kaynaklı sanırım.
    ben de t değişkeni tanımladım float olarak bir tane.sonra;

    t=Temperature*0.1;
    Serial.println(t);
    display.showNumberDec(t);

    yaptım.Seri ekrandan 29.80 değeri alırken displaydan yine 29 aldım. sanırım bu displayın başka kütüphanesini bulmam lazım.
  • float olacakları 100 veya binle çarpın sonra bir float değişkene yine bölerek eşitleyin yahu.
  • okoman usta, serial printte zaten noktalı değerleri alabiliyorum.
    sorun bu displayde. tm1637 kütüphanesi araştırıyorum başka.
  • sanırım bu modülden kaynaklanıyor. yani modülde zaten sadece ortada 2 adet nokta var.
    onu da iki nokta üst üste kullanıyormuşuz tek.

    daha kesinleştiremedim.
  • Selamlar.

    Nette gezerken bu sorunun kaynağını buldum.
    Piyasada iki çeşit bu şekilde display var.
    Birincisi bendeki; (sadece ortada iki nokta üst üste)

    http://i.ebayimg.com/images/g/F2oAAOSwxH1T7I2m/s-l300.jpg

    bir de hem sayıların alt köşesinde nokta hem de tam ortada çift nokta var;

    http://www.play-zone.ch/media/catalog/product/cache/3/image/2292003bdb0f876b1b9d23351ca744da/1/0/1058.jpg

    sipariş verirken ikincisini almaya özen gösterin.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.