<283130C1D6294C454420B9D720BCBEBCAD20C1A6BEEE2E687770>

Size: px
Start display at page:

Download "<283130C1D6294C454420B9D720BCBEBCAD20C1A6BEEE2E687770>"

Transcription

1 실험 06 LED 및센서제어 < 실험목표 > LED 제어컴포넌트와 Timer 컴포넌트를응용하여 LED 의 on/off 를모스부호화하는방법을알아본다. 장비에장치되어있는조도센서에대해살펴보고, TinyOS 의 Oscilloscope 프로그램을통해측정된조도값을확인하는방법을알아본다. SHT11 센서를이용하여온도및습도값을측정하고, 그결과를시리얼통신을통해 PC 로전달하는방법을알아본다

2 (1) 모스부호와 LED 이장에서실습할 HelloWorld 애플리케이션은 "hello,world" 문자를모스부호로바꾸어 LED 에표 시하는프로그램이다. 모스부호는단점 (dot) 과단점의 3 배길이인장점 (dash) 으로구성되며, 문자 와문자사이에는 2 단점길이의간격을취한다. 예비보고서에서조사할모스부호를 LED 의온 / 오프에활용하여 hello,world" 단어를만들어보자. (2) 조도센서 조도를측정할수있는 CDS 센서는 Atmega128 의 INT0 와 ADC0 사이에연결되어있다. CDS 센서는주변의광량에따라자신의저항값이변하므로, INT0 로부터들어오는 3V 전압은광량에따라변화하는 CDS 의저항성분에의해영향을받는다. 그렇기때문에출력포트인 ADC0 에서는변화된전압의양에의해광량을감지할수있다. 그림 1 은 CDS 센서와 Atmega128 의연결모양을그린회로도이다. [ 그림 1] 조도센서와 CPU 사이의인터페이스 - 2 -

3 TinyOS 에서는조도센서를제어하기위해 Photo 컴포넌트라는것을제공하고있다. Photo 컴포넌트에서는 StdControl.init() 함수에의해노드가초기화를시작할때 ADCControl.bindPort(TOS_ADC_PHOTO_PORT, TOSH_ACTUAL_PHOTO_PORT) 함수를호출하여 INT0 의전압을활성화시켜조도센서에의한광량값을측정할수있도록한다. 표 2 는조도센서로활성화된 ADCC 컴포넌트에서제공하는함수들의목록이다. 특정 ADC 포트지정 ADC 의값얻기 함수및내용 ADCControl.bindPort() - 원하는 ADC 포트값을설정한다 (ADC 0 번포트는조도센서와연결되어있음 ). ADC.getData() - 앞에서설정된 ADC 포트로부터측정된값을얻기위해호출된다. event ADC.dataReady(uint16_t data) - ADC 가측정한값을 event 형태로반환한다. [ 표 2] ADCC 인터페이스에서제공하는함수들 Photo 컴포넌트를사용하는상위프로그램에서는조도데이터를얻기위해 ADC.getData() 함수를호출한다. ADC.getData() 함수가호출되면 CPU 의 INT0 와 ADC0 사이에있는 CDS 센서에의해조도정보를얻게되고, 그값은 event 형태로반환되는 ADC.dataReady(uint16_t data) 함수를통해상위컴포넌트에게전달된다. (3) 온도및습도센서 주변의온도및습도값을측정할수있는센서 SHT11 은 Atmega128 과직접연결되어있다. SHT11 센서는자체적으로측정한아날로그신호를디지털신호로바꾸어주는 ADC 기능이있어, 센싱한데이터를바로 CPU 로전송할수있다. SHT11 은 2 개의선을통해클럭과데이터를 Atmega128 에전송한다. [ 그림 2] 온습도센서와회로도 - 3 -

4 SHT11 로부터측정된센서값을읽기위해서는 Atmega128 과연결된두라인을통해일정한 클럭과명령어를입력시켜야한다. Atmega128 은데이터라인을통해비트단위의명령어를 SHT11 센서와주고받은후, 실제센서값을얻어온다. 데이터라인은클럭신호가 HIGH 일때만 값을읽어오는데, 이때데이터라인의신호는변하지않아야한다. 전송을시작하기전전송 시작을알리는펄스를먼저입력한후, 주소비트와명령어를 SHT11 에보내고사용자가 원하는데이터를읽어온다. 주소비트는현재 000 만사용하고있으며, SHT11 칩에전송하는 명령어는표 3 에나타나있다. 만약습도데이터를읽어오고싶다면주소비트 000 다음으로 명령어를데이터라인으로보내주면된다. 명령어 코드 Reserved 0000x Measure Temperature Measure Humidity Read Status Register Write Status Register Reserved 0101x-1110x Soft reset [ 표 3] SHT11 온습도센서의명령어코드 명령어를넣어주면 Atmega128 은 SHT11 센서가습도측정을완료할때까지기다린다. 12 비트의습도데이터를얻기위해서는약 55ms 정도의시간이소요된다. 측정이완료되면 SHT11 은데이터라인을 LOW 로만들어준후, Atmega128 에게데이터를전송한다. Atmega128 은데이터라인을통해 12 비트의측정된데이터를읽어온후, CRC 에러체크필드의내용에따라 ACK 전송여부를결정한다. 만약데이터를읽어올수없다면 SHT11 과의접속을리셋시킨다. 해당하는명령어를보내주는함수는 HumidityProtocolM.nc 에 static inline char processcommand(int cmd) 라는함수로정의되어있다. 함수내용을살펴보면인터럽트초기화를거쳐 reset() 에정의되어있는내용에의해 Atmega128 과 SHT11 과의연결을재설정하고전송시작을알리는 initseq() 를호출한다. 그리고 CMD 에들어가는명령어에따라해당하는동작을하게된다. 습도값얻기 온도값얻기 함수및내용 Humidity.getData() - 앞에서설정된 ADC 포트로부터측정된값을얻기위해호출된다. event Humidity.dataReady(uint16_t data) - ADC 가측정한값을 event 형태로반환한다. Temperature.getData() - 앞에서설정된 ADC 포트로부터측정된값을얻기위해호출된다. event Temperature.dataReady(uint16_t data) - ADC 가측정한값을 event 형태로반환한다. [ 표 4] ADCC 인터페이스에서제공하는함수들 TinyOS 에서는 SHT11 온습도센서를제어하기위해 HumidityC 컴포넌트를제공하고있다. HumidityC 컴포넌트하위컴포넌트인 HumidityProtocolC 의도움으로습도측정값을얻을수있는 Humidity.getData() 함수와온도측정값을얻을수있는 Temperature.getData() 함수를제공받는다. 사용자는두함수를이용하여 SHT11 센서에온도및습도측정값을요청할수있고, - 4 -

5 event 형태의함수인 Humidity.dataReady(uint16_t data) 와 Temperature.dataReady(uint16_t data) 를통해습도및온도값을얻을수있다. (1) host PC, 모트 1 개, ISP 프로그램툴, 연결케이블 (1) 이장의이론파트의내용을실험전에숙지하여다음에관하여정리하시오. 1-1) 영문자와숫자, 마침표 (Period), 컴마 (Comma), 물음표 (Query) 에대해서모스부호를조사해정리하시오. 1-2) ADC 에서포트값을설정하는함수와측정된값을얻기위한함수를쓰시오 1-3) 습도값과온도값을얻기위한함수를쓰시오. (2) 4.(1) 에서수행하는모스부호프로그램실험을수행하기위하여소스코드를완성해보자. (3) 3.(2) 에서작성한프로그램을참고하여모스부호로자신의학번과이름을찍고 LED 로표현하도록프로그램을작성해보자. (4) 4.(2), (3) 에서수행하는센서제어프로그램실험을참고하여 1 초간격으로조도센싱, 온도센싱을번갈아수행하는프로그램을작성해보자. (1) 모스부호프로그램 HelloWorld 애플리케이션은 hello,world" 문자를모스부호로바꾸어 LED 에표시하는프로그램이 다. 본예제프로그램은 C: Program Files UCB cygwin opt tinyos-1.x contrib zigbex helloworld 폴더에있다. a. HelloWorld.nc HelloWorld 예제에서사용하는컴포넌트들의선언및연결구성은 configuration 파일인 HelloWorld.nc 에서확인할수있다. configuration HelloWorld { implementation { components Main, HelloWorldM, TimerC, LedsC; Main.StdControl -> HelloWorldM; Main.StdControl -> TimerC; HelloWorldM.Timer -> TimerC.Timer[ unique("timer") ]; HelloWorldM.Leds -> LedsC; - 5 -

6 HelloWorld 예제에서는 Timer 를세팅하여정한시간만큼 LED 를온 / 오프함으로써원하는영문자를모스부호로표현할수있다. 시간세팅과 LED 의온 / 오프를제어하기위해 HelloWorld.nc 파일에서 TimerC 컴포넌트와 LedsC 컴포넌트를선언하고, 자신의 module 인 HelloWorldM 컴포넌트와연결시킨다. b. HelloWorldM.nc 실제 HelloWorld 프로그램이구현되어있는 module 파일인 HelloWorldM.nc 파일을살펴보자. HelloWorldM.nc 파일을열면다음과같은소스코드를확인할수있다. #define MORSE_WPM 12 /* 분당문자전송속도 */ #define MORSE_UNIT ( 1200 / MORSE_WPM ) /* 한모스부호를나타내기위한밀리초 */ module HelloWorldM { provides { interface StdControl; uses { interface Timer; interface Leds; implementation { command result_t StdControl.init() { call Leds.init(); call Leds.redOff(); call Leds.yellowOff(); call Leds.greenOff(); command result_t StdControl.start() { // 1000ms 후에 Timer.fired() 가한번호출됨 return call Timer.start( TIMER_ONE_SHOT, 1000 ); command result_t StdControl.stop() { return call Timer.stop(); event result_t Timer.fired() { /* static char *morse 변수에 hello,world 문자열의포인터를저장한다. */ static char *morse = " " " "; static char *current; - 6 -

