From 074231d76fe21173c0c945c81ae8f235c8059d6d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9D=B4=EC=9E=A5=EC=9B=90?= <wkddnjs3268@ajou.ac.kr>
Date: Sat, 15 Aug 2020 23:53:03 +0900
Subject: [PATCH] led

---
 0814/led.h            |   7 ++++
 0814/led_blue.c       |  21 ++++++++++
 0814/led_main         | Bin 0 -> 13032 bytes
 0814/led_main.c       |  87 ++++++++++++++++++++++++++++++++++++++++++
 0814/led_main.txt     |  24 ++++++++++++
 0814/led_main_1_5.txt |  37 ++++++++++++++++++
 0814/led_main_2_3.txt |  33 ++++++++++++++++
 0814/led_main_3_3.txt |  42 ++++++++++++++++++++
 0814/led_orange.c     |  21 ++++++++++
 9 files changed, 272 insertions(+)
 create mode 100644 0814/led.h
 create mode 100644 0814/led_blue.c
 create mode 100755 0814/led_main
 create mode 100644 0814/led_main.c
 create mode 100644 0814/led_main.txt
 create mode 100644 0814/led_main_1_5.txt
 create mode 100644 0814/led_main_2_3.txt
 create mode 100644 0814/led_main_3_3.txt
 create mode 100644 0814/led_orange.c

diff --git a/0814/led.h b/0814/led.h
new file mode 100644
index 0000000..4ff400b
--- /dev/null
+++ b/0814/led.h
@@ -0,0 +1,7 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <wiringPi.h>
+#include <pthread.h>
+
+extern void *led_blue_task(void *);
+extern void *led_orange_task(void *);
diff --git a/0814/led_blue.c b/0814/led_blue.c
new file mode 100644
index 0000000..1500f96
--- /dev/null
+++ b/0814/led_blue.c
@@ -0,0 +1,21 @@
+#include "led.h"
+
+void *led_blue_task(void *arg)
+{
+	printf("led blue task start\n");
+	int i, count = 0;
+	pinMode(4, OUTPUT);
+	
+	for (i = 0; i < (int)arg; i++, count++)
+	{
+		digitalWrite(4, HIGH);
+		printf("blue ON\n");
+		delay(2000);
+		digitalWrite(4, LOW);
+		printf("blue OFF\n");
+		delay(2000);
+	}
+
+	printf("led blue task end\n");
+	pthread_exit((void *)count);
+}
diff --git a/0814/led_main b/0814/led_main
new file mode 100755
index 0000000000000000000000000000000000000000..225a6c3db96572c63eb7c85a7111c0991d5342b8
GIT binary patch
literal 13032
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

literal 0
HcmV?d00001

