Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: veliusta - 07 Şubat 2016, 01:19:34

Başlık: Char veya String birleştirme
Gönderen: veliusta - 07 Şubat 2016, 01:19:34




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"
Başlık: Ynt: Char veya String birleştirme
Gönderen: Gökhan BEKEN - 07 Şubat 2016, 01:31:28
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 (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.
Başlık: Ynt: Char veya String birleştirme
Gönderen: veliusta - 07 Şubat 2016, 01:50:10
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);
}
Başlık: Ynt: Char veya String birleştirme
Gönderen: Gökhan BEKEN - 07 Şubat 2016, 02:47:41
  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.