diff --git a/08_05_three_files/Makefile b/08_05_three_files/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..6a9c6a4daaca15a54b06baf0b0cf41fc4516bdd1
--- /dev/null
+++ b/08_05_three_files/Makefile
@@ -0,0 +1,15 @@
+SRCS := func.c main.c
+OBJS := $(SRCS:.c=.o)
+CC := gcc
+CFLAGS = -Wall -g
+
+test : $(OBJS)
+	$(CC) -o $@ $^
+
+#dummy target
+clean :
+	-rm $(OBJS)
+	rm test
+
+dep :
+	gccmakedep $(SRCS)
diff --git a/08_05_three_files/README.md b/08_05_three_files/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..97eee27be0e1d681242773654fa1f41dc74aa9a0
--- /dev/null
+++ b/08_05_three_files/README.md
@@ -0,0 +1,188 @@
+# Personal Project2 : three_files(2020.08.05)
+
+## C Compile and Execution
+1. Compile, Preprocessor Directive
+2. Compile User Source Code, Generate Assembly
+3. Link Assembler, Generate Excutable Code
+4. Loader, Loads the executable code into memory
+
+## gcc를 통해 컴파일 하는 방법
+1. gcc [소스파일 이름]
+   
+   * gcc를 사용하여 컴파일에 성공하면 a.out이라는 파일이 생긴다. 
+
+2. ./a.out
+   
+    * 생성된 a.out 파일을 이용하여 실행한다.
+    * 컴파일 과정에서 실행파일의 이름을 정해주지 않으면 기본적으로 a.out이라는 이름으로 생긴다.
+
+## gcc compile option
+1. gcc -c
+
+    * 소스 파일을 컴파일만 하고 링크는 수행하지 않는다.
+    * *.o 파일을 생성한다.
+    * ex) gcc -c main.c func.c => main.o func.o 파일 생성
+  
+2. gcc -o [소스파일 이름] [컴파일할 파일]
+
+    * 바이너리 형식의 출력 파일 이름을 지정한다.(지정하지 않으면 a.out)
+
+3. gcc -E
+   
+   * 컴파일의 첫 단계인 전처리까지만 실행한 결과를 출력한다.
+   * ex) gcc -E func.c => 매우 방대한 내용이 소스파일 위에 붙는다.
+  
+4. gcc main.c func.o -o main
+
+    * main.c 파일을 컴파일하여 오브젝트 파일을 만들고 func.o 파일과 링킹하여 main이라는 실행 프로그램을 만든다.
+  
+5. gcc -D
+   
+   * 매크로를 외부에서 define할 때 사용한다.
+   * ex) gcc -D PRINT_ID => 소스 내에서 #define PRINT_ID를 추가한 것과 동일하다.
+  
+6. gcc -U
+
+   * -D와 반대로 소스 파일 내에 #undef [매크로] 옵션을 추가한 것과 동일하다.
+
+## three_files 컴파일
+1. gcc -D PRINT_ID로 컴파일 할 때
+   
+   * gcc -D PRINT_ID main.c func.c
+   * PRINT_ID가 정의되어 있으므로 학번 출력
+
+2. gcc -D PRINT_ID로 컴파일 하지 않을 때
+
+   * gcc main.c func.c
+   * PRINT_ID가 정의되어 있지 않으므로 이름 출력
+
+3. 조건부 컴파일
+   
+   * #ifdef []: 만약 []가 정의되어 있다면 처리하고 그렇지 않으면 건너뛴다.
+   * #else, #elif
+   * #endif : 조건부 컴파일의 종료를 나타낸다.
+
+# Personal Project3 : 컴파일러와 인터프리터의 차이 & gcc 컴파일 옵션(2020.08.06)
+
+## 컴파일러 vs 인터프리터
+1. 컴파일러
+   
+   * 고급언어로 쓰여진 프로그램이 컴퓨터에서 수행되기 위해서 컴퓨터가 직접 이해할 수 있는 언어로 바꾸어 주는 프로그램
+   * 번역과 실행 과정을 거쳐야하므로 번역 과정이 번거롭고 번역 시간이 오래 걸린다. 하지만 한 번 번역한 후에는 다시 번역하지 않으므로 속도가 빠르다.
+  
+2. 인터프리터
+
+    * 프로그램을 한 단계씩 기계어로 해석하여 실행하는 **언어처리 프로그램**
+    * 줄 단위로 번역, 실행되기 때문에 시분할 시스템에 유용하며 원시 프로그램의 변화에 대한 반응이 빠르다.
+    * 대화형 언어에 적합하지만 실행 시간이 길어 속도가 늦다
+
+
+||컴파일러|인터프리터|
+|---|---|---|
+|번역 단위|전체|한줄씩|
+|실행 속도|빠름|느림|
+|번역 속도|느림|빠름|
+|실행 파일|생성함|생성하지 않음|
+
+## gcc 컴파일 옵션 연습
+1. gcc -E
+   * 전처리까지만 실행한 결과를 화면에 출력한다.  
+    ![gcc-E(1)](https://user-images.githubusercontent.com/54850435/89533294-2b9c9a00-d82e-11ea-9d6e-f170b127536c.PNG)
+   * 01.option-E.i 생성  
+    ![gcc-E(2)](https://user-images.githubusercontent.com/54850435/89533368-4969ff00-d82e-11ea-879d-9c3c28f3c29c.PNG)
+
+
+2. gcc -S : 컴파일 단계만 실행
+   * 전처리된 파일을 어셈블리 파일로 컴파일까지만 수행한다.
+   * 02.option-S.s 생성  
+    ![gcc-s](https://user-images.githubusercontent.com/54850435/89533405-5555c100-d82e-11ea-8765-65f17c5b112b.PNG)
+
+
+3. gcc -c : 컴파일과 어셈블
+   * 어셈블까지만 수행하고 링크는 수행하지 않는다.
+   * 03.option-c.o 생성  
+    ![gcc-c](https://user-images.githubusercontent.com/54850435/89533512-80401500-d82e-11ea-98e9-82294f9667ae.PNG)
+
+4. gcc -g
+   * gdb에게 제공하는 정보를 바이너리에 삽입한다.
+   * 디버깅 정보가 담긴 실행파일을 생성한다.
+   * a.out 생성  
+    ![gcc-g](https://user-images.githubusercontent.com/54850435/89533542-89c97d00-d82e-11ea-9b30-82e8e85a10b3.PNG)
+
+5. gcc -Wall
+   * 모든 모호한 코딩에 대해서 경고를 보내는 옵션이다.  
+    ![gcc-Wall](https://user-images.githubusercontent.com/54850435/89533566-9352e500-d82e-11ea-9fd2-5cb7a3a53a5d.PNG)
+
+6. gcc -o : 출력 파일 지정
+   * 실행파일을 만든다.
+   * 이름이 00인 실행파일 만들기  
+    ![gcc-o(1)](https://user-images.githubusercontent.com/54850435/89533595-9e0d7a00-d82e-11ea-9a66-c41af3c71e6a.PNG)
+   * 이름이 01.exe인 실행파일 만들기  
+    ![gcc-o(2)](https://user-images.githubusercontent.com/54850435/89533613-a665b500-d82e-11ea-87ed-542d346a70a6.PNG)
+
+7. gcc -D : 매크로 지정
+   * 매크로를 외부에서 define할 때 사용한다.  
+    ![gcc-D](https://user-images.githubusercontent.com/54850435/89533642-b1204a00-d82e-11ea-850b-d5b982c8850a.PNG)
+
+# Personal Project4 : Makefile 만들기(2020.08.07)
+
+## make란?
+* **maintain, update, and regenerate group of progrmas**
+* 명령을 생성하는 유틸리티, 프로그램 그룹을 유지하는데 필요한 유틸리티
+* **많은 프로그램 모듈들로 구성된 프로그램을 효율적으로 유지하고 일관성 있게 관리하도록 도와주는 도구**
+* 소스 수정 시 유관 파일들을 재컴파일 & 링크하는 반복적인 작업을 간단하게 처리함
+
+## make의 동작
+* **make는 여러 파일들 간의 의존성을 저장하고 수정된 파일에 연관된 소스 파일들만을 재컴파일 하도록 해줌**
+* make 유틸리티는 이전에 make명령을 실행했던 시점 이후에 이뤄진 프로젝트 작업들에 대해서만 갱신 작업을 수행함
+* 개별 항목은 순서에 따라 실행되지만 전체 내용은 순서를 따르지 않음
+
+## make 필요성
+* **프로그램 개발 및 유지보수의 편리성을 지원**
+* 명령어의 배치 처리 기능, 자주 쓰는 명령어를 자동화할 수 있음
+* 자동적으로 특정 프로그램 수행을 원할 때
+
+## Makefile 작성
+1. 빌드 규칙(Rule) 블록
+    ```Text
+    <Target> : <Dependencies>
+        <Recipe>
+    ```
+    * Target : 빌드 대상 이름. 최종적으로 생성해내는 파일명
+    * Dependencies or prerequisities : 빌드 대상이 의존하는 Target이나 파일 목록. 이곳에 나열된 대상들을 먼저 만들고 빌드 대상 생성
+    * Recipe : 빌드 대상을 생성하는 명령. 각 줄 시작에 반드시 `Tab`문자로 된 Indent가 있어야 한다.
+  
+2. 내장 매크로(Pre-defined Macro) - Variables Used by Implicit Rules
+   * CC : 컴파일러
+   * CFLAGS : 컴파일 옵션
+   * OBJS : 중간 산물 Object 파일 목록
+   * TARGET : 빌드 대상(실행 파일) 이름
+   * LDFLAGS : 링커 옵션
+   * LDLIBS : 링크 라이브러리
+
+3. 내장 매크로(Internal Macro) - Automatic variables
+   * $@ : 현재의 목표 (Target) 파일명
+   * $? : 현재의 목표파일(Target)보다 더 최근에 갱신된 의존 파일 명단
+   * $* : 현재의 목표파일(Target)보다 더 최근에 갱신된 현재 의존 파일 명단(확장자를 제외한)
+   * $< : 의존 파일(전제 조건) 중 첫번째 파일명
+   * $^ : 현재 모든 의존 파일들의 명단
+  
+
+## Makefile 작성 실습 과정
+1. Makefile 형식  
+   ![make1](/uploads/0a40029e667928fe4d54a7b588d974fe/make1.PNG)
+2. Dummy Target(Label) & Dependency Check  
+   ![make2](/uploads/9d701192aea00d8fe458105fb6120295/make2.PNG)
+3. 매크로(Macro, Variable)의 이용  
+   ![make3](/uploads/02da1b99ea3eed380e1b7715ea8c2a75/make3.PNG)
+4. 내장 매크로(Internal Macro)의 이용  
+   ![make4](/uploads/bdd7a9dba3dcb3937dbcc8386fc00d1d/make4.PNG)
+5. 내장 매크로(Pre-definced Macro)의 이용  
+   ![make5](/uploads/1f1285d02099c4a8435c900737c7d4a0/make5.PNG)
+6. 확장자규칙(Suffix Rules)의 이용 & 확장자(Suffix)의 치환 이용  
+   ![make6](/uploads/46ba746c8c95efe7909a05cb642570f6/make6.PNG)
+7. 디폴트 확장자규칙(Default Suffix Rules)의 이용  
+   ![make7](/uploads/4e3b187a18d5f578b28af2f1cec71280/make7.PNG)
+8. make clean 후 make
+   * make clean 했을 때 설정한 파일들이 지워지고 make를 했을 때 설정 파일들을 컴파일한다.  
+   ![makeclean_make](/uploads/7433da7c8dbcfdc40f57f1e05f95b77a/makeclean_make.PNG)
\ No newline at end of file
diff --git a/08_05_three_files/func.c b/08_05_three_files/func.c
new file mode 100644
index 0000000000000000000000000000000000000000..0643c37c8d67cdd5e5f921a148f33e530daa5038
--- /dev/null
+++ b/08_05_three_files/func.c
@@ -0,0 +1,15 @@
+//func.c file
+
+#include <stdio.h>
+#include "func.h"
+
+int func_name_or_id()
+{
+#ifdef PRINT_ID
+	printf("ID : 201723273\n");
+	return 0;
+#else
+	printf("Name : JieunYoon\n");
+	return 1;
+#endif
+}
diff --git a/08_05_three_files/func.h b/08_05_three_files/func.h
new file mode 100644
index 0000000000000000000000000000000000000000..4ede03d38a3342e9865c0c3c790a3a518f997735
--- /dev/null
+++ b/08_05_three_files/func.h
@@ -0,0 +1,3 @@
+//func.h
+
+extern int func_name_or_id();
diff --git a/08_05_three_files/main b/08_05_three_files/main
new file mode 100644
index 0000000000000000000000000000000000000000..608853bc905cbe750ebc9a6a001215d8baa77cc1
Binary files /dev/null and b/08_05_three_files/main differ
diff --git a/08_05_three_files/main.c b/08_05_three_files/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..cbf27c637ff243b61aca178f18c1a8770fcbbe49
--- /dev/null
+++ b/08_05_three_files/main.c
@@ -0,0 +1,11 @@
+// main.c
+
+#include <stdio.h>
+#include "func.h"
+
+
+int main()
+{
+	 func_name_or_id();
+	 
+}
diff --git a/08_05_three_files/make/make1 b/08_05_three_files/make/make1
new file mode 100644
index 0000000000000000000000000000000000000000..f7de64ab845944ce62b5c674b1d8708e1d311f47
--- /dev/null
+++ b/08_05_three_files/make/make1
@@ -0,0 +1,8 @@
+test : func.o main.o
+	gcc -o test func.o main.o
+
+func.o : func.c func.h
+	gcc -c func.c
+
+main.o : main.c func.h
+	gcc -c main.c
diff --git a/08_05_three_files/make/make2 b/08_05_three_files/make/make2
new file mode 100644
index 0000000000000000000000000000000000000000..8953672ae31aacfc0379baddc47b373b128e7571
--- /dev/null
+++ b/08_05_three_files/make/make2
@@ -0,0 +1,16 @@
+test : func.o main.o
+	gcc -o test func.o main.o
+
+func.o : func.c
+	gcc -c func.c
+
+main.o : main.c
+	gcc -c main.c
+
+#dummy target
+clean :
+	-rm func.o main.o
+	rm test
+
+dep :
+	gccmakedep func.c main.c
diff --git a/08_05_three_files/make/make3 b/08_05_three_files/make/make3
new file mode 100644
index 0000000000000000000000000000000000000000..e8ac008c85f869ce0f230e1f641b2c5334ceb3d7
--- /dev/null
+++ b/08_05_three_files/make/make3
@@ -0,0 +1,18 @@
+OBJS := func.o main.o
+
+test : $(OBJS)
+	gcc -o test $(OBJS)
+
+func.o : func.c
+	gcc -c func.c
+
+main.o : main.c
+	gcc -c main.c
+
+#dummy target
+clean :
+	-rm $(OBJS)
+	rm test
+
+dep :
+	gccmakedep func.c main.c
diff --git a/08_05_three_files/make/make4 b/08_05_three_files/make/make4
new file mode 100644
index 0000000000000000000000000000000000000000..d8bf175ec28f7a8a6530ed1cb539de588c198878
--- /dev/null
+++ b/08_05_three_files/make/make4
@@ -0,0 +1,18 @@
+OBJS := func.o main.o
+
+test : $(OBJS)
+	gcc -o $@ $^
+
+func.o : func.c
+	gcc -c $?
+
+main.o : main.c
+	gcc -c $*.c
+
+#dummy target
+clean :
+	-rm $(OBJS)
+	rm test
+
+dep :
+	gccmakedep func.c main.c
diff --git a/08_05_three_files/make/make5 b/08_05_three_files/make/make5
new file mode 100644
index 0000000000000000000000000000000000000000..617e1ac1d1f56987d361a5eaa808342a4f9e2f4a
--- /dev/null
+++ b/08_05_three_files/make/make5
@@ -0,0 +1,20 @@
+OBJS := func.o main.o
+CC := gcc
+CFLAGS = -c -Wall -g
+
+test : $(OBJS)
+	$(CC) -o $@ $^
+
+func.o : func.c
+	$(CC) $(CFLAGS) $?
+
+main.o : main.c
+	$(CC) $(CFLAGS) $*.c
+
+#dummy target
+clean :
+	-rm $(OBJS)
+	rm test
+
+dep :
+	gccmakedep func.c main.c
diff --git a/08_05_three_files/make/make6 b/08_05_three_files/make/make6
new file mode 100644
index 0000000000000000000000000000000000000000..1fcedbd9dd8f81e793765e4b1f3b72cecc3a88af
--- /dev/null
+++ b/08_05_three_files/make/make6
@@ -0,0 +1,18 @@
+SRCS := func.c main.c
+OBJS := $(SRCS:.c=.o)
+CC := gcc
+CFLAGS = -c -Wall -g
+
+test : $(OBJS)
+	$(CC) -o $@ $^
+
+.c.o : 
+	$(CC) $(CFLAGS) $<
+
+#dummy target
+clean :
+	-rm $(OBJS)
+	rm test
+
+dep :
+	gccmakedep $(SRCS)
diff --git a/08_05_three_files/make/make7 b/08_05_three_files/make/make7
new file mode 100644
index 0000000000000000000000000000000000000000..6a9c6a4daaca15a54b06baf0b0cf41fc4516bdd1
--- /dev/null
+++ b/08_05_three_files/make/make7
@@ -0,0 +1,15 @@
+SRCS := func.c main.c
+OBJS := $(SRCS:.c=.o)
+CC := gcc
+CFLAGS = -Wall -g
+
+test : $(OBJS)
+	$(CC) -o $@ $^
+
+#dummy target
+clean :
+	-rm $(OBJS)
+	rm test
+
+dep :
+	gccmakedep $(SRCS)
diff --git a/08_10_ledTest/01.led_wpi_st.c b/08_10_ledTest/01.led_wpi_st.c
new file mode 100644
index 0000000000000000000000000000000000000000..740be95ef57eee786fede1c335c0d6fd1cb54b3c
--- /dev/null
+++ b/08_10_ledTest/01.led_wpi_st.c
@@ -0,0 +1,60 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <wiringPi.h>
+
+int ledOnOff(int gno)
+{
+	int i;
+	pinMode(gno, OUTPUT);
+	
+	for(i=0; i<5; i++) {
+		digitalWrite(gno, HIGH);
+		sleep(2);
+		//delay(1000);
+		digitalWrite(gno, LOW);
+		sleep(1);
+		//delay(1000);
+	}
+	return 0;
+}
+
+int main(int argc, char *argv[])
+{
+	int gno;
+	
+	if(argc < 2) {
+		printf("Usage : %s GPIO_NO\n", argv[0]);
+		exit(-1);
+	}
+	gno = atoi(argv[1]);
+	
+	wiringPiSetup();
+	
+	ledOnOff(gno);
+	
+	return 0;
+}
+
+//$ gpio readall
+// BCM(GPIO)-18, (Pin-12) -> wpi-1
+//$ sudo ./a.out 1
+
+/*
+$ gpio -g mode 18 out
+$ gpio -g write 18 1
+$ gpio -g write 18 0
+
+$ gpio export 18 out
+$ gpio -g write 18 1
+$ gpio unexport 18
+
+$ gpio readall  (GPIO18 -> Wpi 1)
+$ gpio mode 1 out
+$ gpio write 1 1
+$ gpio write 1 0
+*/
+
+
+
+
diff --git a/08_10_ledTest/03.led_mem1_st.c b/08_10_ledTest/03.led_mem1_st.c
new file mode 100644
index 0000000000000000000000000000000000000000..eb482057dfb8c83f51f3b872daf5ae34fec37fe7
--- /dev/null
+++ b/08_10_ledTest/03.led_mem1_st.c
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/mman.h>
+
+#define	DEVICE_FILENAME	"/dev/mem"
+
+#define	GPIO_BASE	(0x3F200000)
+#define	GPIO_SIZE	(256)
+#define	GPFSEL1		(0x3F200004)	//GPIO18:bit26-24 -> 001(output)
+#define	GPSET0		(0x3F20001C)	//GPIO18:bit18 -> 1(set)
+#define	GPCLR0		(0x3F200028)	//GPIO18:bit18 -> 1(clear)
+#define	OFF_GPFSEL1	(0x04)
+#define	OFF_GPSET0	(0x1C)
+#define	OFF_GPCLR0	(0x28)
+
+volatile unsigned int *gpio;
+
+int main(void)
+{
+	int fd;
+	void *gpio_map;
+	int i;
+
+	fd = open(DEVICE_FILENAME, O_RDWR|O_SYNC);
+	if(fd < 0) {
+		perror("/dev/mem file open error!!");
+		exit(-1);
+	} else printf("/dev/mem file open ok!!\n");
+
+	gpio_map = mmap(NULL, GPIO_SIZE, PROT_READ|PROT_WRITE, 
+				MAP_SHARED, fd, GPIO_BASE);
+	if(gpio_map == MAP_FAILED) {
+		printf("[APP]gpio_mmap error!!\n");
+		exit(-2);
+	}
+	gpio = (volatile unsigned int *)gpio_map;
+	printf("gpio mmap ok(addr:%p)!!\n", gpio);
+	
+	*(gpio + OFF_GPFSEL1/4) &= ~(7 << 24);	//bit26~24 clear
+	*(gpio + OFF_GPFSEL1/4) |= (1 << 24);	//bit26~24 -> 001(ouput mode)
+	for(i=0; i<5; i++) {
+		*(gpio + OFF_GPSET0/4 ) |= (1 << 18);		//bit18 -> 1(led on)
+		sleep(1);
+		*(gpio + OFF_GPCLR0/4 ) |= (1 << 18);		//bit18 -> 1(led off)
+		sleep(1);
+	}	
+	
+	nunmap(gpio_map, GPIO_SIZE);
+	close(fd);
+	printf("led end...\n");
+	return 0;
+}
+
diff --git a/08_10_ledTest/README.md b/08_10_ledTest/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..6caf2ef8601ce2af87350b96ebc281346204581a
--- /dev/null
+++ b/08_10_ledTest/README.md
@@ -0,0 +1,111 @@
+# Personal Project5 : RaspberryPi에 LED 연결(2020.08.10)
+
+## GPIO
+
+### GPIO란?
+* General Purpose Input/Output
+* 단일 마이크로 프로레서와 같이 입출력(Input/Output) 신호를 제어할 수 있는 포트
+* 사용자가 직접 회로를 구성하고 프로그래밍하여 라즈베리파이의 GPIO를 다룰 수 있다.
+
+### GPIO 명령어
+1. gpio readall
+   * gpio map 확인
+   * 각 핀의 현재 입/출력방향의 상태와 핀에 입력된 전압(0 or 1)등을 표시해준다.
+2. gpio -h
+   * gpio 명령어 및 정보 확인
+3. man gpio
+   * gpio 명령어에 대한 소개
+4. gpio -g mode [핀번호] [input or output]
+   * LED는 출력이고, 스위치는 입력이다. 그러면 각각 입력인지 출력인지 방향을 정해줘야 한다.
+   * ex) gpio -g mode 21 output => 21번 핀에 LED를 연결했다면, 출력으로 설정한다.
+   * ex) gpio -g mode 26 input => 26번 핀에 스위치를 연결했다면, 입력으로 설정해야 한다.
+5. gpio -g write [핀번호] [1 or 0]
+   * LED를 출력할 수 있도록 설정했으니, 불빛이 들어오도록 설정해야 한다.
+   * ex) gpio -g write 29 1 => 29번 핀에 연결한 LED의 불빛이 들어온다.
+   * ex) gpio -g write 29 0 => 29번 핀에 연결한 LED의 불빛이 꺼진다.
+
+## 회로 구성 
+* 준비물 : 라즈베리 파이, T자형 코블러, Breadboard(빵판), 빵판용 점퍼 와이어(전선), LED, 고정 저항기(레지스터)  
+![연결상태](/uploads/99a8130d152cc09e8ea8bb14e08ac592/연결상태.jpg)
+
+## ledTest.c
+1. wiringPi.h 헤더파일을 추가시킨다.
+    ```C
+    #include <wiringPi.h>
+    ```
+    * wiringPi : 라즈베리 파이의 BCM2835 프로세서에 접근하는 라이브러리
+2. 핀 모드를 29번으로 설정한다.(BCM으로 21번이 wiringPi에서 29번이므로)
+    ```C
+    pinMode(29, OUTPUT);
+    ```
+3. for문을 이용하여 동작을 5번 실행한다.
+   ```C
+   for(i=0;i<5;i++)
+   {
+
+   }
+   ```
+4. led를 키고 0.5초 지연시킨다.
+   ```C
+   digitalWrite(29, 1);
+   delay(500);
+   ```
+5. led를 끄고 0.5초 지연시킨다.
+   ```C
+   digitalWrite(29, 0);
+   delay(500);
+   ```
+
+## 실행 결과
+* gcc ledTest.c -lwiringPi  
+  ![실행방법](/uploads/5b2f627378d14e2cabd312597155daa2/실행방법.PNG)  
+  ![5번깜빡](/uploads/0343b31a2a20a4f52388483f47bf1ecc/5번깜빡.mp4)
+  
+
+
+
+
+## GPIO
+
+### GPIO란
+
+
+
+
+
+
+gpio toggle 1
+pi@raspberrypi:~ $ gpio toggle 1
+pi@raspberrypi:~ $ gpio toggle 1
+pi@raspberrypi:~ $ gpio toggle 1
+pi@raspberrypi:~ $ gpio toggle 1
+pi@raspberrypi:~ $ gpio toggle 1
+pi@raspberrypi:~ $ gpio toggle 1
+pi@raspberrypi:~ $ gpio toggle 1
+pi@raspberrypi:~ $
+pi@raspberrypi:~ $ gpio read 1
+0
+pi@raspberrypi:~ $ gpio toggle 1
+pi@raspberrypi:~ $ gpio read 1
+1
+pi@raspberrypi:~ $ gpio write 1 0
+pi@raspberrypi:~ $ gpio read 1
+0
+pi@raspberrypi:~ $ gpio read 1
+
+### 실행방법
+gcc 01.led_spi_st.c -lwiringPi
+./a.out 1
+
+gcc 03.led_mem1_st.c -o 03
+sudo ./03
+
+### sudo -i vs sudo su cs sudo su -
+switch user
+
+su kim : 현재 pio계정에 모든 환경변수를 그대로 쓸때
+su -kim : kim에 oriented된 환경변수를 쓸때
+
+### ls -F
+@ : link
+\*는 실행가능한 파일
\ No newline at end of file
diff --git a/08_10_ledTest/ledTest.c b/08_10_ledTest/ledTest.c
new file mode 100644
index 0000000000000000000000000000000000000000..abec2faa5bfe9220a9a4925dfb775a91bf62863c
--- /dev/null
+++ b/08_10_ledTest/ledTest.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <wiringPi.h>
+
+int main()
+{
+    int i;
+    if(wiringPiSetup()==-1) return -1;
+    pinMode(29, OUTPUT);
+    for(i=0;i<5;i++)
+    {
+        digitalWrite(29, 1);
+        delay(500);
+        digitalWrite(29, 0);
+        delay(500);
+    }
+    return 0;
+}
\ No newline at end of file