String yerine ne kullanabilirim

Başlatan veliusta, 06 Şubat 2020, 22:07:42

veliusta

Selam picproje üyeleri,
Bir projem var fakat C dilinde bir kısımda takıldım. :du:

A - B - C - D - E
1
2
3
4
5
6
7

gibi satır ve sütün şeklinde test yapıyorum.
Yaklaşık 5 adet sütun x 20 adet satır der isek toplam : 100 adet farklı veri ediyor.

Test bittiğinde ekrandan görünmesi için string kullanıyorum fakat hepsi hatalı olunca string işe yaramıyor.
String'in verisi yetmiyor sanırım.

Her bir için bool değişkeni oluşturabilirim fakat çok yer kaplıyor.
Bu iş için doğru kullanım ne olmalıdır?

String yazi;       sayici++;

myBluetooth.print("A"); myBluetooth.print(sayici);  myBluetooth.print(": "); myBluetooth.print(intDeger);
if(intDeger<100){
yazi = yazi+sayici;  yazi=yazi + "  ";
}

.
.
.
sayici:0;
myBluetooth.print("B"); myBluetooth.print(sayici);  myBluetooth.print(": "); myBluetooth.print(intDeger);
if(intDeger<100){
yazi = yazi+sayici;  yazi=yazi + "  ";
}

myBluetooth.println(yazi);
yazi = ""; // Temizle Sil

Serial haberleşmeden aşağıdaki tablo gibi görmek istiyorum:
myBluetooth.println("HATALILAR: A3 A24 B1 B12 C13 D5 E20");

devrecii

#1
Bne sorunu tam olarak anlayamadım ama bi fikir vemesi açısından

Stringe koymana gerek yok tek tek gönder , verileri byte array da oluştur for döngüsünde parça parça gönder.

Eğer böyle olmuyorsa  bütün yazıları byte array içine koyup stringe çevirip gönder. Bunla ilgili fonksiyonlar var.

Eğer byte için de yer yoksa o zaman  bit bit  1011110 gibi hafızaya koy gönderirken shift  yapıp  bit kıyasla ve  yaptığın gibi parça paça gönder.


veliusta

#2
long randNumber;
int SAYAC;

void setup() {
  Serial.begin(9600);
}

void loop(){

for (int COUNTER = 0; COUNTER < 20; COUNTER++) {
  
  SAYAC++;
  Serial.print("A");
  Serial.print(SAYAC);
  Serial.print(": ");
  randNumber = random(1000);
  Serial.println(randNumber);

   if(randNumber<100){
      // BURAYA NE KOD GELECEK?  100'DEN KÜÇÜKLER HATALI, ÖRNEK A1 - A2 - A3 İŞARETLE
   }
}

  Serial.println("");
  SAYAC=0;

for (int COUNTER = 0; COUNTER < 20; COUNTER++) {
  
  SAYAC++;
  Serial.print("B");
  Serial.print(SAYAC);
  Serial.print(": ");
  randNumber = random(1000);
  Serial.println(randNumber);

   if(randNumber<100){
     // BURAYA NE KOD GELECEK?  100'DEN KÜÇÜKLER HATALI, ÖRNEK B1 - B2 - B3 İŞARETLE
   }
}

  Serial.println("");
  SAYAC=0;

for (int COUNTER = 0; COUNTER < 20; COUNTER++) {
  
  SAYAC++;
  Serial.print("C");
  Serial.print(SAYAC);
  Serial.print(": ");
  randNumber = random(1000);
  Serial.println(randNumber);

   if(randNumber<100){
     // BURAYA NE KOD GELECEK?  100'DEN KÜÇÜKLER HATALI, ÖRNEK C1 - C2 - C3 İŞARETLE
   }
}

  Serial.println("");
  SAYAC=0;
  
Serial.print("HATALILAR: ");    
// BURAYA NE KOD GELECEK? EN Sonunda  A1 A2 B9 C12 C18 C20 şeklinde görebilmek.
Serial.println("");

delay(1000);
}

Yapmak istediğim şu.

veliusta

long randNumber;
int SAYAC;


int A_BOLUMU[20] = {};
int B_BOLUMU[20] = {};
int C_BOLUMU[20] = {};
int D_BOLUMU[20] = {};
int E_BOLUMU[20] = {};

void setup() {
  Serial.begin(9600);

}

void loop(){

for (int COUNTER = 0; COUNTER < 20; COUNTER++) {
  
  SAYAC++;
  Serial.print("A");
  Serial.print(SAYAC);
  Serial.print(": ");
  randNumber = random(1000);
  Serial.println(randNumber);

   if(randNumber<100){
     A_BOLUMU[SAYAC] = SAYAC;
   }
}

  Serial.println("");
  SAYAC=0;

for (int COUNTER = 0; COUNTER < 20; COUNTER++) {
  
  SAYAC++;
  Serial.print("B");
  Serial.print(SAYAC);
  Serial.print(": ");
  randNumber = random(1000);
  Serial.println(randNumber);

   if(randNumber<100){
      B_BOLUMU[SAYAC] = SAYAC;
   }
}

  Serial.println("");
  SAYAC=0;

for (int COUNTER = 0; COUNTER < 20; COUNTER++) {
  
  SAYAC++;
  Serial.print("C");
  Serial.print(SAYAC);
  Serial.print(": ");
  randNumber = random(1000);
  Serial.println(randNumber);

   if(randNumber<100){
     C_BOLUMU[SAYAC] = SAYAC;
   }
}

  Serial.println("");
  SAYAC=0;
  
Serial.print("HATALILAR: ");   
 
for (int COUNTER = 0; COUNTER < 20; COUNTER++){
  if(A_BOLUMU[COUNTER] != 0){
Serial.print("A");
Serial.print(A_BOLUMU[COUNTER]);
Serial.print(" ");
}
}

for (int COUNTER = 0; COUNTER < 20; COUNTER++)  {
A_BOLUMU[COUNTER] = 0;  // HEPSİNİ SIFIRLA
}


for (int COUNTER = 0; COUNTER < 20; COUNTER++){
  if(B_BOLUMU[COUNTER] != 0){
Serial.print("B");
Serial.print(B_BOLUMU[COUNTER]);
Serial.print(" ");
}
}

for (int COUNTER = 0; COUNTER < 20; COUNTER++)  {
B_BOLUMU[COUNTER] = 0;  // HEPSİNİ SIFIRLA
}


for (int COUNTER = 0; COUNTER < 20; COUNTER++){
  if(C_BOLUMU[COUNTER] != 0){
Serial.print("C");
Serial.print(C_BOLUMU[COUNTER]);
Serial.print(" ");
}
}

for (int COUNTER = 0; COUNTER < 20; COUNTER++)  {
C_BOLUMU[COUNTER] = 0;  // HEPSİNİ SIFIRLA
}

Serial.println(" ");
Serial.println(" ");
delay(1000);
}

Şu şekil yaptım. İstediğim oldu. Ama doğrusu bu mu? Başka yöntem var mıdır?

mehmet

"Eratosten Kalburu" nu inceleyiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr