음...컴에서 프로그래밍 할 때는 펑펑 터뜨려도(런타임에러라던지그런거) 아무렇지 않은데

아무래도 회로는 내가 잘못하면 정말 문제가 생기니까 무섭당ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ


(페어차일드 사의 7408 칩.)


7408(AND)칩을 브레드보드에 꽂고, ARM칩을 다른 곳에 꼽아 전원을 제공해 준다.

7408칩에 있는 U자형 홈을 왼쪽으로 두었을 때, 아래부터 반시계방향으로 1~14번까지 핀이 존재한다.

여기서, 14번 핀이 VCC이며 7번 핀이 GND이다. 이는 칩이나 제조사마다 차이가 있을 수 있으므로 데이터시트에서 제대로 VCC와 GND를 먼저 찾도록 한다.


제일 먼저, 제대로 신호가 들어가는지 알아보기 위해 발광 다이오드의 +극을 Y1(굳이 Y1아니라도 상관없으며 아무 출력 핀)에 연결하고, -극을 GND에 연결해 준다.

단, 이 때 전자기 유도현상에 의해 원래 폐회로가 되어야 정상인 회로에 전류가 흐르는(유도전류)현상이 일어날 수 있다.

그러므로 어느정도 값이 되는 저항을 GND와 각각의 핀을 연결해 달아주어 오작동을 막게 하는 게 일반적이다.(이를 어스시킨다 하는 모양)

저항을 달지 않더라도 참일 경우의 전류와 유도전류의 차이가 있으므로 티는 난다.

전기가 들어오는지 확인했다면, 정논리인지 부논리인지 체크한다.( 주로 정논리가 많이 쓰인다. 헷갈릴 수 있으므로 정논리만 )



테스트.



1번핀(A1, IN) 2번핀(B1, IN) 전부 VCC 5v와 연결해 주었다.

그리고 3번 핀(Y1, OUT)과 발광 다이오드의 +극을 서로 연결해 주고, -극은 GND에 연결해 준다.

유도전류를 어느정도 막아주기 위해 IN을 담당하는 핀들에 저항을 달았으나, 안타깝게도 아무거나 집어서 끼웠기 때문에 그다지 도움은 되지 못하였다.

이후 테스트를 위해 똑같이 둘다 VCC와 연결하되, 한 핀에는 스위치를 달아주었다.

ㅠㅠ 그래도 자세히 아주 자세히 보면 스위치를 누를 때 마다 조금이나마 밝아짐을 알 수 있다.


-추가- 지금보니 저항을 잘못달아줬어



어정쩡한 밝기차이에 나도 모르게 진짜 깨알같다...라고 한듯

...

정리가 필요하다 싶어 이곳저곳에서 찾아서 정리해 보았습니다.~_~

구글에서 검색해 다른 분의 블로그에서 얻은 정보가 반, MSDN에서 얻은 정보가 반입니다.

다른 사람들도 이를 보고 도움을 얻었으면 좋겠네요.



♧콘솔 타이틀 변경


콘솔 창을 열면 보통 C:\Windows\system32\cmd.exe 등으로 타이틀 바에 적혀 있을 것입니다.

이를 변경하는 함수도 있다는 것을 아시나요!?


SetConsoleTitle( "문자열" );

(windows.h)


위의 함수로 사용할 수 있습니다. 다만 커맨드 창에서 실행시키면 뜨지 않고, 직접 실행시켜야 한다는 점.


이런 느낌~?



*

콘솔 내용을 지우는 함수와, 특정 커서로 이동하는 함수가 간혹 필요한 때가 있죠.

터보 씨 컴파일러에서는 clrscr() gotoxy()로 해당 기능이 제공되나,

ANSI C( 미국/국제표준 C )언어에는 포함되어 있지 않아 VC++ 컴파일러에서는 작동하지 않아요.

그 때문에 당황하신 분들도 적지 않을 것입니다.

