아두이노로만드는 4 족보행로봇

Size: px
Start display at page:

Download "아두이노로만드는 4 족보행로봇"

Transcription

1 아두이노로만드는 4 족보행로봇

2 목 차 Ⅰ. 아두이노및 C프로그래밍기초 아두이노소개 아두이노개발환경구축 C 프로그래밍기초 실습 #1 디지털출력 (LED제어) 실습 #2 - 디지털입력 ( 스위치입력 ) 실습 #3 디스플레이 (7세그먼트) 실습 #4 아날로그입력 ( 조이스틱모듈 ) 실습 #5 센서 실습 #6 통신 / 블루투스 실습 #7 모터 실습 #8 LCD 모듈 Ⅱ. 보행로봇시스템구현 보행로봇의개요 로봇기구해석 보행궤적생성 로봇시스템구현 Trot 보행구현프로그래밍 Trot 보행구현프로그래밍 ( 블루투스원격조종 )

3 1. 아두이노 (Arduino) 소개 이탈리아에서디자인수업의목적으로손쉽게사용할수있도록개발된 오픈소스형소형컴퓨터 Atmel 社의마이크로컨트롤러를기반으로구성 아두이노 (Arduino) = 마이크로컨트롤러보드 + 프로그램개발환경 + 인터넷공개포럼 공식포럼 :

4 아두이노 Mega 2560 Overview - Atmel 社의 ATmega2560 마이크로컨트롤러기반의아두이노보드 - 주요사양 마이크로컨트롤러동작전압입력전압 ( 허용 ) 입력전압 ( 한계 ) ATmega2560 5V 7-12V 6-20V 디지털 I/O 핀 54 개 (15 개는 PWM 출력기능 ) 아날로그입력핀 핀당 DC 전류 16 개 20 ma 3.3V 핀전류 50 ma Flash Memory 256 KB (8KB 는부트로더 ) SRAM EEPROM 클럭속도크기무게 8 KB 4 KB 16 MHZ (L) * 53.3(W) 37g - 2 -

5 2. 아두이노개발환경구축 통합개발환경 (Integration Development Environment) 이란? 마이크로컨트롤러시스템개발에필요한하드웨어연결및설정, 프로그래밍작성, 다운로드및디버깅등의작업을손쉽게할수있도록, 관련기능이통합되어있는소프트웨어개발도구또는환경. 통합개발환경소프트웨어설치? - 공식포럼 ( 에서 IDE 소프트웨어를다운로드

6 - 다운로드받은파일을실행하고, 프로그램설치를진행

7 보드연결및설정 - 아두이노메가보드를 PC 에연결 - 아두이노 IDE 실행 - 5 -

8 - 보드종류및포트설정 아두이노보드를다른 PC 에서연결해제한뒤다시연결할때포트번호나보드정보가 바뀔수있으므로, 프로그램컴파일이나보드업로딩이안뒬경우, 반드시확인해야함

9 기본프로그램작성및컴파일, 업로드 - 아두이노 IDE 실행후, 아래예제를입력함. // 아두이노처음시작하기 : 시리얼통신으로메시지받기 void setup() Serial.begin(9600); // 아두이노와통신시작 void loop() Serial.println("Hello Everyone!!"); delay(1000); // 메시지출력 // 1 초기다리기 - 컴파일 버튼클릭 업로드 버튼클릭 - 시리얼모니터 버튼클릭 출력결과확인 - 7 -

10 3. C 프로그래밍기초 C 언어는? 1972 년, 벨연구소 (Bell Lab.) 데니스리치가개발한프로그래밍언어로서, UNIX OS 를 운용하기위해사용되었다가점차적으로널리사용되어현재까지사용됨 C 언어의특징 - 문법이간결하고, 명백함 - 구조화가잘되어있어, 광범위한확장성을지님 - 하드웨어밀착제어가가능하면서도, 사용자편리성이우수함 C 언어학습의필요성 현재 ICT 기술의발전에힘입어, 컴퓨터프로그래밍기술이하드웨어에성능에대한제약을 거의받지않게되면서, 사용자편리성이우수한고급형프로그래밍언어 (Java, C#, Python, VB 등 ) 의사용이증대되고있다. 프로그래밍언어는적용되는시스템환경과상황에맞도록선택되어야하며, 특정 프로그래밍언어가가장좋다. 라는기준은없다. 현재기계공학분야에서주로다루는하드웨어및장비시스템은아직까지주로 C 프로그래밍을기반으로개발되어진다. C 언어는하드웨어성능이뛰어나지않은시스템으로부터고성능시스템에이르기까지적용될 수있도록, 컴파일러환경이다양하게구축되어있으며, 시스템의성능을최대한활용할수 있도록직관적인문법구조로이루어져있다. C 프로그래밍은타프로그래밍언어가갖는기본특성을모두담고있어, 프로그래밍습득에 필요한선수학습으로서매우가치가있는프로그래밍언어이다. 프로그래밍문법이란? 사람의언어와동일하게, 기본적인표현방법과규칙을명시한것. 컴퓨터는문법이 약간이라도틀리면, 동작이아예수행되지않으므로, 기본적인프로그래밍문법을이해하는 것이가장중요하다

11 데이터 : 상수, 변수 - 상수 : 프로그램이실행되기전에미리선언되어, 프로그램실행중값이바뀌지않는데이터 - 변수 : 프로그램이실행되기전데이터형을미리선언한후, 프로그램실행중필요에따라변할수있는데이터 ( 또는메모리공간 ) - 데이터형 : 변수저장되는데이터의종류 ( 정수, 실수, 문자등 ) 유형 크기 ( 바이트 ) 범위 int ~ unsigned int 2 0 ~ long ~ unsigned long float E+38 ~ E+38 double E+38 ~ E+38 boolean 1 true(1) 또는 False(0) char ~ 127 byte 1 0 ~ 255 데이터형별크기는아두이노기준임 연산자 : 데이터의처리를위해사용되는산술, 논리연산을수행하는기능을가진기호 유형 기호 산술연산자 +, -, *, /, %, ++, -- 대입연산자 =, +=, -=, *=, /=, %= 관계연산자 >, >=, <, <=, ==,!= 논리연산자 &&,,! 비트연산자 &,, ^, ~, <<, >> - 9 -

12 제어문 : 프로그램의실행흐름을조건에따라여러가지로나누거나바꾸는기능 유형형식사용예 if 문 if( 조건식 1) 수행문 1; else if( 조건식 2) 수행문 2; else 수행문 3; int x = 5; if(x >10) printf( x 는 10 보다크다 ); else if(x >= 5) printf( x 는 5 보다크거나같다 ); else printf( x 는 5 보다작다 ); for 문 for( 초기값 ; 조건식 ; 증감치 ) 반복수행문 ; for(int n=1 ; n<=10 ; n++) // 1 부터 10 숫자출력 printf( %d, n); while 문 while( 반복조건식 ) 수행문 ; int n=1; while(n <= 10) // 1 부터 10 숫자출력 printf( %d, n); n++; 기타 break, continue, return, do ~ while switch ~ case goto - 함수 (Function) : 프로그램에서반복수행되는부분 ( 또는기능 ) 을별도의기능으로묶어둔것 포인터 (Pointer) : 데이터또는함수가실행되는메모리주소값 (Memory Address) 배열 (Array) : 동일한형태의변수또는데이터를한꺼번에지정한것 구조체 (Structure) : 서로다른데이터형을하나의개념체로묶어서다루는것

13 C 프로그래밍기본예제 - 홀 / 짝수판별 // 변수에저장된숫자가짝수인지홀수인지판단 ( 변수와상수, if 문 ) int number = 1; int result = 0; void setup() Serial.begin(9600); // 아두이노와통신시작 void loop() result = number % 2; // number 를 2 로나눈나머지를 result 에저장 (0 또는 1) if(result == 0) Serial.println("EVEN"); else Serial.println("ODD"); while(1); // 나머지가 0 이면짝수 // 나머지가 1 이면홀수 - 숫자카운트 // 숫자카운트하기 (for 문 ) void setup() Serial.begin(9600); void loop() for(int n=0 ; n<=10 ; n++) Serial.print("Number : "); Serial.println(n); delay(1000); while(1); // 메시지출력 // 숫자출력

14 4. 실습 #1 디지털출력 (LED 제어 ) LED 1 개 On/Off 제어 - LED 회로연결 - 아두이노프로그램작성 // LED Blink 기본예제 void setup() // 13번핀출력초기화 pinmode(13, OUTPUT); void loop() digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); // LED 켜기 // 1초기다리기 // LED 끄기 // 1초기다리기

15 LED 8 개 On/Off 제어 - LED 회로연결 - 아두이노프로그램작성 // LED 순차적으로켜고끄기 void setup() // 출력핀초기화 for(int pin=6 ; pin <= 13 ; pin++) pinmode(pin, OUTPUT); void loop() for(int pin=6 ; pin <= 13 ; pin++) digitalwrite(pin, HIGH); delay(500); digitalwrite(pin, LOW);

16 5. 실습 #2 디지털입력 ( 스위치입력 ) 스위치 1 개연결 - 스위치회로연결 ( 실습 #1 에추가연결 ) - 아두이노프로그램작성 // 버튼입력할때 LED 켜지기 int buttonpin = 5; int ledpin = 13; int buttonstate = 0; // 입력핀번호 // 출력핀번호 // 버튼상태저장 void setup() pinmode(ledpin, OUTPUT); // 출력핀 pinmode(buttonpin, INPUT); // 입력핀모드 void loop() buttonstate = digitalread(buttonpin); // 버튼입력 // 버튼상태확인 if(buttonstate == LOW) digitalwrite(ledpin, HIGH); else digitalwrite(ledpin, LOW); // LED ON // LED OFF

17 QUEST 1. 실습 #2 의회로를이용해서, LED 동작을여러가지로바꿔보시오. 2. 실습 #2 의회로를이용해서, 스위치를누를때마다 LED 점등위치가바뀌도록 프로그램을작성해보시오

18 6. 실습 #3 디스플레이 (7 세그먼트 ) 7 세그먼트 (FND Flexible Numerical Display) 란? - LED 를점등을이용해서숫자 (0 ~ F) 및간단한기호를표현할수있는디스플레이장치 - 공통단자의극성에따라서캐소드 (K) 형또는에노드 (A) 형으로구분됨

19 7 세그먼트 1 개연결 - 7 세그먼트회로연결 7 세그먼트의 a~h 단자를디지털핀 6~13 에순서대로연결 - 아두이노프로그램작성 // for 문을이용한 FND 출력예제 int ledpin[8] = 6, 7, 8, 9, 10, 11, 12, 13; byte numtable[10] = B , // 0 B , // 1 B , // 2 B , // 3 B , // 4 B , // 5 B , // 6 B , // 7 B , // 8 B // 9 ; boolean segment = false; 다음장에계속

20 void setup() for(int i=0 ; i < 8 ; i++) pinmode(ledpin[i], OUTPUT); void loop() // 숫자증가 : 0 ~ 9 for(int Num=0 ; Num<=9 ; Num++) // 해당숫자를 FND에표시 for(int i=0 ; i<8 ; i++) // 해당비트를추출 segment = ( ( B << i ) & numtable[num] ) >> i; digitalwrite(ledpin[i], segment); delay(1000); QUEST 1. 실습 #3 의회로를이용해서, 7 세그먼트의동작을바꿔보시오. 2. 실습 #3 을기초로, 여러개의 7 세그먼트를연결해서, 다양한숫자값을표현하시 오

21 7. 실습 #4 아날로그입력 ( 조이스틱모듈 ) 아두이노보드아날로그입력단자및사양 아두이노보드아날로그출력단자및사양 PWM(Pulse Width Modulation, 펄스폭변조 ) 이란? - 빠르게 ON/OFF 되는신호의 ON 시간의비율 (Duty Ratio) 를조정하여, 아날로그출력과유사한출력효과를만드는것

22 아날로그조이스틱입력 - 조이스틱모듈연결 - 아두이노프로그램작성 // 아날로그입력값을전압으로표현하기 void setup() Serial.begin(9600); // 시리얼모니터초기화 void loop() int sensorvalue = analogread(a0); long voltage = map(sensorvalue, 0, 1023, 0, 500); Serial.print("Digital :"); Serial.print(sensorValue); Serial.print(" Voltage :"); Serial.println((float)voltage/100); // 아날로그 A0 입력받기 // 디지털값출력 // 전압값출력 delay(500); // 시간딜레이 0.5 초 - 프로그램업로드 시리얼모니터실행 조이스틱모듈조작, 값변화확인

23 8. 실습 #5 센서 조도센서 - 센서결선 - 아두이노프로그램작성 // CDS 센서와 LED int ledpin = 13; int sensorpin = 0; void setup() pinmode(ledpin, OUTPUT); void loop() int sensor = analogread(sensorpin); digitalwrite(ledpin, HIGH); delay(sensor); digitalwrite(ledpin, LOW); delay(sensor);

24 온습도센서모듈 - 센서결선 - 아두이노프로그램작성 #include <DHT.h> DHT dht(2, DHT11); // 온습도센서모듈설정 void setup() Serial.begin(9600); Serial.println("DHT11 measure start"); dht.begin(); // 온습도센서모듈시작 void loop() float humivalue = dht.readhumidity(); float tempvalue = dht.readtemperature(); if( isnan(humivalue) isnan(tempvalue) ) Serial.println("Failed"); return; Serial.print("Humidity:"); Serial.print(humiValue); Serial.println("%RH"); Serial.print("Temperature:"); Serial.print(tempValue); Serial.println("C"); Serial.println(); delay(2000);

25 9. 실습 #6 통신 / 블루투스 블루투스모듈 (HC-06) 결선 블루투스모듈 (HC-06) 설정 - 아두이노프로그램작성 #include <SoftwareSerial.h> SoftwareSerial BT(12, 13); void setup() Serial.begin(9600); BT.begin(9600); void loop() if (BT.available()) Serial.write(BT.read()); if (Serial.available()) BT.write(Serial.read());

26 - 블루투스이름, PIN 설정

27 - 25 -

28 - 26 -

29 - 27 -

30 블루투스로원격 LED 오 / 오프제어 - 아두이노프로그램작성 #include <SoftwareSerial.h> int ledpin = 13; SoftwareSerial BT(2, 3); void setup() BT.begin(9600); pinmode(ledpin, OUTPUT); void loop() if(bt.available()) char a = (char)bt.read(); if(a == '1') digitalwrite(ledpin, HIGH); else if(a == '0') digitalwrite(ledpin, LOW); - 원격조정테스트 ( 채팅앱이용 )

31 - 원격조정테스트 ( 컨트롤러앱이용 )

32 10. 실습 #7 모터 서보모터란? 모터와모터의위치측정센서, 주변제어부를포함하여모터의위치, 속도를제어할수있도록구 성된제어시스템을서보제어시스템이라고하며, 이때사용되는모터를통상, 서보모터라고칭한다. 서보모터구동 - 모터결선 ( 실습 #4 에추가연결 ) - 아두이노프로그램작성 #include <Servo.h> Servo myservo; void setup() myservo.attach(12); myservo.write(0); delay(1000); void loop() int sensorvalue = analogread(a0); int angle = map(sensorvalue, 0, 1023, 0, 180); myservo.write(angle); delay(50);

33 11. 실습 #8 LCD 모듈 LCD ( Liquid Crystal Display) - 디지털기기의기본적인디스플레이장치로널리사용됨 - 지정된문자 ( 숫자 ) 만표시할수있는텍스트 LCD와문자및그림출력이가능한그래픽 LCD로구분됨. LCD 구동 - LCD 결선 (I2C 통신방식 ) - 아두이노프로그램작성 #include <Wire.h> #include <LiquidCrystal_I2C.h> // I2C 통신용 // LCD 제어용 LiquidCrystal_I2C lcd(0x3f, 16, 2); // LCD 초기세팅 (0x3F) void setup() lcd.init(); lcd.backlight(); lcd.setcursor(0,1); Serial.begin(9600); // LCD 초기화 // LCD 백라이트 ON // LCD 커서위치 다음장에계속

34 void loop() // 시리얼통신으로전송된데이터가있으면데이터표시함. if (Serial.available()) delay(100); lcd.clear(); while (Serial.available() > 0) lcd.write(serial.read()); - 시리얼모니터입력창에메시지입력후 LCD 에표시되는지확인 Hello World! - LCD 글자명암조정 ( 글자가안보이거나, 화면이검게나오는경우 )

35 Ⅱ. 보행로봇시스템구현 1. 보행로봇의개요 보행로봇이란? - 인간이나동물의다리 ( 관절 ) 구조를지니면서이와유사한보행방법을모방한 이동방식을사용하는로봇시스템 보행로봇연구의배경및필요성 - 바퀴또는궤도형태의운송수단이접근할수없는지형에서의운송수단 - 다양한환경 ( 험지, 우주, 해저 ) 에서의활용

36 Ⅱ. 보행로봇시스템구현 4족보행로봇 - 4개의다리구조를지닌보행로봇 - 다양한형태의보행로봇중, 적절한동작안정성및시스템복잡도, 기술난이도임 - 실제동물의경우역시, 빠른속도, 안정성, 적응성을가진동물은 4족동물임 견마형 4족보행로봇 - 4족보행로봇은관절의형태에따라 Insect Type(Reptile Type : 파충류형 ) 과 Mammal Type( 포유류 ) 으로분류됨. - Insect Type은무릎관절이 Hip 관절의높이와같거나위에있음. 다리는몸을기준으로옆으로벌어지는형태를띄고실제곤충과같은방법으로보행을함. - Mammal Type은무릎관절이 Hip 관절의아래에위치하므로다리가앞뒤로움직임. - Insect Type은느리지만안정적인보행, Mammal Type은빠르고동적인보행을보임. Insect Type Mammal Type

37 Ⅱ. 보행로봇시스템구현 견마형 4 족의보행패턴 - Work : 네발이각각 1개씩앞으로내딛어져서이동하는보행패턴을말한다. Walk는 4족동물의이동방법중가장안정적인보행방법이다. 한개의다리가공중에서앞으로내딛어질때, 나머지 3다리는몸체를지지하며지면을앞으로밀어내어몸체를이동시킨다. 이때로봇 ( 동물 ) 이넘어지지않기위해서는지지하는세발의지지점을이은삼각형내에로봇의무게중심이위치해야한다. Walk - Trot : 대각선에위치한발이한쌍이되어움직이는보행방법이다. 대각의한쌍의발이몸체 를지지하며앞으로이동시키는동안다른발들을앞으로내딛게된다. 따라서 Trot 은 Walk 에 비해이동속도는빠르나, 안정성은낮다. Trot - Gallop : 앞발과뒷발이각각쌍을이루어보행하는방법으로, 보행중 4발이전부공중에있는 Flight Phase가존재하게된다. 발이땅에닿을때에는쌍을이루는두발중왼쪽발과오른발이약간의시간차이를두고땅에닿게되며, 시간차이가없는것을 Bound라고한다. 또한발의지면접촉순서에따라 Transverse Gallop과 Rotary Gallop으로구분지을수있으며, 한보행주기내에 Flight Phase가 2회일경우인 Fast Gallop과 1회인경우인 Slow Gallop으로도구분지을수있다. Gallop Bound

38 Ⅱ. 보행로봇시스템구현 2. 로봇기구해석 기구부개요 좌표계설정

39 Ⅱ. 보행로봇시스템구현 DH 파라미터 (Craig) joint (i) α i-1 a i-1 d i θ i θ H/ W/2 0 -θ Bw Bh -L1 θ L2 0 θ 3 0 joint (i) Left Front Leg α i-1 a i-1 d i θ i θ H/ W/2 0 -θ Bw Bh -L1 θ L2 0 θ 3 0 Left Rear Leg joint (i) α i-1 a i-1 d i θ i θ H/ W/2 0 -θ Bw Bh -L1 θ L2 0 θ 3 0 joint (i) Right Front Leg α i-1 a i-1 d i θ i θ H/ W/2 0 -θ Bw Bh -L1 θ L2 0 θ 3 0 Right Rear Leg

40 Ⅱ. 보행로봇시스템구현 3. 보행궤적생성 동역학모델링 -LIPM (Linear Inverted Pendulum Model) : 거동하는로봇을질점형태의역진자로단순화한모델 LIPM 에의한궤적생성 - LIPM 의뉴턴방정식은아래와같다. - Z 축방향의거동은일정하다고가정하고, 식을정리 (Z = Hz( 보행높이 )) - 미분방정식을계산하고, 걸음시간 (Ts, 한걸음을내딛는주기 ) 동안의초기위치, 속도값이 주어졌을때, 미분방정식의특수해를구할수있음. - 최종위치값및속도값이아래의조건을만족한다고가정하면, 초기속도값은아래와같음

41 Ⅱ. 보행로봇시스템구현 순기구학 / 역기구학 -LIPM 에의한이동궤적은실제지면과접촉된발끝의이동에의한상대적인움직임을나타내며, 발의움직임은로봇을구성하는각관절의운동으로이루이진다. 따라서위에서생성된보행궤적을발의상대좌표로변환하고, 상대좌표에대한각관절의각도를계산하는역기구학식이필요하다. - 순기구학 : 왼쪽, 오른쪽다리를간단한 Link 구조형태로간주하여순기구학식수립

42 - 역기구학 - θ 1 계산 : 어깨관절의오프셋 L1 을고려하여보행궤적에따른 θ 1 을계산함. Ⅱ. 보행로봇시스템구현 - θ 2, θ 3 계산 : DH 변환행렬을이용해, 목표위치를다리관절좌표로변환후, 다리관절을 2Link 로간 구하여역기구학식을계산함. DH 변환행렬은발끝좌표를몸통좌표로변환하므로, 몸통좌표에서발끝좌표로변환하기위해 DH 변환 행렬의역행렬을구한뒤, 몸통좌표 ( 목표위치 ) 를곱하여발끝좌표를계산한다

43 Ⅱ. 보행로봇시스템구현 - MATLAB 을이용한 DH 변환행렬계산 ( 발끝좌표계 -> 몸통좌표계 )

44 Ⅱ. 보행로봇시스템구현 - 좌표변환식 ( 몸통좌표 -> 발끝좌표 )

45 Ⅱ. 보행로봇시스템구현 - θ 2, θ 3 계산 ( 최종 ) : 2Link 관절의역기구학해석과동일 앞발관절각도 뒷발관절각도

46 Ⅱ. 보행로봇시스템구현 4. 로봇시스템구현 기구부조립 - 구성요소 Link1 ( 2 개 / 우 2 개 ) Link2 4 개 ) Link3 (4 개 ) Frame1 (2 개 ) Frame2 (1 개 ) Foot (4 개 ) - 서보모터조립 1. 서보모터를 0도또는 180도방향으로완전히돌린후, 반대방향으로 90도회전시켜중앙각도를맞춘다. 2. 서보모터의중앙위치가로봇관절 Link 의일직선상태와맞도록조립한다

47 Ⅱ. 보행로봇시스템구현 전기 / 제어시스템구성 - 구성요소 MEGA2560 HS-485HB 서보모터 (12 개 ) (4 개 ), 충전기 (2 개 ) HC-06 블루투스모듈 브레드보드, 점퍼선등 - 블루투스연결

48 Ⅱ. 보행로봇시스템구현 - 서보모터 / 배터리파워연결 - 서보모터위치별연결핀번호 다리 ( 링크 ) Left Front Right Front Left Rear Right Rear Link Link Link

49 Ⅱ. 보행로봇시스템구현 5. Trot 보행구현프로그래밍 #include <math.h> #include <Servo.h> #define SAMPLING_TIME_MSEC 10 #define _1MSEC_TO_1SEC #define _1SEC_TO_1MSEC enum _COORD COORD_X, COORD_Y, COORD_Z, MAX_COORD_NUM ; enum _LEG LF, RF, LR, RR, MAX_LEG_NUM ; enum _JOINT JOINT_1, JOINT_2, JOINT_3, MAX_JOINT_NUM ; Servo servo[max_leg_num][max_joint_num]; // 로봇파라미터 double h = 188; double w = 110; double l1 = 0; double l2 = 65;

50 Ⅱ. 보행로봇시스템구현 double l3 = 70; double bh = 23.5; double bw = 20; double pf[max_leg_num][3] = h / 2, w / 2, -(bh + l2 + l3), h / 2, -w / 2, -(bh + l2 + l3), -h / 2 - bw, w / 2, -(bh + l2 + l3), -h / 2 - bw, -w / 2, -(bh + l2 + l3) ; // 몸통중심으로부터각발끝의 위치값 // 보행파라미터 double s = 20; double stride = 40; // 보폭 double stride_h = 20; // 보폭 ( 수직 ) double velocity = 40; // 보행속도 40 mm/s unsigned long ulperiod_step = (unsigned long)(stride / velocity * _1SEC_TO_1MSEC); double g = 9.81; double hz = 160; double w1 = sqrt(g / hz); double ts = ulperiod_step * _1MSEC_TO_1SEC; double xb[max_leg_num] = 0, ; double yb[max_leg_num] = 0, ; double zb[max_leg_num] = 0, ; // 아두이노핀설정 int PInServo[MAX_LEG_NUM][MAX_JOINT_NUM] = 14, 12, 11, 7, 6, 5, 10, 9, 8, 4, 3, 2; // 모터제어설정 int itargetangle[max_leg_num][max_joint_num] = 0,, ; int ioffsetangle[max_leg_num][max_joint_num] = 90-10, 90-5, 90-5, , 90, , , 90, , , 90, 90-5; int dir[max_leg_num][max_joint_num] = 1, 1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1; // 제어관련변수 unsigned long ulpretime_step = 0; int iseq = 0; void setup() // 시리얼통신초기화 Serial.begin(9600); // 서보모터초기화

51 Ⅱ. 보행로봇시스템구현 for (int ileg = 0 ; ileg < MAX_LEG_NUM ; ileg++) for (int iaxis = 0 ; iaxis < MAX_JOINT_NUM ; iaxis++) int angle = 0 + ioffsetangle[ileg][iaxis]; servo[ileg][iaxis].attach(pinservo[ileg][iaxis]); servo[ileg][iaxis].write(angle); // 2 초 Delay delay(2000); // 현재시간저장 ulpretime_step = millis(); void loop() unsigned long ulcurtime = millis(); int ileg; // 동작스텝변경 if (ulcurtime - ulpretime_step >= ulperiod_step) ulpretime_step = ulcurtime; iseq++; if (iseq > 3) iseq = 2; // 보행시간 ( t = 0 ~ Step Period ) double t = (double)(((ulcurtime - ulpretime_step) % ulperiod_step) / SAMPLING_TIME_MSEC ) * (SAMPLING_TIME_MSEC * _1MSEC_TO_1SEC); if (iseq == 0) // 보행준비

52 Ⅱ. 보행로봇시스템구현 for (int ileg = 0 ; ileg < MAX_LEG_NUM ; ileg++) // 보행궤적생성 xb[ileg] = pf[ileg][coord_x]; yb[ileg] = pf[ileg][coord_y]; zb[ileg] = pf[ileg][coord_z] + s * sin( (PI / 2.) * ( (t * _1SEC_TO_1MSEC) / (double)ulperiod_step) ); // 보행주기설정 // hz = zb[ileg]; // w1 = sqrt(g / hz); else if (iseq == 1) // 보행반걸음 ts = (double)ulperiod_step * _1MSEC_TO_1SEC; double xo[max_leg_num] = stride / 2, -stride / 2, -stride / 2, stride / 2; for (int ileg = 0 ; ileg < MAX_LEG_NUM ; ileg++) double xo_dot = ( (1 + exp(w1 * ts)) / (1 - exp(w1 * ts)) ) * w1 * xo[ileg]; double c1 = 0.5 * (xo[ileg] + (1 / w1) * xo_dot); double c2 = 0.5 * (xo[ileg] - (1 / w1) * xo_dot); // 보행궤적생성 if ((t * _1SEC_TO_1MSEC) >= ulperiod_step / 2.) xb[ileg] = pf[ileg][coord_x] + ( c1 * exp(w1 * t) + c2 * exp(-w1 * t) ); if ( ileg == RF ileg == LR ) zb[ileg] = pf[ileg][coord_z] + s + stride_h * sin( (PI) * ( ((t * _1SEC_TO_1MSEC) - (double)(ulperiod_step / 2.)) / (double)(ulperiod_step / 2.)) ); yb[ileg] = pf[ileg][coord_y];

53 Ⅱ. 보행로봇시스템구현 else if (iseq == 2) // 보행완걸음 1 ts = (double)ulperiod_step * _1MSEC_TO_1SEC; double xo[max_leg_num] = -stride / 2, stride / 2, stride / 2, -stride / 2; for (int ileg = 0 ; ileg < MAX_LEG_NUM ; ileg++) double xo_dot = ( (1 + exp(w1 * ts)) / (1 - exp(w1 * ts)) ) * w1 * xo[ileg]; double c1 = 0.5 * (xo[ileg] + (1 / w1) * xo_dot); double c2 = 0.5 * (xo[ileg] - (1 / w1) * xo_dot); // 보행궤적생성 xb[ileg] = pf[ileg][coord_x] + ( c1 * exp(w1 * t) + c2 * exp(-w1 * t) ); yb[ileg] = pf[ileg][coord_y]; if ( ileg == LF ileg == RR ) zb[ileg] = pf[ileg][coord_z] + s + stride_h * sin( (PI) * ( (t * _1SEC_TO_1MSEC) / (double)(ulperiod_step)) ); else if (iseq == 3) // 보행완걸음2 ts = (double)ulperiod_step * _1MSEC_TO_1SEC; double xo[max_leg_num] = stride / 2, -stride / 2, -stride / 2, stride / 2; for (int ileg = 0 ; ileg < MAX_LEG_NUM ; ileg++) double xo_dot = ( (1 + exp(w1 * ts)) / (1 - exp(w1 * ts)) ) * w1 * xo[ileg]; double c1 = 0.5 * (xo[ileg] + (1 / w1) * xo_dot); double c2 = 0.5 * (xo[ileg] - (1 / w1) * xo_dot); // 보행궤적생성 xb[ileg] = pf[ileg][coord_x] + ( c1 * exp(w1 * t) + c2 * exp(-w1 * t) ); yb[ileg] = pf[ileg][coord_y]; if ( ileg == RF ileg == LR ) zb[ileg] = pf[ileg][coord_z] + s + stride_h * sin( (PI) * ( (t * _1SEC_TO_1MSEC) /

54 Ⅱ. 보행로봇시스템구현 (double)(ulperiod_step)) ); // PLOT 확인 Serial.println(xb[LF]); // 역기구학계산 : ileg = LF; // Left Front Leg double th1 = -atan((yb[ileg] - (w / 2)) / (zb[ileg])) - asin(l1 / (sqrt((yb[ileg] - (w / 2)) * (yb[ileg] - (w / 2)) + zb[ileg] * zb[ileg]))); double xf3 = (yb[ileg] * cos(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2) ) - (2 * bh * (cos(th1 - PI / 2) * cos(th1 - PI / 2)) + 2 * bh * (sin(th1 - PI / 2) * sin(th1 - PI / 2)) + w * cos(th1 - PI / 2)) / (2 * (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2))) + (zb[ileg] * sin(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)); double yf3 = bw - h / 2 + xb[ileg]; double zf3 = (2 * l1 * cos(th1 - PI / 2) * cos(th1 - PI / 2) + 2 * l1 * sin(th1 - PI / 2) * sin(th1 - PI / 2) - w * sin(th1 - PI / 2)) / (2 * (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2))) - (zb[ileg] * cos(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)) + (yb[ileg] * sin(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)); double th3 = acos((xf3 * xf3 + yf3 * yf3 - l2 * l2 - l3 * l3) / (2 * l2 * l3)); double th2 = atan(yf3 / xf3) - atan((l3 * sin(th3)) / (l2 + l3 * cos(th3))); itargetangle[ileg][joint_1] = (int)(th1 * (180. / PI)); itargetangle[ileg][joint_2] = (int)(th2 * (180. / PI)); itargetangle[ileg][joint_3] = (int)(th3 * (180. / PI)); ileg = RF; // Right Front Leg th1 = -atan((yb[ileg] + (w / 2)) / (zb[ileg])) + asin(l1 / (sqrt((yb[ileg] + (w / 2)) * (yb[ileg] + (w / 2)) + zb[ileg] * zb[ileg]))); xf3 = (yb[ileg] * cos(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)) - (2 * bh * cos(th1 - PI / 2) * cos(th1 - PI / 2) + 2 * bh * sin(th1 - PI / 2) * sin(th1 - PI / 2) - w * cos(th1 - PI / 2)) / (2 * (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2))) + (zb[ileg] * sin(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)); yf3 = bw - h / 2 + xb[ileg]; zf3 = (yb[ileg] * sin(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)) - (zb[ileg] * cos(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)) - (2 * l1 * cos(th1 - PI / 2) * cos(th1 - PI / 2) + 2 * l1 * sin(th1 - PI / 2) *

55 Ⅱ. 보행로봇시스템구현 sin(th1 - PI / 2) - w * sin(th1 - PI / 2)) / (2 * (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2))); th3 = acos((xf3 * xf3 + yf3 * yf3 - l2 * l2 - l3 * l3) / (2 * l2 * l3)); th2 = atan(yf3 / xf3) - atan((l3 * sin(th3)) / (l2 + l3 * cos(th3))); itargetangle[ileg][joint_1] = (int)(th1 * (180. / PI)); itargetangle[ileg][joint_2] = (int)(th2 * (180. / PI)); itargetangle[ileg][joint_3] = (int)(th3 * (180. / PI)); ileg = LR; // Left Rear Leg th1 = -atan((yb[ileg] - (w / 2)) / (zb[ileg])) - asin(l1 / (sqrt((yb[ileg] - (w / 2)) * (yb[ileg] - (w / 2)) + zb[ileg] * zb[ileg]))); xf3 = (yb[ileg] * cos(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)) - (2 * bh * cos(th1 - PI / 2) * cos(th1 - PI / 2) + 2 * bh * sin(th1 - PI / 2) * sin(th1 - PI / 2) + w * cos(th1 - PI / 2)) / (2 * (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2))) + (zb[ileg] * sin(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)); yf3 = bw + h / 2 + xb[ileg]; zf3 = (2 * l1 * cos(th1 - PI / 2) * cos(th1 - PI / 2) + 2 * l1 * sin(th1 - PI / 2) * sin(th1 - PI / 2) - w * sin(th1 - PI / 2)) / (2 * (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2))) - (zb[ileg] * cos(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)) + (yb[ileg] * sin(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)); th3 = -acos((xf3 * xf3 + yf3 * yf3 - l2 * l2 - l3 * l3) / (2 * l2 * l3)); th2 = atan(yf3 / xf3) - atan((l3 * sin(th3)) / (l2 + l3 * cos(th3))); itargetangle[ileg][joint_1] = (int)(th1 * (180. / PI)); itargetangle[ileg][joint_2] = (int)(th2 * (180. / PI)); itargetangle[ileg][joint_3] = (int)(th3 * (180. / PI)); ileg = RR; // Right Front Leg th1 = -atan((yb[ileg] + (w / 2)) / (zb[ileg])) + asin(l1 / (sqrt((yb[ileg] + (w / 2)) * (yb[ileg] + (w / 2)) + zb[ileg] * zb[ileg]))); xf3 = (yb[ileg] * cos(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)) - (2 * bh * cos(th1 - PI / 2) * cos(th1 - PI / 2) + 2 * bh * sin(th1 - PI / 2) * sin(th1 - PI / 2) - w * cos(th1 - PI / 2)) / (2 * (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2))) + (zb[ileg] * sin(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)); yf3 = bw + h / 2 + xb[ileg]; zf3 = (yb[ileg] * sin(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) *

