Pikir dan Rasa

cogito ergo sum

Bermain dengan array & printing [tinkering, Arduino]

leave a comment »

Lanjutan kedua tinkering dengan Arduino, array & serial printing:

CODE:

 

const int BAUDRATE = 9600;

const byte JUMKAR = 15;
const byte JUMKARwString = JUMKAR - 1;
char buffer[JUMKAR];
char buff1[] = {10,20,'g',3,'N',40,'ab','ba',5};

void setup(){
  Serial.begin(BAUDRATE);
  
  const byte ukuran_buff1 = ( sizeof(buff1)/sizeof(char) );
  Serial.print("Besar ukuran buff1: ");
  Serial.print(ukuran_buff1,DEC);
  Serial.print(" atau ");
  Serial.println((int)ukuran_buff1);
  Serial.println();
  
  
  Serial.print("Isi dari buff1: ");
  printBuff(buff1, ukuran_buff1);
  
  Serial.println();
  
}

void loop(){
  if(Serial.available() > 0){
    delay(200); //isi buffer
    
    
    if (cek_panjang_kar()){
      //Tampilkan masing-masing input
      /*
      const int serinput = Serial.read();    
      Serial.println(serinput,DEC);
      */
      
      byte index = 0;
      while(Serial.available()){
        buffer[index++] = Serial.read();
      }
      
      Serial.print("Print dengan printbuff: ");
      printBuff(buffer, JUMKAR);

      Serial.print("Print dengan Serial.println: ");
      Serial.println(buffer);
      
      Serial.print("Print dengan printbuffptr: ");
      printbuffptr(buffer);
      
      Serial.println();
      
      clearBuff(buffer, JUMKAR);
          
    }

  }
}

void printBuff(char *alamatarray, const byte buffsize){
  for(byte i=0; i < buffsize; i++){
    Serial.print(alamatarray[i],DEC);
    if((buffsize-i)>1){
      Serial.print(",");
    }
  }
  Serial.println();
}

const boolean cek_panjang_kar(){
  const byte jumlahkarnow = Serial.available();
  if (jumlahkarnow > JUMKARwString){
    Serial.println();
    Serial.println("Data yang anda masukkan terlalu besar");
    Serial.print("Jumlah karakter yang anda masukkan adalah: ");
    Serial.println((int)jumlahkarnow);
    Serial.print("Batas jumlah karakter adalah: ");
    Serial.println((int)JUMKARwString);
    Serial.println();
    Serial.flush();
    return 0;
  } else {
    return 1;
  }
}  

void clearBuff(char *alamatarrayclr, const byte buffsizeclr){
  for(byte i=0; i < buffsizeclr; i++){
    (alamatarrayclr[i]='\0'); // isi dengan "null character"
   }
}

void printbuffptr(char *data){
  //Serial.println();
  Serial.println(data);
  //Serial.println();
}

 
 

 

Hasil:


Besar ukuran buff1: 9 atau 9

Isi dari buff1: 10,20,103,3,78,40,98,97,5

Data yang anda masukkan terlalu besar
Jumlah karakter yang anda masukkan adalah: 27
Batas jumlah karakter adalah: 14

Print dengan printbuff: 49,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Print dengan Serial.println: 1
Print dengan printbuffptr: 1

Print dengan printbuff: 49,50,0,0,0,0,0,0,0,0,0,0,0,0,0
Print dengan Serial.println: 12
Print dengan printbuffptr: 12

Print dengan printbuff: 83,117,110,117,32,80,114,97,100,97,110,97,0,0,0
Print dengan Serial.println: Sunu Pradana
Print dengan printbuffptr: Sunu Pradana

 

 

Referensi:

http://www.arduino.cc/en/Reference/Array

http://arduino.cc/en/Serial/Println

http://arduino.cc/en/Reference/ASCIIchart


Written by sunupradana

January 1, 2012 at 10:45 pm

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: