[์๋์ด๋ ธ] ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํด๋์ค / ํต์
[์๋์ด๋ ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ]
- 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;
}
}
}
}