56 Ⅱ. 보행로봇시스템구현 sin(th1 - PI / 2)) - (zb[ileg] * cos(th1 - PI / 2)) / (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2)) - (2 * l1 * cos(th1 - PI / 2) * cos(th1 - PI / 2) + 2 * l1 * sin(th1 - PI / 2) * sin(th1 - PI / 2) - w * sin(th1 - PI / 2)) / (2 * (cos(th1 - PI / 2) * cos(th1 - PI / 2) + sin(th1 - PI / 2) * sin(th1 - PI / 2))); th3 = -acos((xf3 * xf3 + yf3 * yf3 - l2 * l2 - l3 * l3) / (2 * l2 * l3)); th2 = atan(yf3 / xf3) - atan((l3 * sin(th3)) / (l2 + l3 * cos(th3))); itargetangle[ileg][joint_1] = (int)(th1 * (180. / PI)); itargetangle[ileg][joint_2] = (int)(th2 * (180. / PI)); itargetangle[ileg][joint_3] = (int)(th3 * (180. / PI)); // 모터구동 ConvAngle((int**)iTargetAngle); void ConvAngle(int** ptarangle) for (int ileg = 0 ; ileg < MAX_LEG_NUM ; ileg++) for (int iaxis = 0 ; iaxis < MAX_JOINT_NUM ; iaxis++) int iangle = *( ptarangle + (ileg * MAX_JOINT_NUM) + iaxis ); int imotorangle = ioffsetangle[ileg][iaxis] + (dir[ileg][iaxis] * iangle); 향에맞도록변환 // 목표각도를모터구동방 // 모터구동 servo[ileg][iaxis].write(imotorangle); void ConvAngle(int ileg, int iaxis, double dangle) int imotorangle = ioffsetangle[ileg][iaxis] + (dir[ileg][iaxis] * (int)(dangle * (180. / PI))); servo[ileg][iaxis].write(imotorangle);

57 Ⅱ. 보행로봇시스템구현 6 Trot 보행구현프로그래밍 ( 블루투스원격조종 ) 아두이노프로그래밍 프로그래밍코드는별도자료첨부 컨트롤앱 (App) 설정

58 Ⅱ. 보행로봇시스템구현

아두이노로만드는인형뽑기장치

아두이노로만드는인형뽑기장치 아두이노로만드는인형뽑기장치 목 차 Ⅰ. 아두이노및 C프로그래밍기초 ------------------------------------------------------- 1 1. 아두이노소개 ------------------------------------------------------------------------- 1 2. 아두이노개발환경구축 --------------------------------------------------------------

More information

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - es-arduino-lecture-03 임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

ü ü ü #include #include #include #include Servo servoleft; Servo servoright; int sensorvalue1, sensorvalue2; // 각각앞쪽과뒤쪽의조도센서 int voltage, voltage2;

More information

< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1

< 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1 < 제누이노스타트키트 > 사용설명서 목차 1. Arduino IDE 설치하기 2. Genuino 연결및 Arduino IDE 셋팅하기 3. 센서설명및연결도, 예제소스 1 1. Arduino IDE 설치하기 1) Arduino IDE 다운로드 - 홈페이지주소 : https://www.arduino.cc 접속합니다. Download 를클릭합니다. Windows

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

