Şimdi Ara

Energia/Arduino float Yazdırma Sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
1
Cevap
0
Favori
427
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar. Ben çok büyük ihtimalle Arduino açık kaynağından faydalanılarak oluşturmuş Texas Instruments in MSP430 Launchpad ini kullanıyorum.
    Pinlerinin yeri dışında hemen hemen her şeyi Arduino ile aynı. Energia isimli bir IDE si var, Arduino IDE nin kırmızısı sadece.

    Neyse sorunuma geçeyim, para sayan bir kumbara yapmaya çalışıyorum pek kompleks bir şey değil bir tuş ile atacağım paranın türünü belirliyorum (her tuşa bastığımda 5-10-25-50-100 kuruş diye tek tek geziyor) açtığım yarığın önündeki bir LDR ile ilk önce ortamın parlaklığını tespit ediyor sonra paranın atılıp atılmadığını anlamaya çalışıyorum. Atıldıysa da atılan parayı toplam miktarine eklemek istiyorum. Bir tane LED ile de kutunun içini aydınlatıyorum.

    Fakat toplam parayı yazdırırken aşağıdaki gibi tuhaf rakamlar beliriyor;

     Energia/Arduino float Yazdırma Sorunu


    Kod ise aşağıdaki gibi;

    int s1=0; float tp=0; int t=0; 

    void setup()
    {
    Serial.begin(9600);
    pinMode(2,INPUT_PULLUP); //LDR pini
    pinMode(5,INPUT_PULLUP); //Button pini
    pinMode(9,OUTPUT); //LDR toprak pini
    pinMode(12,OUTPUT); //LED pini
    digitalWrite(9,LOW);
    digitalWrite(12,HIGH);
    Serial.println("Basladi.");
    //200 ms aralıkla ortamın ışığını ölçüp ortalamasını al.
    //---
    int d[10];
    for(int i=0;i<10;i++) {
    d[i]=analogRead(2);
    Serial.print(i+1); Serial.print(":"); Serial.println(d[i]);
    t=t+d[i];
    delay(200);
    }
    t=t/10;
    Serial.print("Ortalama:"); Serial.println(t);
    //---
    }

    void loop()
    {

    int a=analogRead(2); int delta=t-a; //LDR deki değişim
    if(delta>10) {
    Serial.print("Delta:"); Serial.println(delta);
    tp=tp+float(mod(s1))/100; //Şu an hangi para modundaysa 100 e bölüp ekle.
    Serial.print("Toplam Para:"); Serial.println(tp);
    }

    if(digitalRead(5)==LOW) { //Butona basıldıysa
    s1++;
    Serial.print("Para Tipi:"); Serial.println(mod(s1));
    Serial.print("s1:"); Serial.println(s1);
    delay(250);
    }
    }

    int mod (int s2) { //Butona basılma miktarına göre para çeşidi bul.
    int parac;
    if(s2%5==0)
    parac=5;

    else if(s2%5==1)
    parac=10;

    else if(s2%5==2)
    parac=25;

    else if(s2%5==3)
    parac=50;

    else if(s2%5==4)
    parac=100;

    return parac;
    }


    Bunun sebebini bir türlü bulamadım, anlatırken açık olamadıysam kusura bakmayın. Şimdiden teşekkürler.







  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.