7 if(!current ) current = morse; switch( *current ) { case ' ': /* pause: 두번의모스 units 시간동안 off 한다 */ dbg( DBG_USR1, "Morse: pause n" ); call Timer.start( TIMER_ONE_SHOT, 2 * MORSE_UNIT ); current++; break; case '.': /* dot: 한번의모스 unit 동안 on 하고한번의 unit 동안 off */ /* 소스코드채울부분 */ break; case '-': /* dash: 세번의모스 unit 동안 on 하고한번의 unit 동안 off */ /* 소스코드채울부분 */ break; default: /* 잘못된문자 : ignore */ dbg( DBG_USR1, "Morse: illegal character! n" ); break; /* 문자열의마지막 (Null 문자 ) 에오면 return 한다 */ if(!*current ) current = morse; HelloWorld 는하나의완전한애플리케이션으로실행되기위해서필수적으로요구되는 Main 컴포넌트를하부컴포넌트로두고, 다른컴포넌트들과자신의 module 부분을연결한다. Main 컴포넌트에의해처음실행되는것은 HelloWorldM 의 StdControl.init() 함수이다. 이함수안에는 LED 에대한초기화및오프에대한명령어가실행된다. 그다음호출되는함수는 StdControl.start() 함수로서, Timer 컴포넌트를통해 1 초 (1000) 후에한번의알람 (TIMER_ONE_SHOT) 만이호출되도록설정한다. Timer 컴포넌트는설정된대로 1 초후에 signal 을통해 HelloWorldM 내의 Timer.fired() 함수를호출하게되며, Timer.fired() 함수에서는 static 포인터변수인 morse 에저장되어있는 'hello,world' 모스값에따라 Red LED 의온 / 오프를명령하게된다. 예를들어, 모스부호공백 에서는 2 x MORSE_UNIT 시간동안 LED 에아무런변화를주지않고, 모스부호점. 에서는 MORSE_UNIT 시간동안 Red LED 를켠후, 다시 MORSE_UNIT 시간동안 Red LED 를오프시켜 current++ 를통해다음모스부호로넘어간다. 모스부호바 - 에서는 3 x MORSE_UNIT 시간동안 Red LED 를켠후, 역시 MORSE_UNIT 시간동안 Red LED 를오프시키고 current++ 를통해다음모스부호로넘어간다. 이와같은알고리즘에의해 HelloWorld 프로그램이설치된센서노드는 Red LED 를통해 'hello,world" 의모스부호를출력한다

8 (2) Oscilloscope 예제를이용한조도센서제어 Oscilloscope 예제는 125ms 마다 CDS 센서로부터측정값을받은후그내용을시리얼케이블을통해 PC 로전달하는프로그램이다. Oscilloscope 는 Oscilloscope.nc 와 OscilloscopeM.nc, OscopeMsg.h 의총 3 개파일로구성되어있다. Oscilloscope.nc 는각컴포넌트간의연결관계를나타내는 config 굵성되 tion 파일이며, OscilloscopeM.nc 는실제예제의동작이기술된 module 파일이다. OscopeMsg.h 는센서에서받아온데이터를 UART( 시리얼 ) 를통해주고받을수있도록 TinyOS 에서정의된데이터패킷구조체가선언되어있다. Oscilloscope 예제는크게 PC 와의시리얼통신을위한 UARTComm 컴포넌트와조도센서값을 얻기위한 DemoSensorC 컴포넌트, 그리고주기적인알람과동작여부를눈으로보여주기위한 TimerC 와 LedsC 컴포넌트로구성된다. 본예제프로그램은 C: Program Files UCB cygwin opt tinyos-1.x contrib zigbex Oscilloscope 폴더에있다. a. Oscilloscope.nc Oscilloscope.nc 파일에는 Oscilloscope 예제에서사용할여러컴포넌트들의선언및그들간의연결에대한내용이기술되어있다. 컴포넌트들은선언후프로그래머의편의에따라다른이름으로사용될수있다. 예를들면아래파일에기술되어있는 'DemoSensorC as Sensor' 의의미는 DemoSensorC 컴포넌트를 Sensor 라는이름으로사용하겠다는의미이며, 이문장이후로 Sensor 라는단어는 DemoSensorC 컴포넌트를의미한다. 같은인터페이스를갖는여러컴포넌트들을동시에사용할경우, 프로그램을기술할때컴포넌트이름간에혼돈이발생할수있기때문에 'UARTComm as Comm' 형태로인터페이스의이름을바꾸기도한다. 혹은 module 파일을고치지않고 configuration 파일의컴포넌트이름만교환함으로써다른동작이실행될수있도록할경우에도다른이름을선언한다. configuration Oscilloscope { implementation { components Main, OscilloscopeM, TimerC, LedsC, DemoSensorC as Sensor, UARTComm as Comm; Main.StdControl -> OscilloscopeM; Main.StdControl -> TimerC; OscilloscopeM.Timer -> TimerC.Timer[unique("Timer")]; - 8 -

9 OscilloscopeM.Leds -> LedsC; OscilloscopeM.SensorControl -> Sensor; OscilloscopeM.ADC -> Sensor; OscilloscopeM.CommControl -> Comm; OscilloscopeM.ResetCounterMsg -> Comm.ReceiveMsg[AM_OSCOPERESETMSG]; OscilloscopeM.DataMsg -> Comm.SendMsg[AM_OSCOPEMSG]; 여기서선언된 DemoSensorC 컴포넌트는 /opt/tinyos-1.x/sensorboards/basicsb 폴더에있는 DemoSensorC.nc 파일을호출한것으로, 조도센서를제어하는 Photo 컴포넌트를그대로링크하는컴포넌트이다. 이번예제는 DemoSensorC 컴포넌트를통해센서노드의조도값을받아오지만실제로는 DemoSensorC 컴포넌트의하부컴포넌트로구현되어있는 Photo 컴포넌트가조도값을제공한다. 다음으로선언된 UARTComm 컴포넌트는 PC 와의시리얼통신을위해만들어진컴포넌트로서 ReceiveMsg 인터페이스와 SendMsg 인터페이스를통해다음과같은함수를제공한다. ReceiveMsg SendMsg 함수및내용 event TOS_MsgPtr receive(tos_msgptr m) - 시리얼케이블을통해 PC 로부터어떠한메시지를받았을경우 event 형태로호출되는함수로, TOS_Msg 형태의포인터를반환한다. send(...) - 센서노드에서 PC 로 TOS_Msg 형태의파일을보내기위해호출되는함수이다. senddone(...) - send(...) 함수를통해메시지가모두전송되었을때 event 형태로호출되는함수이다. [ 표 5] UARTComm 에서제공하는함수들 b. OscilloscopeM.nc includes OscopeMsg; module OscilloscopeM { provides interface StdControl; uses { interface Timer; interface Leds; interface StdControl as SensorControl; interface ADC; interface StdControl as CommControl; interface SendMsg as DataMsg; interface ReceiveMsg as ResetCounterMsg; implementation - 9 -

10 { uint8_t packetreadingnumber; uint16_t readingnumber; TOS_Msg msg[2]; uint8_t currentmsg; command result_t StdControl.init() { call Leds.init(); call Leds.yellowOff(); call Leds.redOff(); call Leds.greenOff(); call SensorControl.init(); call CommControl.init(); atomic { currentmsg = 0; packetreadingnumber = 0; readingnumber = 0; dbg(dbg_boot, "OSCOPE initialized n"); command result_t StdControl.start() { call SensorControl.start(); call Timer.start(TIMER_REPEAT, 125); call CommControl.start(); command result_t StdControl.stop() { call SensorControl.stop(); call Timer.stop(); call CommControl.stop(); task void datatask() { struct OscopeMsg *pack; atomic { pack = (struct OscopeMsg *)msg[currentmsg].data; packetreadingnumber = 0; pack->lastsamplenumber = readingnumber; pack->channel = 1; pack->sourcemoteid = TOS_LOCAL_ADDRESS;

11 if (call DataMsg.send(TOS_UART_ADDR, sizeof(struct OscopeMsg), &msg[currentmsg])) { atomic { currentmsg ^= 0x1; call Leds.yellowToggle(); async event result_t ADC.dataReady(uint16_t data) { struct OscopeMsg *pack; atomic { pack = (struct OscopeMsg *)msg[currentmsg].data; pack->data[packetreadingnumber++] = data; readingnumber++; dbg(dbg_usr1, "data_event n"); if (packetreadingnumber == BUFFER_SIZE) { post datatask(); if (data > 0x0300) call Leds.redOn(); else call Leds.redOff(); event result_t DataMsg.sendDone(TOS_MsgPtr sent, result_t success) { event result_t Timer.fired() { return call ADC.getData(); event TOS_MsgPtr ResetCounterMsg.receive(TOS_MsgPtr m) { atomic { readingnumber = 0; return m;

12 OscilloscopeM.nc 에서는먼저 include 명령어를통해 Oscilloscope.h 에있는내용을참조한후, module 안에 StdControl 인터페이스를 provide 로선언한다. 그리고 OscilloscopeM 내에서사용할인터페이스들을 use 로선언하는데, 이중센서와관련된인터페이스는 SensorControl 과 ADC 이다. 여기서 SensorControl 은 DemoSensorC 의 StdControl 을 rename 한것으로, Oscilloscope 자체적으로사용하는 StdControl 과 UARTComm 에서사용하는 StdControl 과의혼돈을방지하기위해 rename 한것이다. CDS 센서와관련된또하나의인터페이스는 ADC 이다. ADCC 는 CDS 센서로부터들어오는아날로그데이터를디지털로변환해주는장치와관련된컴포넌트이다. 참고로 ADCC.ADC[0] 은 CDS 센서의데이터를 ADC 로변환해주는포트이고 ADCC.ADC[1] 은적외선센서의데이터를변환해주는포트이다. DemoSensorC 컴포넌트의하위 Photo 컴포넌트에서는 ADC[0] 값을 CDS 센서의데이터값으로설정해주기때문에, 현파일에서사용된 ADC 인터페이스는오직 CDS 센서만을제어한다. 결국예제프로그램에서는 ADC 의포트번호와상관없이 ADC.getData() 함수와 ADC.dataReady() 함수를사용하여센서주변의조도값을얻어올수있다. OscilloscopeM.nc 의동작을순서대로살펴보자. Main 컴포넌트에의해제일먼저실행되는 StdControl.init() 함수에서 LED, SensorControl, CommControl 컴포넌트들및여러변수들을모두초기화한다. StdControl.start() 에서는 SensorControl, CommControl 을시작하고 Timer 를 125ms 마다한번씩 signal 을발생시키도록 Timer.start(TIMER_REPEAT, 125) 함수를호출한다. StdControl.stop() 에서는 SensorControl, CommControl 을정지하게하고 Timer 도정지시킨다. Timer 컴포넌트에의해 125ms 마다 signal 이발생하여 Timer.fired() 가호출되고, 그함수내부에서는 ADC.getData() 함수를호출하여 ADC[0] 에있는조도측정값을요청한다. 조도값의측정이끝나면 result_t ADC.dataReady(uint16_t data) 함수가 event 형태로 OscilloscopeM 파일내에서호출된다. 이함수내에서는받은조도측정값을시리얼통신으로 PC 에전달하기위해 OscopeMsg.h 에정의된패킷포맷형식으로변환시킨다. 그후, task 로된 datatask() 함수를호출하여 ADC.dataReady(uint16_t data) 함수로부터받은측정값을 DataMsg.send() 함수를통해시리얼로 PC 에게전송한다. OscilloscopeM 파일내에구현된내용을요약하자면, 125ms 마다측정한조도값을 UARTComm 컴포넌트의 Comm 인터페이스를통해 PC 로전송하는프로그램이다. c. OscopeMsg.h OscilloscopeM 파일에서사용한 Oscope 데이터포맷을정의하는헤더파일로, 포맷의구조는 그림 3 과같다. sourcemoteid lastsamplenumber channel Data[10] [ 그림 3] Oscope 메시지의형태 실제코드는다음과같다

13 enum { BUFFER_SIZE = 10 ; struct OscopeMsg { uint16_t sourcemoteid; uint16_t lastsamplenumber; uint16_t channel; uint16_t data[buffer_size]; ; struct OscopeResetMsg { /* Empty payload! */ ; enum { AM_OSCOPEMSG = 10, AM_OSCOPERESETMSG = 32, AM_ZIGBEXMSG = 0x27, AM_ZIGBEXRESETMSG = 0x28 ; 연결케이블을통해프로그램된센서노드로부터전송된데이터를확인하기위해서오실로스코프 자바애플리케이션을실행한다. 아래와같은명령어를입력하여애플리케이션을실행시킨다. export MOTECOM=serial@COM1:57600 java net.tinyos.oscope.oscilloscope 여기서 COM1 은센서가 PC 의 COM1 포트에연결되었을경우의세팅값이다. 장치관리자에서센서와 PC 가어느포트로연결되어있는지확인한후적절한값으로세팅한다. 자바애플리케이션을통해데이터가시리얼로전달되는것을확인할수있고빛의양에따라데이터를나타내는선이변화되는것을볼수있다. 혹시그래프가잘보이지않을경우 Scrolling 을체크하면그래프를확인할수있다. 그래도보이지않으면방향버튼을눌러서그래프를찾으면된다

14 [ 그림 4] 조도센서값을 Oscilloscope 로본결과 (3) 온도및습도센서제어 OscilloscopeSHT11 예제는앞에서조도측정을위해만들었던 Oscilloscope 예제와매우비슷하다. OscilloscopeSHT11 예제는 125ms 마다 HumidityC 컴포넌트를통해습도센서로부터측정값을받은후, 시리얼케이블을통해받은데이터를 PC 로전달하는프로그램이다. OscilloscopeSHT11 은 Oscilloscope.nc, OscillsocopeM.nc, OscopeMsg.h 의세가지파일로구성된다. 본예제프로그램은 C: Program Files UCB cygwin opt tinyos-1.x contrib zigbex OscilloscopeSHT11 폴더에있다. a. Oscilloscope.nc OscilloscopeSHT11 예제의 configuration 파일인 Oscilloscope.nc 에는하나의애플리케이션을시작할수있는 Main 컴포넌트와 125ms 마다 Timer.fired() 함수를호출하기위한 TimerC 컴포넌트, LED 를제어하기위한 LedsC 컴포넌트, 온도및습도의측정값을얻을수있는 HumidityC 컴포넌트그리고시리얼통신을위한 UARTComm 컴포넌트가선언되어있다. 여기서 HumidityC 컴포넌트와 UARTComm 컴포넌트는각각 SHT11 과 Comm 이라는이름으로선언되어사용된다 (HumidityC as SHT11, UARTComm as Comm). configuration Oscilloscope { implementation

15 { components Main, OscilloscopeM, TimerC, LedsC, HumidityC as SHT11, UARTComm as Comm; Main.StdControl -> OscilloscopeM; Main.StdControl -> TimerC; OscilloscopeM.Timer -> TimerC.Timer[unique("Timer")]; OscilloscopeM.Leds -> LedsC; //OscilloscopeM.SensorControl -> SHT11.; OscilloscopeM.SHT11_Humidity -> SHT11.Humidity; OscilloscopeM.SHT11_Temp -> SHT11.Temperature; OscilloscopeM.SHT11_Humidity_Error->SHT11.HumidityError; OscilloscopeM.SHT11_Temp_Error->SHT11.TemperatureError; OscilloscopeM.SplitControl->SHT11.SplitControl; OscilloscopeM.CommControl -> Comm; OscilloscopeM.ResetCounterMsg -> Comm.ReceiveMsg[AM_OSCOPERESETMSG]; OscilloscopeM.DataMsg -> Comm.SendMsg[AM_OSCOPEMSG]; 위의소스코드를통해, 사용된컴포넌트및 OscilloscopeM 과의연결구조를알수있다. b. OscilloscopeM.nc 다음으로 Oscilloscope 예제프로그램의 module 인 OscilloscopeM.nc 파일을살펴본다. OscilloscopeM.nc 파일을열면다음과같은소스코드를확인할수있다. includes OscopeMsg; module OscilloscopeM { provides interface StdControl; uses {... implementation { uint8_t TemppacketReadingNumber;... uint8_t mytemp, myhumi; void calc_sht11(uint16_t p_humidity,uint16_t p_temperature);

16 command result_t StdControl.init() { call Leds.init(); call Leds.yellowOff(); call Leds.redOff(); call Leds.greenOff(); call CommControl.init(); call SplitControl.init(); atomic { currenttempmsg = 0; currenthumimsg = 0; TemppacketReadingNumber = 0; HumipacketReadingNumber = 0; TempreadingNumber = 0; HumireadingNumber = 0; dbg(dbg_boot, "OSCOPE initialized n"); command result_t StdControl.start() { call Timer.start(TIMER_REPEAT, 125); call CommControl.start(); call SplitControl.start(); command result_t StdControl.stop() { call Timer.stop(); call CommControl.stop(); call SplitControl.stop(); // 측정한온도값을시리얼통신을통해 PC 로전달하는함수 task void datatasktemp() { struct OscopeMsg *pack; atomic { pack = (struct OscopeMsg *)tempmsg[currenttempmsg].data; TemppacketReadingNumber = 0; pack->lastsamplenumber = TempreadingNumber; pack->channel = 1; pack->sourcemoteid = TOS_LOCAL_ADDRESS; // 시리얼통신을위해호출되는함수 if (call DataMsg.send(TOS_UART_ADDR, sizeof(struct OscopeMsg),

17 &tempmsg[currenttempmsg])) { atomic { currenttempmsg ^= 0x1; call Leds.yellowToggle(); // 측정한습도값을시리얼통신을통해 PC 로전달하는함수 task void datataskhumi() { struct OscopeMsg *pack; atomic { pack = (struct OscopeMsg *)humimsg[currenthumimsg].data; HumipacketReadingNumber = 0; pack->lastsamplenumber = HumireadingNumber; pack->channel = 2; pack->sourcemoteid = TOS_LOCAL_ADDRESS; /* Try to send the packet. Note that this will return * failure immediately if the packet could not be queued for * transmission. */ if (call DataMsg.send(TOS_UART_ADDR, sizeof(struct OscopeMsg), &humimsg[currenthumimsg])) { atomic { currenthumimsg ^= 0x1; call Leds.yellowToggle(); // 온도정보를반환하는함수 async event result_t SHT11_Temp.dataReady(uint16_t data) { struct OscopeMsg *pack; atomic { pack = (struct OscopeMsg *)tempmsg[currenttempmsg].data; calc_sht11(data,data); pack->data[temppacketreadingnumber++] = mytemp; TempreadingNumber++; dbg(dbg_usr1, "data_event n");

18 if (TemppacketReadingNumber == BUFFER_SIZE) { post datatasktemp(); if (data > 0x0300) call Leds.redOn(); else call Leds.redOff(); // 습도정보를반환하는함수 async event result_t SHT11_Humidity.dataReady(uint16_t data) { struct OscopeMsg *pack; atomic { pack = (struct OscopeMsg *)humimsg[currenttempmsg].data; calc_sht11(data,data); pack->data[humipacketreadingnumber++] = myhumi; HumireadingNumber++; dbg(dbg_usr1, "data_event n"); if (HumipacketReadingNumber == BUFFER_SIZE) { post datataskhumi(); if (data > 0x0300) call Leds.redOn(); else call Leds.redOff();... event result_t Timer.fired() { timetick++; //return call SHT11_Temp.getData(); return call SHT11_Humidity.getData(); event TOS_MsgPtr ResetCounterMsg.receive(TOS_MsgPtr m) { atomic { TempreadingNumber = 0; HumireadingNumber = 0; return m;

19 // 디지털로들어오는값을온도와습도단위로변환해주는함수 void calc_sht11(uint16_t p_humidity,uint16_t p_temperature) { const float C1=-4.0; // for 12 Bit const float C2= ; // for 12 Bit const float C3= ; // for 12 Bit const float T1=0.01; // for 14 5V const float T2= ; // for 14 5V float rh_lin; // rh_lin: 습도값 float rh_true; // rh_true: 온도값으로보정된습도값 float t_c; // t_c : Temperature [C] float rh=(float)p_humidity; // rh: 디지털습도값 [Ticks] 12 Bit float t=(float)p_temperature; // t: 디지털온도값 [Ticks] 14 Bit t_c=t* ; // 디지털온도값을 [C] 단위의온도값으로계산 rh_lin=c3*rh*rh + C2*rh + C1; // [%RH] 단위의습도값계산 rh_true=(t_c-25)*(t1+t2*rh)+rh_lin; // 온도값으로습도값보정 if(rh_true>100)rh_true=100; // 최대범위조정 if(rh_true<0.1)rh_true=0.1; // 최소범위조정 mytemp=(uint8_t)t_c; // [C] 단위온도값저장 myhumi=(uint8_t)rh_true; // [%RH] 단위습도값저장 OscilloscopeM.nc 에서는우선 OscopeMsg 를 include 시킨후, 실제구현부분에서사용할여러컴포넌트의인터페이스들을기술한다. implementation 의첫부분에서는사용할여러변수들및부수적인서브함수들을선언한다. 처음호출되는 StdControl.init() 함수는여러컴포넌트들및변수들의초기화와관련된일을처리한다. 그다음호출되는 StdControl.start() 함수에서는 125ms 시간마다반복해서 signal 을발생시키는 Timer 컴포넌트및시리얼통신부분을담당하는 CommControl 컴포넌트그리고 SHT11 컴포넌트와관련있는 SplitControl 컴포넌트를활성화시킨다. StdContro.start() 에서설정된 Timer 컴포넌트에의해 125ms 마다 Timer.fired() 함수가호출되고, 이함수에서는 SHT11_Humidity.getData() 함수를통해 SHT11 칩에게습도값을요청한다. 주석처리된 SHT11_Temp.getData() 함수를사용하면온도값을요청할수있다. HumidityC 컴포넌트는 SHT11 센서로부터요청한결과값을받은후, event 형태의 SHT11_temp.dataReady(uint16_t data) 함수나 SHT11_Humidity.dataReady(uint16_t data) 함수를통해상위컴포넌트에게센서값을전달한다. 이예제에서는 SHT11_Humidity.getData() 함수만호출했기때문에,

20 SHT11_Humidity.dataReady(uint16_t data) 함수만동작될것이다. SHT11 칩으로부터습도나온도값을받게되면, calc_sht11(p_humidity, p_temperature) 를호출 하여, 받은측정값을실제사용되는온도및습도단위 (C, %RH) 로바꿔변수 myhumi 와 mytemp 에각각저장한다. 그후, datataskhumi() 함수나 datatasktemp() 함수를통해얻은센서값을시리얼통신을통해 PC 로전송한다. 사용자는자바애플리케이션을사용하여센서노드가시리얼통신으로전송하는 데이터값을확인할수있다. (1) 예비보고서에작성한모스부호프로그램을실제로센서에올려서잘못된부분을수정하 여프로그램을완성시키고소스코드를첨부하라. (2) 예비보고서에작성한센서제어프로그램을실제로센서노드에올려서잘못된부분을 수정하여프로그램을완성시키고실행중인오실로스코프프로그램을캡쳐하여수정된소스코드와 함께첨부하라

<4D F736F F F696E74202D205BBDC7BDC0345DC1B6B5B5BCBEBCADC1A6BEEE2E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D205BBDC7BDC0345DC1B6B5B5BCBEBCADC1A6BEEE2E BC8A3C8AF20B8F0B5E55D> 조도센서제어 이번장에서는 ZigbeX 에장치되어있는센서들중에서조도센서에대해공부하고, TinyOS의 Oscilloscope 프로그램을통해측정된조도값을확인하는방법에대해알아보도록하겠다. 한백전자 ZigbeX 의조도센서 2 ZigbeX 의조도센서 조도센서 CDS ZigbeX에장치되어있는조도센서 CDS는 Atmega 128(ZigbeX의 8bit CPU) 의 INT0

More information

Microsoft PowerPoint - [이론4]TinyOS와NesC [호환 모드]

Microsoft PowerPoint - [이론4]TinyOS와NesC [호환 모드] TinyOS 와 NesC 한백전자 TinyOS 2 TinyOS TinyOS (TOS) = atmega128 에서수행가능한이미지 event-driven 구조 단일스택 TinyOS 의제한사항 커널없음 동적메모리관리없음 가상메모리사용안함 Main 함수에서구동되는 Simple FIFO 스케줄러 3 TinyOS 응용프로그램 TOS application = graph

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

슬라이드 1

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

More information

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로 Lab. 1. I-V Characteristics of a Diode Lab. 6. 연산증폭기가산기, 미분기, 적분기회로 1. 실험목표 연산증폭기를이용한가산기, 미분기및적분기회로를구성, 측정및 평가해서연산증폭기연산응용회로를이해 2. 실험회로 A. 연산증폭기연산응용회로 (a) 가산기 (b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로 3. 실험장비및부품리스트

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

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

<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

[ 마이크로프로세서 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

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

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

<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

<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

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

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

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

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

슬라이드 1

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

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

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128

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

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

API 매뉴얼

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

More information

11장 포인터

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

More information

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

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

More information

실험 5

실험 5 실험. OP Amp 의기초회로 Inverting Amplifier OP amp 를이용한아래와같은 inverting amplifier 회로를고려해본다. ( 그림 ) Inverting amplifier 위의회로에서 OP amp의 입력단자는 + 입력단자와동일한그라운드전압, 즉 0V를유지한다. 또한 OP amp 입력단자로흘러들어가는전류는 0 이므로, 저항에흐르는전류는다음과같다.

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech

OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech OSTSen-THL100 사용자설명서 Ver 1.1 Onsystech OSTSen-THL100 Ver1.1 1 of 8 Onsystech 1. 제품소개 1) 제품특징 OSTSen-THL100은 UART 인터페이스를통하여온도, 습도, 조도데이터를제공하는센서모듈입니다. 이센서모듈은사용자가편리하게다양한분야에쉽게적용할수있도록소형으로제작되었습니다. PC에서 OSTSen-THL100의온도,

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

실험 5

실험 5 실험. apacitor 및 Inductor 의특성 교류회로 apacitor 의 apacitance 측정 본실험에서는 capacitor를포함하는회로에교류 (A) 전원이연결되어있을때, 정상상태 (steady state) 에서 capacitor의전압과전류의관계를알아본다. apacitance의값이 인 capacitor의전류와전압의관계는다음식과같다. i dv = dt

More information

온습도 판넬미터(JTH-05) 사양서V1.0

온습도 판넬미터(JTH-05)  사양서V1.0 온습도 조절기 Model:JTH-05 1. 제품 사양. [제품 구분] JTH-05A(입력 전원 AC), JTH-05D(입력 전원 DC) [전원 사양] JTH-05A 입력 전압 출력 전원 소비 전력 JTH-05D AC 90~240V DC 10~36V 12Vdc / Max.170mA Max.2W [본체 사이즈] ~ 온/습도 범위(본체): 사용 [0 ~ 50, 85%RH

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

정보보안 개론과 실습:네트워크

정보보안 개론과 실습:네트워크 ` 마이크로프로세서설계및실습 12-13 주차강의자료 학습목표 A/D 변환기의제어방법을이해한다 능숙하게 A/D 변환기를제어할수있도록반복실습한다 2/28 아날로그 - 디지털변환회로 아날로그 - 디지털변환회로 (A/D 변환회로 ) 는, 아날로그전기신호를디지털전기신호로변환하는전자회로이다 A/D 컨버터 (ADC: Analog-to-digital converter) 라고도불린다

More information

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

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

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

OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech

OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech OSTSen-PIR100 사용자설명서 Ver 1.1 Onsystech OSTSen-PIR100 V1.1 1 of 8 Onsystech 1. 제품소개 1) 제품특징 OSTSen-PIR100은 UART 인터페이스를통하여인체모션감지 (PIR) 데이터를제공하는센서모듈입니다. 이센서모듈은사용자가편리하게다양한분야에적용할수있도록소형으로제작되었습니다. ( PIR: Pyroelectric

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

PowerPoint Presentation

PowerPoint Presentation #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 - additional01.ppt [호환 모드]

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070> 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include "QuickSort.h" 7 using namespace std; 8 9 10 Node* Queue[100]; // 추가입력된데이터를저장하기위한 Queue

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

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 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

Microsoft Word - Lab.4

Microsoft Word - Lab.4 Lab. 1. I-V Lab. 4. 연산증폭기 Characterist 비 tics of a Dio 비교기 ode 응용 회로 1. 실험목표 연산증폭기를이용한비교기비교기응용회로를이해 응용회로를구성, 측정및평가해서연산증폭기 2. 실험회로 A. 연산증폭기비교기응용회로 (a) 기본비교기 (b) 출력제한 비교기 (c) 슈미트트리거 (d) 포화반파정류회로그림 4.1. 연산증폭기비교기응용회로

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

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

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

More information

중간고사

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

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

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

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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

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

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

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

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

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

Microsoft Word - LKP-RTD 사용자 설명서

Microsoft Word - LKP-RTD 사용자 설명서 LKP-RTD 보드 사용자설명서 Version Information H/W Version : Version 1.0 소속 : ( 주 ) 엘케이일레븐연구소주소 : 성남시중원구상대원동 190-1 SKn테크노파크메가센터 1306호전화 : 031-776-4120 / FAX : 031-766-4119 목차 1. 개요... 5 2. 사양... 6 3. 블록도... 7 4.

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 프레젠테이션 @ 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

PowerPoint 프레젠테이션

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

More information

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을 (structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined

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

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech

OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver of 8 Onsystech OSTSen-MOS100 사용자설명서 Ver 1.1 Onsystech OSTSen-MOS100 Ver 1.1 1 of 8 Onsystech 1. 제품소개 1) 제품특징 OSTSen-MOS100은 UART 인터페이스를통하여토양수분데이터를제공하는센서모듈입니다. 이센서모듈은사용자가편리하게다양한분야에적용할수있도록소형으로제작되었습니다. PC에서는 OSTSen-MOS100에서제공하는토양수분데이터를

More information

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

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

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

Microsoft Word - Lab.7

Microsoft Word - Lab.7 Lab. 1. I-V C Lab. 7. Characterist tics of a Dio 능동필터 ode 1. 실험목표 연산증폭기를이용한저역통과필터 (low-pass filter), filter), 대역통과필터 (band-pass filter) 회로를구성, 연산증폭기능동필터회로를이해 고역통과필터 (high-pass 측정및평가해서 2. 실험회로 A. 연산증폭기능동필터

More information

PowerPoint Template

PowerPoint Template SOFTWARE ENGINEERING Team Practice #3 (UTP) 201114188 김종연 201114191 정재욱 201114192 정재철 201114195 홍호탁 www.themegallery.com 1 / 19 Contents - Test items - Features to be tested - Features not to be tested

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

(b) 연산증폭기슬루율측정회로 (c) 연산증폭기공통모드제거비측정회로 그림 1.1. 연산증폭기성능파라미터측정회로

(b) 연산증폭기슬루율측정회로 (c) 연산증폭기공통모드제거비측정회로 그림 1.1. 연산증폭기성능파라미터측정회로 Lab. 1. I-V Characteristics of a Diode Lab. 1. 연산증폭기특성실험 1. 실험목표 연산증폭기의전압이득 (Gain), 입력저항, 출력저항, 대역폭 (Bandwidth), 오프셋전압 (Offset Voltage), 공통모드제거비 (Common-mode Rejection Ratio; CMRR) 및슬루율 (Slew Rate) 등의기본적인성능파라미터에대해서실험을통해서이해

More information

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont 12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다. 12.1 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont( in LPDIRECT3DDEVICE9 pdevice, in INT Height, in UINT

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT KEY EVENT & STATE 구현 2007. 1. 25 PLATFORM TEAM 정용학 차례 Key Event HS TASK UI TASK LONG KEY STATE 구현 소스코드및실행화면 질의응답및토의 2 KEY EVENT - HS TASK hs_task keypad_scan_keypad hs_init keypad_pass_key_code keypad_init

More information

1장. 유닉스 시스템 프로그래밍 개요

1장.  유닉스 시스템 프로그래밍 개요 Unix 프로그래밍및실습 7 장. 시그널 - 과제보충 응용과제 1 부모프로세스는반복해서메뉴를출력하고사용자로부터주문을받아자식프로세스에게주문내용을알린다. (SIGUSR1) ( 일단주문을받으면음식이완료되기전까지 SIGUSR1 을제외한다른시그널은모두무시 ) timer 자식프로세스는주문을받으면조리를시작한다. ( 일단조리를시작하면음식이완성되기전까지 SIGALARM 을제외한다른시그널은모두무시

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론 2. 관련연구 2.1 MQTT 프로토콜 Fig. 1. Topic-based Publish/Subscribe Communication Model. Table 1. Delivery and Guarantee by MQTT QoS Level 2.1 MQTT-SN 프로토콜 Fig. 2. MQTT-SN

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 3 장 : 변수와데이터형 2012 년 이은주 학습목표 변수와상수의개념에대해알아본다. 리터럴상수, 매크로상수, const 변수에대해알아본 다. C 언어의데이터형에대해알아본다. 2 목차 변수와상수 변수 상수 데이터형 문자형 정수형 실수형 sizeof 연산자 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

슬라이드 1

슬라이드 1 CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if

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

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.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

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

11장 포인터

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

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

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

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터(강의) 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

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 - 08-C-App-19-Quick-Preprocessor

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor 19. 전처리와분할컴파일 순천향대학교컴퓨터학부이상정 1 학습내용 전처리명령어 #include #define 기호상수 const 분할컴파일 순천향대학교컴퓨터학부이상정 2 전처리과정 전처리 (preprocessor) 전처리명령어는 # 기호로시작 #incldue #define 순천향대학교컴퓨터학부이상정 3 #include (1) 지정된파일을프로그램에삽입 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서검색

More information