More information

Motor

Motor Interactive Workshop for Artists & Designers Earl Park Motor Servo Motor Control #include Servo myservo; // create servo object to control a servo int potpin = 0; // analog pin used to connect

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

<4D F736F F F696E74202D E6F312D BCB3C4A12C20C4DAB5F920B1E2C3CA2C20BDC3B8AEBEF3C5EBBDC5>

<4D F736F F F696E74202D E6F312D BCB3C4A12C20C4DAB5F920B1E2C3CA2C20BDC3B8AEBEF3C5EBBDC5> Arduino 1 ( 소개, IDE 설치, 기초코딩 ) 컴퓨터 2 컴퓨터 컴퓨터 자동적으로계산이나작업을수행하는기계 컴퓨터기능 연산 : 데이터에대한산술연산 ( 덧셈, 뺄셈, 곱셈, 나눗셈 ), 논리연산 (AND, OR 등 ) 등을하는기능. 중앙처리장치 (CPU; central processing unit) 에서수행. 제어 : 명령을순차적으로읽고해석하여처리하는기능으로모든장치의동작을지시하고감독통제하여자동적인처리가가능함.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4 Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

C프로-3장c03逞풚

C프로-3장c03逞풚 C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

Microsoft Word - PEB08_USER_GUIDE.doc

Microsoft Word - PEB08_USER_GUIDE.doc 0. PEB08 이란? PEB08(PIC EVALUATION BOARD 8bits) 은 Microchip 8bit Device 개발을쉽고편리하게할수있는보드입니다. 1. 다양한 8bit Device 지원 기존대부분의 8bit 보드의경우일부 Pin-Count만지원을하였지만, PEB08은 PIC10, PIC12, PIC16, PIC18의 DIP Type Package의모든

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

Example: LED flashlight

Example: LED flashlight Example: LED flashlight current flow 500 wiring diagram schematic wiring it up Electricity flows in a loop. Can stop flow by breaking the loop Hello, World! in Arduino 실습목표 LED 켜기프로그램실습 젂자부품 LED 및저항사용법이해

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - Chapter_04.pptx 프로그래밍 1 1 Chapter 4. Constant and Basic Data Types April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 기본자료형문자표현방식과문자자료형상수자료형변환 기본자료형 (1/8) 3 변수 (Variables)

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

lecture4(6.범용IO).hwp

