์‚ฌ๋ฌผ์ธํ„ฐ๋„ท/์•„๋‘์ด๋…ธ

[์•„๋‘์ด๋…ธ] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ / ํด๋ž˜์Šค / ํ†ต์‹ 

ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ 2022. 4. 18. 01:08

[์•„๋‘์ด๋…ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ]

 - AVR ๋งˆ์ดํฌ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์˜ ํŠน์ • ๊ธฐ๋Šฅ, ํŠน์ • ์ฃผ๋ณ€์žฅ์น˜ ์ œ์–ด๋ฅผ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ตฌํ˜„

 - C++ ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑ

 - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ณ„๋„๋กœ UART ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์„ ์œ„ํ•œ Serial ํด๋ž˜์Šค์™€ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ String ํด๋ž˜์Šค ๊ธฐ๋ณธ ์ œ๊ณต

 

[Serial ํด๋ž˜์Šค]

 - UART ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์„ ์œ„ํ•œ ํด๋ž˜์Šค

 - ์‹ค์ œ ํด๋ž˜์Šค ์ด๋ฆ„์€ Serial_ ์ด๋ฉฐ, ๊ฐ์ฒด๊ฐ€ Serial์ž„.

 - Serial_ ํด๋ž˜์Šค๋กœ ๊ฐ์ฒด ์ƒ์„ฑ ์‚ฌ์šฉ์˜ ๊ฒฝ์šฐ๋Š” ์—†์Œ

 - ์šฐ๋…ธ๋Š” ํ•˜๋‚˜์˜ UART ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ํฌํŠธ๋งŒ์„ ์ œ๊ณต

 - Serial ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ์Šค์ผ€์น˜ ์—…๋กœ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ๋™์ผํ•œ ์ฑ„๋„์„ ํ†ตํ•ด PC์™€ UART ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ์ˆ˜ํ–‰

 

[String ํด๋ž˜์Šค]

 - ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ํด๋ž˜์Šค

 - ๋ฌธ์ž์—ด ๋ฐฐ์—ด์— ๋น„ํ•ด ์†์‰ฌ์šด String ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

 - ๋ฌธ์ž์—ด ๋ฐฐ์—ด์— ๋น„ํ•ด ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋ชจ

 

[UART ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ]

 - RS-232C์—์„œ ์ •์˜๋œ RX, TX, GND ํ•€์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ 

 - UART ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์€ ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์˜ ํ•œ ์ข…๋ฅ˜์ด์ง€๋งŒ ํ”ํžˆ UART ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์„ == ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์ด๋ผ๊ณ  ํ•จ

 - RX์™€ TX๋Š” ์„œ๋กœ ๊ต์ฐจ๋˜์–ด ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•จ

 - uC์˜ ๋™์ž‘ ์ „์••์„ ๊ธฐ์ค€์œผ๋กœ ํ†ต์‹  : TTL ๋ ˆ๋ฒจ ์‚ฌ์šฉ

 - ์•„๋‘์ด๋…ธ ๋ณด๋“œ์™€ ์ปดํ“จํ„ฐ์˜ ํ†ต์‹ ์€ USB๋กœ ์ด๋ฃจ์–ด์ง

 

์ฑ„๋„ ์—ฐ๊ฒฐ ํ•€ ํ•ด๋‹น ๊ฐ์ฒด
0 0(RX), 1(TX) Serial
1 19(RX), 18(TX) Serial1
2 17(RX), 16(TX) Serial2
3 15(RX), 14(TX) Serial3

 

 

// write ํด๋ž˜์Šค์™€ print ํด๋ž˜์Šค 
// print(value, format) : format ํ˜•์‹ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
// write(unit8_t ch) : ์ถœ๋ ฅํ•  ๋ฐ”์ดํŠธ ๋‹จ์œ„ ๋ฐ์ดํ„ฐ ch ์ถœ๋ ฅ

