결과보고서과 목 명모터제어 및 실습프로젝트12월 1일 ~ 12월 19일시현11.12.19학 번200600828, 200702123이 름김차니, 윤광주실습 주제스텝모터와 DC모터, LED, 레고를 이용하여 잠수함 제작-설계 목표수업시간에 배운 스텝 모터, DC모터, LED, 레고모형을 이용하여 복합된 기능을 하는 잠수함을 만든다. 주축이 되는 위쪽에 큰 프로펠러는 DC모터로 돌리고, 뒤에 작은 프로펠러 세 개는 스텝모터를 이용하여 돌린다. 돌리는 잠수함 모형은 레고를 사용하여 제작하고, 프로펠러가 시계방향으로 돌때와 반시계 방향으로 돌때 각각 LED 불이 교대로 들어올 수 있도록 한다. 정지 시에는 모든 불이 켜지도록 프로그래밍 하여 설계한다. 이 설계 방법을 이용하여 수업시간에 배운 내용과 실습시간에 배운 내용을 모두 사용하여 확인하여 본다.주차설계 계획 내용12.1(1주차)스텝모터와 DC모터 모두 작동이 안 되는 것을 인지하여, 조교님께 부품을 새로 받고, 다시 보드에 납땜시작.12.8(2주차)다시 만들었으나 여전히 작동하지 않음. 부품이 없었기 때문에 기존에 만들었던 두 개의 보드에서 부품을 떼어내어서 새로 제작해 봄. (다음 주가 시험기간이라 두 번밖에 만나지 못하였음 → 시험기간 틈틈이 납땜을 하기로 함)12.15(3주차)세 번째 보드를 작성하였으나 작동하지 않아서 이상함을 느끼고 코드를 분석하기 시작, 코드를 고치니(회로 구성과 페럴러레포트 구성의 차이로 데이터 값을 다르게 인가) 작동하지만 스텝모터는 여전히 작동하지 않음12.19(월) 프로젝트 시현시험이 끝나자마자 금요일부터 레고를 이용해 잠수함 모형을 먼저 제작하고, 보드크기를 레고사이즈에 맞추어서 잘라내었다. 스텝모터가 돌아갈 것이라 생각하고 처음 설계 계획에서처럼 프로펠러를 큰 것과 작은 것 모두 제작하여 보드를 놔둘 공간까지 고려하여 제작했다. 하지만 이 과정에서도 스텝모터가 새로 납땜을 하였으나, 작동하지 않았고 디코더를 만들지 못해서 모터2개와 LED를 모두 한 번에 작동시키지 못했다.-설계 내용우리조의 경우 스텝 모터와 DC모터가 모두 작동되지 않았으므로 시험기간 전주와 시험기간에 스텝 모터부품을 조교님께 부탁하여 받고 새로 보드를 만들어 보았다. 하지만 새로 만들어도 스텝, DC 모두 작동하지 않았고, 부품이 없어서 기존에 만들었던 부품을 떼어내어 다시 만들었으나 여전히 작동하지 않았다. 스텝모터의 경우 회로에 문제가 있었지만 DC모터의 경우 회로가 아닌 코드에 문제가 있었다. 코드를 일부분 수정하니 작동하였다.(코드를 다른조의 것을 참고해서 작성하였는데 회로 구성과 페럴러레포트 구성의 차이로 데이터 값을 다르게 인가해야 했다.)[수정한 코드 내용]void CTest1Dlg::OnFast(){unsigned char data_dc[4] = {0x16, 0x16, 0x16,0x00};int i,j,k, count=0;while(count
케네디 대통령을 생각하면 암살사건을 보통 먼저 생각한다. 하지만 이 영화는 케네디 대통령의 리더십을 섬세하게 보여준 영화였다. 이 영화는 3차 대전이라는 인류공멸의 초유의 위기상황이었던 1962년 쿠바 미사일 사태를 소재로 유명한 존.F 케네디 대통령의 친구이자 특별보좌관이었던 케네스 오도넬이란 인물의 시각으로 인류운명을 걸고 미국과 소련이 벌이는 숨 막히는 힘겨루기와 워싱턴 정가 내부의 첨예한 갈등을 바로 옆에서 벌어지는 것처럼 상세히 그린 영화이다. 말 그대로 언제 세계 3차 대전이 벌어질지 모르는 긴박한 상황을 전쟁의 아닌 케네디 대통령의 리더십의 방향으로 시선을 잡아서 표현했다.사실 긴박한 위기상황에서는 어떤 결정을 하던지 간에 리더의 결정이 아주 중요하다. 리더는 당황하는 모습을 보여서도 사태를 정확히 인지하지 못하고 있어서도 안 된다고 생각한다. 그런 점에서 케네디 대통령은 아주 적절했다. 자신만의 주관이 있었고, 신념이 있었다. 그리고 그 신념을 밀어붙이는 추진력도 갖추고 있었다. 물론 자신의 신념을 밀어붙이는 과정에도 사람과 사람관계에서는 분명 나와 생각이 다른 사람이 있기 마련이다. 훌륭한 리더는 이런 사람들까지도 포용하고 적절하게 이용할 수 있어야 한다. 세상에 나와 똑같은 사람이 없듯 나와 완전히 같은 의견을 가진 사람은 없다. 따라서 다양한 사람들의 의견을 수렴해서 이해시키고, 관철시키는 것이 중요하다. 사실 영화에서 보여 지는 쿠바 미사일 사태의 상황에서 케네디 대통령과 생각이 비슷한 사람은 많지 않았다. 대부분이 쿠바폭격을 주창하는 군대 강경성향의 장군들이였고, 오랫동안 대 소련 정책을 담당해왔던 관료들도 자신과 뜻이 달랐다. 하지만 자신의 생각이 옳다는 확신을 가졌고, 자신의 생각을 속속들이 아는 핵심참모진을 동원하여 자신의 뜻대로 상황을 통제하려 했다.그리고 자신과 생각이 맞지 않는 사람들도 내치는 것이 아니라 각자의 위치를 주어서 적절히 능력을 사용할 줄 아는 포용했다. 공군참모총장이 자신의 판단으로 경계령 상승을 임의로 한 장군에 대해 화를 내며 케니가 공군참모총장을 퇴임시키자고 할 때에도 케네디는 극단적인 선택을 하지 않는다. 오히려 이런 언급에 대해서는 말을 아끼고 다른 각도로 바라보려 했다. 사실 자신과 뜻이 다르다고 해서 틀린 것이 아니라 이런 사람들이 오히려 더 도움이 되는 경우도 많다. 자신의 뜻을 정확히 말 할 수 있는 사람 또한 자신만의 뚜렷한 신념이 있는 사람이고, 용기가 있는 사람이다. 즉 조직에서 유용한 사람일 가능성이 크다. 그리고 실제로 그렇지 않다고 해도 위기의 상황에서 내편, 네 편의 편 가르기 만큼 무모한 행동도 없다. 이런 상황에서는 리더는 모두의 뜻을 한데 모아야만 한다. 또한 케네디 대통령은 위기의 상황에서 새로운 돌파구를 제시하는 혁명적인 리더이기도 했다. 터키 기지 철수란 방법을 통해 평화적으로 자신만의 방법으로 소련도 같이 철수를 하길 유도하는 정책을 편다. 물론 케네디 대통령의 시기에는 냉전시대라 케네디의 선택이 무모할 수도 있었다. 하지만 케네디는 배짱이 있었고, 언제나 자신과 뜻을 함께할 사람도 있었다. 어쩌면 케네디 대통령의 추진력도 주변에 이런 사람이 있었기에 가능했을 지도 모른다. 마지막으로 케네디 대통령은 커뮤니케이션에서 탁월한 능력을 보여주었다. 사람과 사람 사이의 관계에서도 언어, 제스처가 중요하다. 잘못 오해될 소지가 있고, 비슷한 의미의 단어를 조금만 바꿔서 써도 전혀 다른 결과를 불러일으키기도 한다. 가까운 현재일로 예를 들면, 잡스의 죽음에 대해 최대의 IT 라이벌이자 현재 저작권 소송에 휘말리고 있는 삼성이 잡스의 죽음에 대해 아무 말을 언급하지 않는 것과 같은 이치이다. 말이란 사람과 사람이 서로를 완전히 이해할 수 없는 단점을 극복하기 위한 수단이지만 결국은 수단이기에 완전히 나의 뜻을 상대에게 전달할 수는 없다. 따라서 이런 상황에서 삼성측의 대처방법은 가장 현명한 대처법일지도 모른다. 국가 간 사이에서는 더 말할 필요가 없다. 이런 점을 케네디는 충분히 인지하고 있었다. 군내 대응 규범에 따른 실탄도 아닌 공포탄에 대해서도 신중하게 생각하도 명령을 하였던 것을 보면 커뮤니케이션에 대한 케네디 대통령의 신중함을 엿볼 수 있다. 공포탄에 불과한 것이라 해도 그 행동이 상대국의 정책가들에게는 수 백 가지 의미를 전달할 수 있다는 것을 간과하지 않았다.그리고 케네디는 평소 엄청난 연습을 통해서 자신의 이미지 메이킹한 사람이기에 위기의 순간에도 이런 면모를 보일 수 있다고 생각한다. 닉슨과 토론을 할때에도 케네디는 스튜디어에 도착해 자신에게 알맞은 조명, 세트, 세부사항을 인식했고 흰 셔츠가 요란해 보여서 푸른셔츠로 갈아입기도 하였으며, 카메라로부터 눈을 떼지 않고 시청자를 똑바로 응시하는 면모를 보여주기도 했다. 자신의 장점인 외적인 부분을 최대한 살릴려고 했으며 실제로 케네디는 언론을 잘 이용한 잘 생긴 대통령이기도 했다고 한다.즉, 케네디를 통해서 살펴볼 수 있는 리더의 면모는 크게 여섯 가지로 나타낼 수 있다.첫째, 자신만의 주관이 있었고, 신념이 있었다. 그리고 그 신념을 밀어붙이는 추진력도 갖추고 있었다.둘째, 자신과 생각이 다른 사람들 까지도 포용하고 적절하게 이용할 수 있었다.셋째, 새로운 돌파구를 제시하는 혁명적인 리더였다.넷째, 위기의 상황에서도 배짱이 있었다.다섯째, 커뮤니케이션에서 탁월한 능력이 있었다.여섯째, 엄청난 연습을 통해서 자신의 이미지 메이킹하여 자신의 장점을 최대한 살렸다.현재 사회에선 구성원 모두가 리더가 되고, 주인의식을 갖는 슈퍼리더십을 원한다. 이미 훌륭한 리더들이 과거에 많았기에 롤 모델로 삼고 따라할 사람도 많다. 또한 현재사회에서 처럼 넘치는 정보를 소화하기에 이젠 리더한명으로는 역부족이다. 모두가 공유가치를 가지고 자발적으로 상황에 임할 수 있어야 인정받고 성공할 수 있다.하지만 이런 리더십은 하루아침에 생기지 않는다. 정말 훌륭했다고 인정받는 리더들 이 시대의 CEO들 스티븐 잡스, 빌게이츠, 이건희 회장 그리고 이 영화에서 다룬 케네디 대통령도 모두들 인간적인 면모를 갖추고 있었고, 사회 구조속에선 작은 인간이였다. 하지만 이들은 이 상황에 굴하지 않고 끊임없이 자신을 갈고 닦았다. 끊임없는 훈련의 결과라고 할 수 있다. 이런 훈련의 반복은 적절한 시기에 적절하게 발휘될 수 밖에 없다. 그리고 이런 리더 주위에 사람이 모일 수밖에 없는 것이다. 세상을 이끌어가는 사람은 1%다. 이 1%안에 들기 위해서 리더가 되어야 하는 것은 필수불가결의 조건이다. 이 영화를 제대로 보았다면, 리더가 되기 위해 우리도 스스로 다듬을 연습이 필요한 시점이다.사람과 사람 사이의 관계에서도 그렇지만 국가 간의 관계에서는 더욱 상대의 언어, 제스처 등을 해석하는 일이 보다 복잡하고 또 그만큼 중요해진다. 일국의 대통령이 공식석상에서 연설을 할 때 선택한 단어 하나하나를 두고 각 언론사들은 그 말의 의미를 해석하기에 바쁘고 비슷한 의미의 단어를 조금만 바꿔서 써도 그 차이 속에서 정책의 변화를 예견한다. 말 한마디가 그러할진대 실제 나타나는 행동의 중요성은 따로 말할 필요도 없다. 비록 군내의 대응 규범에 따른 공포탄이었을 지라도 그 행동이 상대국의 정책가들에게 수가지 의미를 전달 할 수 있기에 위기상황에서는 국가 원수의 총괄이 필요하게 되는 것이다.뒤집어서 생각해보면, 많은 정책가들의 다양한 사태 인식 속에서 가장 합리적이라고 생각되는 정책을 찾아내고 이를 반대하는 세력들까지 포섭하여 하나의 정책으로 수렴해내는 과정을 성공적으로 수행해 내는 것이 국가 원수에게 맡겨진 임무가 된다. 이 때 국가원수가 적절한 정책 결정에 실패를 한다든지, 적절한 판단을 내렸음에도 의견 수렴에 실패하여 잘못된 방향으로 끌려갈 경우 위기는 해결되지 못하고 파국으로 치닫는다. 바로 이러한 상황에서 케네디 대통령은 결과적으로 성공한 적절한 판단을 내렸고 군부의 강력한 반발을 비교적 잘 포섭했다.첫째, 그는 믿을 수 있는 보좌관들을 바탕으로 숱한 반대파의 압박을 견뎌내고 자신이 옳다고 믿는 신념대로 정책을 수행해 나갈 수 있는 정치적 파워와 의지가 있었다. 영화속에서 케네디는 쿠바폭격을 주창하는 군내 강경성향의 장군들의 압박을 맞서 자신의 생각을 속속들이 아는 핵심참모진을 동원하여 자신의 뜻대로 상황을 통제하는데 성공한다. 이런 능력은 정치인으로서 지도자로서 위기상황에 처 했을때 이를 극복해낼 수 있는 커다란 자산이다.
#include #include typedef struct node_elm* node;struct node_elm {int item;node next;};typedef struct list_queue* listq;struct list_queue {node head, tail;int size;};listq queueInit(void){listq Q = (listq) malloc( sizeof(struct list_queue) ); //Q리스트의 공간을 할당해준다.Q->head = Q->tail = NULL; //Q리스트안에 head와 tail의 값을 NULL로 초기화 시켜준다.Q->size = 0; //Q리스트의 공간크기를 0으로 초기화 시켜준다.return Q;//리스트를 리턴한다.}node insertAtHead(node head, int item){node new_node = (node)malloc( sizeof(struct node_elm)); //노드를 추가하기 위해 새로운 노드의 공간을 할당해준다.new_node->item = item; //새로운 노드에 item의 값을 넣어준다.new_node->next=head; //새로운 노드를 Q리스트의 head앞에 넣어준다.//Q->size++; //노드가 추가되었으므로 Q리스트의 사이즈를 증가시켜준다.return new_node;}void enqueue(listq Q,int item) //인큐의 경우 삽입과정이므로 추가하는 함수인 insertHead함수에서 값을 받아 Q리스트의 head에 넣어준다.{Q->head = insertAtHead(Q->head, item); //삽입과정//return Q->head->item; //값을 넣어주고 head를 리턴해 준다. insertHead에서 new_node가 head앞에 들어가므로 인큐된 값이 Q리스트안에 추가되어있게 된다.//그래서 head를 리턴하면 추가된 값까지 포함된 리스트가 리턴된다.}node deleteFromTail(node head, int *item){node tail, tmp = NULL;if (head == NULL){ //리스트에 아무것도 없으면 리스트가 비었다는 문장을 출력시켜준다.printf("List is empty.n");return NULL;}for (tail=head; tail->next != NULL; tail=tail->next) //리스트의 처음부터 끝까지 돌린다는 의미이다.//Q리스트의 head를 tail에 넣고,tail의 next가 NULL이 아니면(즉 값이 들어있으면), tail의 next를 tail에 넣음으로 하나씩 노드가 줄어들게 된다.tmp=tail;if (tmp!=NULL) tmp->next=NULL;*item=tail->item; //tail의 item값을 item에 넣어줌으로써 tail안에 값을 비워준다.free(tail); //tail의 공간을 해방시켜준다.(지워준다.)if(head ==tail) //Q의 head가 tail과 같아지면 결국 리스트의 값이 없는 것이다(초기화된 상태) 따라서 NULL을 리턴해준다.return NULL;else return head; //만약 그렇지 않으면 head값을 리턴해줘서 다시 값이 끝날때까지 반복문을 돌려준다.}int dequeue(listq Q) //디큐의 경우 값을 빼는 것이므로 deleteFromTail을 이용하여 구현한다.{node temp = (node)malloc(sizeof(struct node_elm));int a = Q->head->item;temp=deleteFromTail(Q->head,&a);if(temp==NULL) ////스텍포인터에서 -1의 의미는 아무것도 없는 상태이므로(비어있음을 의미){printf("nQueue 가 비어있습니다.n");}return a;//비어있지 않으면 deleteFromTail에서 지우고 난 다음의 리스트를 보여준다.}void printList(listq Q){node v = Q->head;while(v != NULL){ //head가 비어있지 않으면printf(" %d --> ", v->item); //head의 주소값에 들어있는item 을 출력한다.//(출력후 밑에 줄에서 v값을 다시 정해줌으로써 출력된 값은 하나씩 지운다.v = v->next; //v=NULL 될때까지}printf("NULLn");}void main(){int menu=0,temp;listq Q;node head = NULL;Q = queueInit();while(1)//이 부분은 전에 과제와 동일하다. 1.인큐 2.디큐 3.프린트 4.종료 로 menu를 어떤걸 선택하냐에 따라 다른 명령을 구현시켰다.(조건문을 이용)