-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain2.ino
108 lines (104 loc) · 3.09 KB
/
main2.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// 서보 모터 객체 생성
#include <Servo.h>
Servo EduServo1; Servo EduServo2;
// LCD 모니터 라이브러리
#include <Wire.h> //i2c 통신
#include <LiquidCrystal_I2C.h> //LCD 1602 I2C
LiquidCrystal_I2C lcd(0x3F, 16, 2); //접근 주소 : 0x3F or 0x27
// 스위치 핀번호
int flag = 0; int flag2 = 0;
void setup() {
EduServo1.attach(4); EduServo2.attach(5);
lcd.begin(); lcd.backlight();
pinMode(A1, INPUT);
Serial.begin(9600);
}
void loop() {
float sensorValue;
sensorValue = analogRead(A0);
Serial.print("sensor reading = "); //시리얼 모니터
Serial.println(sensorValue);
int data = digitalRead(A1);
if(sensorValue >= 1) { // 자외선 수치 1 이상일때는 자동으로 닫음
lcd.setCursor(0, 0); lcd.print("UV is strong");
lcd.setCursor(0, 1); lcd.print("closing shade");
for (int i=0; i<100; i++){
EduServo1.write(i); // 0 -> 90
EduServo2.write(180-i); //180 -> 90
delay(50);
}
lcd.clear();
int d = 0;
while (d<600) {
int dataIn = digitalRead(A1);
if (flag != dataIn) {
flag = dataIn;
lcd.setCursor(0, 0); lcd.print("Opening shade");
lcd.setCursor(0, 1); lcd.print("manually");
for (int i=100; i>0; i--){
EduServo1.write(i); // 90 -> 0
EduServo2.write(180-i); // 90 -> 180
delay(50);
}
lcd.clear();
}
delay(1000);
d += 1;
}
}
else if (sensorValue < 1) { // 자외선 수치 1 미만일때는 자동으로 열음
lcd.setCursor(0, 0); lcd.print("UV is weak");
lcd.setCursor(0, 1); lcd.print("opening shade");
for (int i=100; i>0; i--){
EduServo1.write(i); // 90 -> 0
EduServo2.write(180-i); // 90 -> 180
delay(50);
}
lcd.clear();
int d = 0;
while (d<600) {
int dataIn = digitalRead(A1);
if (flag != dataIn) {
flag = dataIn;
lcd.setCursor(0, 0); lcd.print("Closing shade");
lcd.setCursor(0, 1); lcd.print("manually");
for (int i=0; i<100; i++){
EduServo1.write(i); // 0 -> 90
EduServo2.write(180-i); //180 -> 90
delay(50);
}
lcd.clear();
}
delay(1000);
d += 1;
}
}
else if (flag != data) { // 수동으로 여닫는 기능
if (flag2 % 2 == 0) { // flag2가 짝수일떄는 수동으로 닫음
flag = data;
flag2 += 1;
lcd.setCursor(0, 0); lcd.print("Closing shade");
lcd.setCursor(0, 1); lcd.print("manually");
for (int i=0; i<100; i++){
EduServo1.write(i); // 0 -> 90
EduServo2.write(180-i); //180 -> 90
delay(50);
}
lcd.clear();
}
else { // flag2가 홀수일때는 수동으로 열음
flag = data;
flag2 += 1;
lcd.setCursor(0, 0); lcd.print("Opening shade");
lcd.setCursor(0, 1); lcd.print("manually");
for (int i=100; i>0; i--){
EduServo1.write(i); // 90 -> 0
EduServo2.write(180-i); // 90 -> 180
delay(50);
}
lcd.clear();
}
delay(60000); // 수동으로 여닫았을때는 딜레이 1분으로 설정
}
delay(1000);
}