void setup()
{
  Serial.begin(9600);
  
  byte data = 65;
  Serial.println();
  Serial.print("With print : ");
  Serial.println(data);  // 65 
  
  Serial.print("With write : ");
  Serial.write(data); // A
  Serial.println();
  
  Serial.print("data(BIN) : ");
  Serial.println(data, BIN); // 100 0001
  
  Serial.print("data(DEC) : ");
  Serial.println(data, DEC); // 65 (DEC๋Š” default๋ผ ์ƒ๋žต ๊ฐ€๋Šฅ)
  
  Serial.print("data(HEX) : ");
  Serial.println(data, HEX); // 41

}

void loop()
{
}

 

// ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์„ ํ†ตํ•ด test ์ „๋‹ฌ
// available ํด๋ž˜์Šค : ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ์ˆ˜์‹  ๋ฒ„ํผ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ๋ฐ”์ดํŠธ ์ˆ˜ ๋ฐ˜ํ™˜

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

void loop()
{
  // ์‹œ๋ฆฌ์–ผ ๋ชจ๋‹ˆํ„ฐ์— ์ž…๋ ฅ๊ฐ’์ด ๋“ค์–ด์˜ค๋Š” ๊ฒฝ์šฐ
  if(Serial.available() > 0){ 
  	byte data = Serial.read(); // ๋ฐ”์ดํŠธํ˜• ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ ์ €์žฅ
    
    Serial.print("Echo back : ");
    Serial.write(data);
    Serial.print(" (");
    Serial.print(data);
    Serial.println(")");
  }
}

// ์ถœ๋ ฅ ๊ฒฐ๊ณผ
Echo back : t (116)
Echo back : e (101)
Echo back : s (115)
Echo back : t (116)

 

[String ํด๋ž˜์Šค]

 - ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ์œ„ํ•œ ํด๋ž˜์Šค

 - C++ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ํด๋ž˜์Šค์™€ ์œ ์‚ฌ

 - ๋ฌธ์ž, ๋ฌธ์ž์—ด, ์ˆซ์ž ๋“ฑ์œผ๋กœ๋ถ€ํ„ฐ String ๊ฐ์ฒด ์ƒ์„ฑ ๊ฐ€๋Šฅ

 - String ๊ฐ์ฒด์™€ ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ ๊ฒฐํ•ฉ์œผ๋กœ ์ƒˆ๋กœ์šด String ๊ฐ์ฒด ์ƒ์„ฑ 

 

// String ํด๋ž˜์Šค ์˜ˆ์ œ

void setup()
{
  Serial.begin(9600);
  
  int a = 123;
  String b = "abc";
  
  Serial.println(a+b); // 123abc 
}

void loop()
{
}

 

// ๋ฌธ์ž์—ด ๋น„๊ต ๋ฐ ์ •๋ ฌ compareTO(string a, string b) ํ•จ์ˆ˜ 
// ์ˆซ์žํ˜• ๋น„๊ต : ํฌ๋‹ค(1), ๊ฐ™๋‹ค(0), ์ž‘๋‹ค(-1)
// ๋ฌธ์ž์—ด ๋น„๊ต : ๊ฐ™๋‹ค(0), a๊ฐ€ b๋ณด๋‹ค ์•ž์ผ ๊ฒฝ์šฐ(์Œ์ˆ˜), ๋ฐ˜๋Œ€ ์–‘์ˆ˜ ๋ฐ˜ํ™˜

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

void loop()
{
  String str = "abcd";
  
  // ์•ž์˜ ๋ฌธ์ž์—ด๊ณผ ๋’ค์˜ ๋ฌธ์ž์—ด ๋ฐ˜๋ณต ๋น„๊ต ํ›„ ์ •๋ ฌ
  for(int i=0; i<4; i++){
    for(int j=i+1; j<5; j++){
      int compare = str[i].compareTo(str[j]);
      // ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
      if(compare > 0 ){
        String temp = str[i];
        str[i] = str[j];
        str[j] = temp;
      }
    }
  }
  
}