이를 해결하기 위해선 이와 유사한 함수를 사용해야 겠지요 ㅋ_ㅋ

*



♧콘솔 화면 지우기


system( "cls" );

(stdlib.h) - VC++컴파일러에서는 stdlib.h를 인클루드 하지 않아도 컴파일은 됩니다.


이 함수는 커맨드 창의 화면에 띄워진 모든 내용을 날려버리는( 말 그대로 Clear Screen ) 기능인데요.

Win+R  cmd → cls 를 순서대로 입력하여 테스트해보면,

사실 DOS 커맨드 중 하나인 화면 지우기를 불러오는 것이라는 점을 알 수 있습니다.



♧콘솔 창 크기 조절하기


system( "mode con lines=행 수 cols=열 수" );


스크린 지우기와 같은 원리입니다. 커맨드 창에서 해당 내용을 입력하면 똑같이 적용되네요.

단 창 사이즈를 이렇게 지정하면, 직접 마우스로 끌어서 지정한 사이즈보다 크게 늘릴 수가 없습니다.



♧콘솔 글자 색 변경하기


배경과 글을 한번에 통째로 바꾸는 함수가 있고, 특정 부분의 글자색만 바꾸는 것도 있습니다.


system( "color 배경색글자색" );


이것도 익숙한 패턴이군요.ㅋㅋ 커맨드 창에서 color /?를 쳐보면 자세한 정보가 나오는데, 이를 참고하여 코딩해봅시다.



배경색을 옥색, 글자색을 연한 노랑색으로 바꾸면 이런 화면을 볼 수 있어요.

system( "color 3E" );



왜 민트색은 없을까?


단 이렇게 색을 변경하면 모든 내용이 한번에 바뀌고 마는군요.

특정 부분만 바꾸고 싶다면 다른 함수를 사용하는 게 좋겠죠?


SetConsoleTextAttribute( 출력 핸들, 글자 색 )

(windows.h)


window.h에 들은 함수는 대체로 핸들을 전달해주어야 합니다.

우린 콘솔을 이용하죠. 표준 출력 핸들을 전달합니다.


GetStdHandle( STD_OUTPUT_HANDLE )


위의 내용을 '출력 핸들' 부분에 넣고, 글자 색( 0~15 혹은 FOREGROUND_색 식으로 사용 )을 뒤에 넣어서 사용합니다.

글자 색 대신 배경색을 넣어 배경색을 바꾸는 것도 가능합니다.

색연필을 생각하시면 편한데요, 빨간 색을 내기 위해 빨간 색역필을 집는 동작을 했다고 생각하시길 바랍니다.

원래 색으로 돌리려면 예전 색의 색연필을 다시 꺼내야겠죠?


직접 돌려보았습니다.


for( i=0; i<=15; i++ )
{
    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), i );
    printf( "COLOR TESTING~\a\n" );



ㅎㅎㅎ



♧콘솔 특정 위치로 커서 이동하기


그리고 문제의 gotoxy()! 사실 이 함수를 사용하는 사람들의 대부분은 게임을 만들기 위해 사용할 것입니다.( 글쓴이도.. )

특정 라인과 칼럼에 커서를 이동시켜 글자를 띄울 수 있는 함수인데,

이 또한 ANSI C에서는 포함되어 있지 않아 특정 컴파일러에서만 작동한다는 단점을 갖고 있습니다.


SetConsoleCursorPosition( 출력 핸들, COORD타입의 포지션 정보 )

(windows.h)


windows.h에 들어있는 함수입니다... 얘는 단독으로 쓰기에는 좀 번거로워 함수를 거쳐 사용하는 게 일반적인 듯 하더군요.


http://flashcafe.org/programming_study/11986

위의 사이트에서 가져온 함수 예제.


 void gotoxy(int x, int y)
{
   COORD Pos = {x - 1, y - 1};

   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}


아까와 같이, 출력 핸들을 앞에 적고 위치를 뒤에 적습니다.



끝~?

+ Recent posts