diff --git a/0814/led_main.c b/0814/led_main.c
new file mode 100644
index 0000000..ef1f747
--- /dev/null
+++ b/0814/led_main.c
@@ -0,0 +1,87 @@
+#include "led.h"
+
+void *led_main_task();
+
+int main(int argc, char *argv[])
+{
+	int i, task_mode = 0, task_repeat;
+	pthread_t red, blue, orange;
+	void *main_result = NULL, *blue_result = NULL, *orange_result = NULL;
+	
+	if(argc != 1 && argc != 3)
+	{
+		printf("Usage : %s GPIO_NO\n", argv[0]);
+		exit(1);
+	}
+	if (argc == 3)
+	{
+		task_mode = atoi(argv[1]);
+		task_repeat = atoi(argv[2]);
+	}
+	for (i = 0; argv[i]; i++)
+	{
+		printf("%s ", argv[i]);
+	}
+	printf("\n");
+	
+	wiringPiSetup();
+	
+	if (task_mode == 0)
+	{
+		pthread_create(&red, NULL, led_main_task, NULL);
+		pthread_join(red, &main_result);
+		printf("led red blinked %d times\n", (int)main_result);
+	}
+	else if (task_mode == 1)
+	{
+		pthread_create(&red, NULL, led_main_task, NULL);
+		pthread_create(&blue, NULL, led_blue_task, (void *)task_repeat);
+		pthread_join(red, &main_result);
+		printf("led red blinked %d times\n", (int)main_result);
+		pthread_join(blue, &blue_result);
+		printf("led blue blinked %d times\n", (int)blue_result);
+	}
+	else if (task_mode == 2)
+	{
+		pthread_create(&red, NULL, led_main_task, NULL);
+		pthread_create(&orange, NULL, led_orange_task, (void *)task_repeat);
+		pthread_join(red, &main_result);
+		printf("led red blinked %d times\n", (int)main_result);
+		pthread_join(orange, &orange_result);
+		printf("led orange blinked %d times\n", (int)orange_result);
+	}
+	else if (task_mode == 3)
+	{
+		pthread_create(&red, NULL, led_main_task, NULL);
+		pthread_create(&blue, NULL, led_blue_task, (void *)task_repeat);
+		pthread_create(&orange, NULL, led_orange_task, (void *)task_repeat);
+		pthread_join(red, &main_result);
+		printf("led red blinked %d times\n", (int)main_result);
+		pthread_join(blue, &blue_result);
+		printf("led blue blinked %d times\n", (int)blue_result);
+		pthread_join(orange, &orange_result);
+		printf("led orange blinked %d times\n", (int)orange_result);
+	}
+
+	return 0;
+}
+
+void *led_main_task()
+{
+	printf("led main task start\n");
+	int i, count = 0;
+	pinMode(1, OUTPUT);
+	
+	for (i = 0; i < 10; i++, count++)
+	{
+		digitalWrite(1, HIGH);
+		printf("red ON\n");
+		delay(1000);
+		digitalWrite(1, LOW);
+		printf("red OFF\n");
+		delay(1000);
+	}
+	
+	printf("led main task end\n");
+	pthread_exit((void *)count);
+}
diff --git a/0814/led_main.txt b/0814/led_main.txt
new file mode 100644
index 0000000..1b414cb
--- /dev/null
+++ b/0814/led_main.txt
@@ -0,0 +1,24 @@
+./led_main 
+led main task start
+red ON
+red OFF
+red ON
+red OFF
+red ON
+red OFF
+red ON
+red OFF
+red ON
+red OFF
+red ON
+red OFF
+red ON
+red OFF
+red ON
+red OFF
+red ON
+red OFF
+red ON
+red OFF
+led main task end
+led red blinked 10 times
diff --git a/0814/led_main_1_5.txt b/0814/led_main_1_5.txt
new file mode 100644
index 0000000..4fb519c
--- /dev/null
+++ b/0814/led_main_1_5.txt
@@ -0,0 +1,37 @@
+./led_main 1 5 
+led main task start
+red ON
+led blue task start
+blue ON
+red OFF
+blue OFF
+red ON
+red OFF
+blue ON
+red ON
+red OFF
+blue OFF
+red ON
+red OFF
+blue ON
+red ON
+red OFF
+blue OFF
+red ON
+red OFF
+blue ON
+red ON
+red OFF
+blue OFF
+red ON
+red OFF
+blue ON
+red ON
+red OFF
+blue OFF
+red ON
+red OFF
+led blue task end
+led main task end
+led red blinked 10 times
+led blue blinked 5 times
diff --git a/0814/led_main_2_3.txt b/0814/led_main_2_3.txt
new file mode 100644
index 0000000..afdc475
--- /dev/null
+++ b/0814/led_main_2_3.txt
@@ -0,0 +1,33 @@
+./led_main 2 3 
+led main task start
+red ON
+led orange task start
+orange ON
+red OFF
+red ON
+orange OFF
+red OFF
+red ON
+red OFF
+orange ON
+red ON
+red OFF
+red ON
+orange OFF
+red OFF
+red ON
+red OFF
+orange ON
+red ON
+red OFF
+red ON
+orange OFF
+red OFF
+red ON
+red OFF
+led orange task end
+red ON
+red OFF
+led main task end
+led red blinked 10 times
+led orange blinked 3 times
diff --git a/0814/led_main_3_3.txt b/0814/led_main_3_3.txt
new file mode 100644
index 0000000..cdf3c67
--- /dev/null
+++ b/0814/led_main_3_3.txt
@@ -0,0 +1,42 @@
+./led_main 3 3 
+led main task start
+red ON
+led orange task start
+orange ON
+led blue task start
+blue ON
+red OFF
+red ON
+blue OFF
+orange OFF
+red OFF
+blue ON
+red ON
+red OFF
+orange ON
+blue OFF
+red ON
+red OFF
+blue ON
+red ON
+orange OFF
+red OFF
+blue OFF
+red ON
+red OFF
+orange ON
+led blue task end
+red ON
+red OFF
+red ON
+orange OFF
+red OFF
+red ON
+red OFF
+led orange task end
+red ON
+red OFF
+led main task end
+led red blinked 10 times
+led blue blinked 3 times
+led orange blinked 3 times
diff --git a/0814/led_orange.c b/0814/led_orange.c
new file mode 100644
index 0000000..7952f6d
--- /dev/null
+++ b/0814/led_orange.c
@@ -0,0 +1,21 @@
+#include "led.h"
+
+void *led_orange_task(void *arg)
+{
+	printf("led orange task start\n");
+	int i, count = 0;
+	pinMode(5, OUTPUT);
+	
+	for (i = 0; i < (int)arg; i++, count++)
+	{
+		digitalWrite(5, HIGH);
+		printf("orange ON\n");
+		delay(3000);
+		digitalWrite(5, LOW);
+		printf("orange OFF\n");
+		delay(3000);
+	}
+
+	printf("led orange task end\n");
+	pthread_exit((void *)count);
+}
-- 
GitLab