void setup(){
// 기본 설정
writeLog("서버 켜짐");
pinMode(A0,INPUT);
pinMode(ledPin, OUTPUT);
pinMode(submotorPin, OUTPUT);
for(int i = 0; i < 2; i++){
pinMode(motorPin[i], OUTPUT);
pinMode(soilPin[i], OUTPUT);
}
rht.begin(rhtPin);
EEPROM.begin(48);
writeLog("핀 설정 및 RHT, EEPROM 시작 완료");
// 습도 값 불러오기
for(int i = 0; i < EEPROM.length(); i++){
if(EEPROM.read(i) > 100) continue; // 초기화 된 EEPROM의 초기값이 255였음.
if(i < 24){
soilHumidity1[i] = EEPROM.read(i);
}else{
soilHumidity2[i - 24] = EEPROM.read(i);
}
}
writeLog("EEPROM에 저장되어있는 습도 값 불러오기 완료");
// 전체적으로 꺼주기
digitalWrite(ledPin, isLedOn); // LED 켜고 끔
digitalWrite(submotorPin, isSubmotorOn); // 물버림 모터 켜고 끔
for(int i = 0; i < 2; i++){
digitalWrite(motorPin[i], motorOn[i]);
}
Serial.begin(115200); // 시리얼 통신, 속도 115200
delay(10);
// 와이파이 연결
writeLog("와이파이 연결 중");
WiFi.mode(WIFI_STA);
writeLog("와이파이" + String(ssid) + "에 연결");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
writeLog("와이파이 연결 완료");
// 서버 시작
server.begin();
writeLog("서버 시작 됨");
// server시간 가져오기
timeClient.begin();
timeClient.setTimeOffset(3600 * timeZone);
timeClient.update();
formettedTime = timeClient.getFormattedTime();
hour = timeClient.getHours();
minute = timeClient.getMinutes();
second = timeClient.getSeconds();
writeLog("NTP 시간 불러오기 완료");
}
Question
이 코드에서 server 변수는 전역변수이다. server.begin(); 문장으로 서버가 시작되었는데, setup() 함수가 종료하면 서버가 종료되는가?
ChatGPT
아니요, setup() 함수가 종료되어도 server 변수가 전역 변수로 선언되어 있기 때문에 서버는 종료되지 않습니다.
setup() 함수는 Arduino의 초기 설정을 담당하는 함수로, 한 번 실행되고 나면 loop() 함수가 반복적으로 실행됩니다. server.begin()은 서버를 시작하는 역할을 수행하며, 한 번 호출되면 서버는 계속해서 실행되는 상태를 유지합니다. 따라서 setup() 함수의 종료와는 관계없이 서버는 계속 실행되며 요청을 처리할 수 있습니다.