lecture4(6.범용IO).hwp 제 2 부 C-언어를 사용한 마이크로컨트롤러 활용기초 66 C-언어는 수학계산을 위해 개발된 FORTRAN 같은 고급언어들과는 달 리 Unix 운영체제를 개발하면서 같이 개발된 고급언어이다. 운영체제의 특성상 C-언어는 다른 고급언어에 비해 컴퓨터의 하드웨어를 직접 제어할 수 있는 능력이 탁월하여 마이크로프로세서의 프로그램에 있어서 어셈블 리와 더불어 가장

More information

슬라이드 1

슬라이드 1 UNIT 08 조건문과반복문 로봇 SW 교육원 2 기 학습목표 2 조건문을사용핛수있다. 반복문을사용핛수있다. 조건문 3 조건식의연산결과에따라프로그램의실행흐름을변경 조건문의구성 조건식 실행될문장 조건문의종류 if switch? : ( 삼항연산자 ) if 조건문 4 if 문의구성 조건식 true 또는 false(boolean 형 ) 의결과값을갖는수식 실행될문장

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 쉽게풀어쓴 C 언어 Express 제 6 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 쉽게풀어쓴 C 언어 Express 제 6 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

Arduino- 서보모터 서울과학기술대학교기계시스템디자인공학과 교수김성환

Arduino- 서보모터 서울과학기술대학교기계시스템디자인공학과 교수김성환 Arduino- 서보모터 2017.11.25 서울과학기술대학교기계시스템디자인공학과 교수김성환 1. Arduino 란? (1) 아두이노 (Arduino) 는오픈소스를기반으로한단일보드마이크로컨트롤러. AVR 기반. (2) 가장큰장점은마이크로컨트롤러를쉽게동작시킬수있다는것. 일반적인번거로운과정을피하고, 컴파일된펌웨어를 USB를통해쉽게업로드. (3) 저렴하고, 윈도를비롯해맥

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 RecurDyn 의 Co-simulation 와 하드웨어인터페이스적용 2016.11.16 User day 김진수, 서준원 펑션베이솔루션그룹 Index 1. Co-simulation 이란? Interface 방식 Co-simulation 개념 2. RecurDyn 과 Co-simulation 이가능한분야별소프트웨어 Dynamics과 Control 1) RecurDyn

More information

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - chap-06.pptx 쉽게풀어쓴 C 언어 Express 제 6 장조건문 컴퓨터프로그래밍기초 이번장에서학습할내용 조건문이란? if 문 if, 문 중첩 if 문 switch 문 break문 continue문 goto 문 5장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 컴퓨터프로그래밍기초 2 조건문 조건에따라서여러개의실행경로가운데하나를선택

More information

[8051] 강의자료.PDF

[8051] 강의자료.PDF CY AC F0 RS1 RS0 OV - P 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x18 0x17 0x10 0x0F 0x08 0x07 0x00 0x0000 0x0FFF 0x1000 0xFFFF 0x0000 0xFFFF RAM SFR SMOD - - - GF1 GF0 PD IDL 31 19 18 9 12 13 14 15 1 2 3 4

More information

<4D F736F F F696E74202D20325FBEC6B5CEC0CCB3EB20B1E2C3CABDC3C7E82E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20325FBEC6B5CEC0CCB3EB20B1E2C3CABDC3C7E82E BC8A3C8AF20B8F0B5E55D> 아두이노사용해보기 http://arduino.cc/ 에서먼저프로그램을다운로드하여설치합니다. 시작이반이다 라는옛말이있죠? MCU 사용에있어서도개발환경구축하고, LED 하나깜박여보면절반은끝난거나마찬가지죠. 뭐 ~ 일단 http://arduino.cc/ 에방문하여 Download 를누르고해당 OS ( 보통 Windows를사용하시죠?) 용을압축파일을다운로드 ( 용량이

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 A 반 T2 - 김우빈 (201011321) 임국현 (201011358) 박대규 (201011329) Robot Vacuum Cleaner 1 Motor Sensor RVC Control Cleaner Robot Vaccum Cleaner 2 / Event Format/ Type Front Sensor RVC 앞의장애물의유무를감지한다. True / False,

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

슬라이드 1

슬라이드 1 임베디드시스템개론 : Arduino 활용 Lecture #9: Motor 제어 2012. 5. 18 by 김영주 강의목차 소형모터개요 트랜지스터를이용한 DC 모터제어 Motor Driver IC를이용한 DC 모터제어 Servo 모터제어 2 3 1. 소형모터 (Motor) 소형모터 (1) 소형모터 전기에너지를회전운동으로변환하는장치모터소형화로다양하게응용되고있음

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 누구나즐기는 C 언어콘서트 제 5 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 goto 문 이제까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장 조건에따라서여러개의같은처리를반복

More information

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터 - Part2-3 3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터 3.1 포인터란 ü ü ü. ü. ü. ü ( ) ? 3.1 ü. ü C ( ).? ü ü PART2-4 ü ( ) PART3-4 3.2 포인터변수의선언과사용 3.2 포인터 변수의 선언과 사용 (1/8) 포인터 변수의

More information

ATmega128

ATmega128 ATmega128 외부인터럽트실습 Prof. Jae Young Choi ( 최재영교수 ) (2015 Spring) Prof. Jae Young Choi 외부인터럽트실험 외부인터럽트를사용하기위해관렦레지스터를설정 일반적으로 I/O 포트에대한설정이끝난후에외부인터럽트나타이머 / 카운터설정 PE4~7 번까지 4 개의외부인터럽트 INT4~INT7 까지사용 외부인터럽트사용법요약

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

슬라이드 1

슬라이드 1 프로세싱 광운대학교로봇학부박광현 프로세싱실행 2 C:\processing-3.2.1 폴더 창나타내기 실행 정지 3 폭 높이 600 400 도형그리기 배경칠하기 5 background(255, 255, 255); R G B background(255, 0, 0); background(255, 122, 0); 선그리기 6 background(255, 122, 0);

More information

Microsoft Word doc

Microsoft Word doc 2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp l Y ( X g, Y g ) r v L v v R L θ X ( X c, Yc) W (a) (b) DC 12V 9A Battery 전원부 DC-DC Converter +12V, -12V DC-DC Converter 5V DC-AC Inverter AC 220V DC-DC Converter 3.3V Motor Driver 80196kc,PWM Main

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

Microsoft PowerPoint - es-arduino-lecture-09

Microsoft PowerPoint - es-arduino-lecture-09 임베디드시스템개론 : Arduino 활용 Lecture #9: Motor 제어 2012. 5. 13 by 김영주 강의목차 소형모터개요 트랜지스터를이용한 DC 모터제어 Motor Driver IC를이용한 DC 모터제어 Servo 모터제어 2 3 1. 소형모터 (Motor) 소형모터 (1) 소형모터 전기에너지를회전운동으로변환하는장치모터소형화로다양하게응용되고있음

More information

목차 1 아두이노와이어링 & 코딩 1-1 아두이노초보자를위한 아두이노와이어링과코딩에의한 LED ON OFF 12 Coding_LED_ON_OFF_ 아두이노초보자에게위험스러운 아두이노코딩에의한 LED

