#include <Wire.h>
#include <BMP180.h>
BMP180 barometer;
int indicatorLed = 13;
float seaLevelPressure = 101325;
void setup()
{
Serial.begin(9600);
Wire.begin();
pinMode(indicatorLed, OUTPUT);
barometer = BMP180();
if(barometer.EnsureConnected())
{
Serial.println("Connected to BMP180.");
digitalWrite(indicatorLed, HIGH);
barometer.SoftReset();
barometer.Initialize();
}
else
{
Serial.println("No sensor found.");
digitalWrite(indicatorLed, LOW);
}
}
void loop()
{
if(barometer.IsConnected)
{
long currentPressure = barometer.GetPressure();
Serial.print("Pressure: ");
Serial.print(currentPressure);
Serial.print(" Pa");
float altitude = barometer.GetAltitude(seaLevelPressure);
Serial.print("\tAltitude: ");
Serial.print(altitude);
Serial.print(" m");
float currentTemperature = barometer.GetTemperature();
Serial.print("\tTemperature: ");
Serial.print(currentTemperature);
Serial.write(176);
Serial.println("C");
delay(1000);
}
}
Merhaba, Kolay gelsin arkadaşlar
Yukarıdaki Arduino BMP180 basınç sensörün kodları var.
Ben basınç değerini LCD ekrana yazdırıyorum. LCD ekranın kordinatlarını tek tek belirleyip yazıyorum. "Basınç:" + Pressure + "Pa"
Şimdi buradaki Pressure değeri çok yüksek olursa değer Pa'nın üzerine biniyor.
Bu yüzden bende stringle bunları birleştirmek istiyorum.
3-4 kere Serial.print kullanak yerine bir tane kullamak istiyorum. (Siz serial.printte gösterin LCD'ye uyarlarım ben.)
Serial.print(yazdir); dediğimde Serial Monitörde böyle yazmasını istiyorum. BASINC: 100000 Pa
Nasıl yapabiliriz?
char buffer[50];
sprintf(buffer, "sayi1: %d, sayi2=%d", veri1,veri2);
Serial.println(buffer);
//%d değilde %02d yazarsanız sadece 2 hanelik kısmı yazar, diğerlerini kale almaz.
Teşekkür edirim Gökhan Abi.
Alttaki kodu denemek amaçlı yazdım çalıştı.
Neden buffer[50]; ? 49 olsa ne olur?
Birde sayıya nokta yokmak istiyorum. 100000 ise 100.000 - 1000 ise 1.000 gibi. Bunu nasıl yapabiliriz?
unsigned int i = 0;
unsigned int y = 5;
void setup(){
Serial.begin(9600);
}
void loop(){
char buffer[50];
sprintf(buffer, "1.SAYI=%d 2.SAYI=%d", i++, y++);
Serial.println(buffer);
delay(5);
}
Alıntı yapılan: veliusta - 14 Mayıs 2015, 21:52:46
Neden buffer[50]; ? 49 olsa ne olur?
Eğer dizinin içine ekleyeceğin karakter sayısı, dizinin boyutundan fazla ise, sınırı geçip, ram'deki başka işler için ayrılmış yerin üzerine yazar.
C dili düşük seviyeli bir dildir, kullanıcı ile işlemci arasında ara katman yok, sen yanlış birşey de yazsan dediğini yapar ve programın yanlış çalışmasını sağlar.
Alıntı yapılan: veliusta - 14 Mayıs 2015, 21:52:46
Birde sayıya nokta yokmak istiyorum. 100000 ise 100.000 - 1000 ise 1.000 gibi. Bunu nasıl yapabiliriz?
Basamaklara ayırmak için şu sayfayı inceleyebilirsin:
http://stackoverflow.com/questions/1449805/how-to-format-a-number-from-1123456789-to-1-123-456-789-in-c (http://stackoverflow.com/questions/1449805/how-to-format-a-number-from-1123456789-to-1-123-456-789-in-c)