void setup() 함수

Hyun·2023년 7월 4일
0

아두이노

목록 보기
1/1
post-thumbnail

setup()

  • void setup() 함수는 아두이노 보드가 처음에 시작될 때 한 번만 실행된다. 따라서 초기화 코드를 포함해야 한다.
  • 주로 핀 모드 설정, 라이브러리 초기화, 시리얼 통신 설정 등과 같은 초기 설정 작업을 수행한다.
  • 초기 설정 작업은 전역 변수, 상수, 객체 등의 선언 및 초기화로 이루어지며, 이들은 setup() 함수가 종료되더라도 메모리에 유지된다.(c/c++에서 전역 변수와 상수는 프로그램의 실행 동안 메모리에 유지된다)
  • 즉, void setup() 함수가 실행되고 초기 설정 작업을 마치더라도, 그 작업으로 인해 생성된 전역 변수, 상수, 객체들은 프로그램의 실행 동안 계속해서 사용 가능합니다.

gpt 질문

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() 함수의 종료와는 관계없이 서버는 계속 실행되며 요청을 처리할 수 있습니다.

profile
better than yesterday

0개의 댓글