목차 1 아두이노와이어링 & 코딩 1-1 아두이노초보자를위한 아두이노와이어링과코딩에의한 LED ON OFF 12 Coding_LED_ON_OFF_ 아두이노초보자에게위험스러운 아두이노코딩에의한 LED 목차 1 아두이노와이어링 & 코딩 1-1 아두이노초보자를위한 아두이노와이어링과코딩에의한 LED ON OFF 12 Coding_LED_ON_OFF_01 http://blog.daum.net/ejleep1/360 1-2 아두이노초보자에게위험스러운 아두이노코딩에의한 LED ON OFF 16 Coding_Dangerous_LED_ON_OFF_01 http://blog.daum.net/ejleep1/370

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

C 프로그래밊 개요

C 프로그래밊 개요 구조체 2009 년 5 월 19 일 김경중 강의계획수정 일자계획 Quiz 실습보강 5 월 19 일 ( 화 ) 구조체 Quiz ( 함수 ) 5 월 21 일 ( 목 ) 구조체저녁 6 시 5 월 26 일 ( 화 ) 포인터 5 월 28 일 ( 목 ) 특강 (12:00-1:30) 6 월 2 일 ( 화 ) 포인터 Quiz ( 구조체 ) 저녁 6 시 6 월 4 일 ( 목

More information

untitled

untitled while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)

More information

03_원격제어반_IDAC-2W

03_원격제어반_IDAC-2W IDAC-2W (Intelligent Distributed Automatic Controller) 1. 개요 IDAC-2W 는 HVAC 의공기조화기, 냉온수열원장비, BC 의저소음휀및기타설비장비를제어하기위한제어기기이다. LCD( Liquid Crystal Display) 가장착된이제어기기는장비의다양한제어기능및데이터통신기능을가지며, Key- Pad 를이용하여장비의운전및설정할수있다.

More information

NodeMCU 입문하기 목차 1. NodeMCU란? 2. NodeMCU로할수있는프로젝트 3. NodeMCU 개발환경구축하기 4. NodeMCU를사용하여 HELLO WORLD! 웹에출력하기 5. NodeMCU로 Blink 예제실행하기 6. 원격으로 LED 제어하기 7.

NodeMCU 입문하기 목차 1. NodeMCU란? 2. NodeMCU로할수있는프로젝트 3. NodeMCU 개발환경구축하기 4. NodeMCU를사용하여 HELLO WORLD! 웹에출력하기 5. NodeMCU로 Blink 예제실행하기 6. 원격으로 LED 제어하기 7. NodeMCU 입문하기 목차 1. NodeMCU란? 2. NodeMCU로할수있는프로젝트 3. NodeMCU 개발환경구축하기 4. NodeMCU를사용하여 HELLO WORLD! 웹에출력하기 5. NodeMCU로 Blink 예제실행하기 6. 원격으로 LED 제어하기 7. 원격으로 RGB LED 제어하기 8. 원격으로온습도모니터링하기 9. 원격으로화분의수분량모니터링하기

More information

시프트 레지스터 Shift Resistor 자, 이제 LED MATRIX 8x8 Board를 마이크로컨트롤러에 연결된 3개의 선으 로 제어해 보자. 이는 마이크로컨트롤러의 포트를 확장함과 동시에 프로그램 으로 제어를 더 쉽게 한다는 장점이 있다. 물론 포트를 절약하게

시프트 레지스터 Shift Resistor 자, 이제 LED MATRIX 8x8 Board를 마이크로컨트롤러에 연결된 3개의 선으 로 제어해 보자. 이는 마이크로컨트롤러의 포트를 확장함과 동시에 프로그램 으로 제어를 더 쉽게 한다는 장점이 있다. 물론 포트를 절약하게 Physical Computing for Artists & Designers 연세대학교디지털아트학과 Earl Park 시프트 레지스터 Shift Resistor 자, 이제 LED MATRIX 8x8 Board를 마이크로컨트롤러에 연결된 3개의 선으 로 제어해 보자. 이는 마이크로컨트롤러의 포트를 확장함과 동시에 프로그램 으로 제어를 더 쉽게 한다는 장점이 있다.

More information

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. D/A 변환기 2. 병렬 D/A 변환기로 LED 밝기제어하기 3. 직렬 D/A 변환기로 LED 밝기제어하기 D/A 변환기 D/A 변환기 (Digital to Analog Converter) 디지털데이터를아날로그전압으로변환하는소자 A/D변환기와함께마이크로프로세서응용회로에서널리사용됨.

More information

졸업작품 2 차보고서 Graduation Project 내자전거를지켜줘! 이름학번연락처이메일 이주희 김민선 지도교수 :

졸업작품 2 차보고서 Graduation Project 내자전거를지켜줘! 이름학번연락처이메일 이주희 김민선 지도교수 : 내자전거를지켜줘! 이름학번연락처이메일 이주희 201011357 010-5043-9053 da2468@naver.com 김민선 201011312 010-9086-9037 mieeu@hanmail.net 지도교수 : 김기천교수님 ( 인 ) Computer Science & Engineering 1/18 1. 프로젝트소개 1.1 배경및목적 1.2 시나리오 1.3

More information

슬라이드 1

슬라이드 1 UNIT 07 조건문과반복문 로봇 SW 교육원 3 기 학습목표 2 조건문을사용핛수있다. 반복문을사용핛수있다. 조건문 3 조건식의연산결과에따라프로그램의실행흐름을변경 조건문의구성 조건식 실행될문장 조건문의종류 if switch? : ( 삼항연산자 ) if 조건문 4 if 문의구성 조건식 true 또는 false(boolean 형 ) 의결과값을갖는수식 실행될문장

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 7주차 AVR의 A/D 변환기제어레지스터및관련실습 Next-Generation Networks Lab. 3. 관련레지스터 표 9-4 레지스터 ADMUX ADCSRA ADCH ADCL 설명 ADC Multiplexer Selection Register ADC 의입력채널선택및기준전압선택외 ADC Control and Status Register A ADC 의동작을설정하거나동작상태를표시함

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt 2008 학년도 1 학기 상지대학교컴퓨터정보공학부 고광만 강의내용 어휘구조 토큰 주석 자료형기본자료형 참조형배열, 열거형 2 어휘 (lexicon) 어휘구조와자료형 프로그램을구성하는최소기본단위토큰 (token) 이라부름문법적으로의미있는최소의단위컴파일과정의어휘분석단계에서처리 자료형 자료객체가갖는형 구조, 개념, 값, 연산자를정의 3 토큰 (token) 정의문법적으로의미있는최소의단위예,

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

CAN-fly Quick Manual

CAN-fly Quick Manual adc-171 Manual Ver.1.0 2011.07.01 www.adc.co.kr 2 contents Contents 1. adc-171(rn-171 Pack) 개요 2. RN-171 Feature 3. adc-171 Connector 4. adc-171 Dimension 5. Schematic 6. Bill Of Materials 7. References

More information