Char veya String birleştirme

Başlatan veliusta, 07 Şubat 2016, 01:19:34

veliusta




void LcdWriteString(char *characters){
  while(*characters) LcdWriteCharacter(*characters++); 
}

void LcdWriteCharacter(char character){
  for(int i=0; i<5; i++) LcdWriteData(ASCII[character - 0x20][i]);   
  LcdWriteData(0x00); 
}

void LcdWriteData(byte dat){
  digitalWrite(DC, HIGH); //DC pin is low for commands
  digitalWrite(CE, LOW);
 shiftOut(DIN, CLK, MSBFIRST, dat); //transmit serial data
digitalWrite(CE, HIGH);
}

void LcdXY(int x, int y){
  LcdWriteCmd(0x80 | x);  // Column.   
  LcdWriteCmd(0x40 | y);  // Row. 
}

  char string[8];

void loop(){
  float voltage = analogRead(A0) * 5.0 / 1024;
  LcdXY (50,2);
  LcdWriteString(dtostrf(voltage,5,1,string));  // BURADAKİ 5 Sayısı ne işe yarıyor?
}


Şu şekilde nasıl yazdırabiliriz; "A0: 5.0V"

Gökhan BEKEN

dtostrf adlı fonksiyonun kodlarını yazmadığın için kesin bir şey söyleyemeyiz.
Ancak google'dan arattığımda şu sayfaya ulaştım: http://forum.arduino.cc/index.php?topic=85523.0
burda dediğine göre prototipi şöyle:
char * 	dtostrf (double __val, signed char __width, unsigned char __prec, char *__s)

Sonuç olarak double to string işi yaptığını anladım.
İlk parametreye double değişken türünden bir değişken veriyorsunuz,
ikinci parametre muhtemelen string'in kaç haneli olacağını belirtiyor,
son parametreye ise string'in tutulacağı dizi adresini veriyorsunuz.

Lütfen C dilini öğrenin.
Özel mesaj okumuyorum, lütfen göndermeyin.

veliusta

#2
dtostrf komutu şart mı?

Böyle denedim olmadı.

void loop(){
  float voltage = analogRead(A0) * 5.0 / 1024;
  char buffer[50];
  sprintf(buffer, "A0: %dV", voltage);
   LcdXY (50,2);
  LcdWriteString(buffer);
}


mesaj birleştirme:: 07 Şubat 2016, 02:05:13

Böyle denedim oldu fakat doğrusu nedir?

char string[8];
 
void loop(){

  float voltage = analogRead(A0) * 5.0 / 1024;
  char buffer[12];

  dtostrf(voltage,5,1,string);
  sprintf(buffer, "A0: %sV", string);
  LcdXY (1,2);
  LcdWriteString(buffer);
}

Gökhan BEKEN

  float voltage = analogRead(A0) * 5.0 / 1024;
  char buffer[50];
  sprintf(buffer, "A0: %dV", voltage);


Böyle olması normal, %d int türündeki değişkenler için kullanılır, siz float veya double türünü yazdırmak istediğinize göre %f kullanabilirsiniz mesela.
Özel mesaj okumuyorum, lütfen göndermeyin.