공부중

[Arduino] multi task 본문

프로그래밍/Arduino

[Arduino] multi task

복습 2025. 1. 25. 15:37
728x90

1. ESP32 Dual Tasking with Analog Read and LED Blink

void setup() {
 
    Serial.begin(9600);
    
    // GPIO 2번 핀을 출력으로 설정합니다.
    pinMode(2, OUTPUT);
    
    // 시스템을 1000ms 동안 대기시킵니다.
    vTaskDelay(1000 / portTICK_PERIOD_MS);  // delay (1000)

    // 각 루프에 할당되는 메모리양: 2024, 우선순위 :1
    // task1이라는 이름의 작업을 생성합니다. 
    xTaskCreate(task1, "task1", 2048, NULL, 1, NULL); 
    xTaskCreate(task2, "task2", 2048, NULL, 1, NULL);  
}

void loop() {
    // 메인 루프에서는 특별한 작업 없이 1000ms 마다 대기합니다.
    vTaskDelay(1000 / portTICK_PERIOD_MS);
}

void task1(void *parameter) {
    while(1) {
        int a = analogRead(25);
        Serial.println(a);
        vTaskDelay(200 / portTICK_PERIOD_MS);
    }
}

void task2(void *parameter) {
    while(1) {
        digitalWrite(2, HIGH);
        vTaskDelay(500 / portTICK_PERIOD_MS);
        digitalWrite(2, LOW);
        vTaskDelay(500 / portTICK_PERIOD_MS);
    }
}

 

 

두개의 작업이 진행된다. 

task1에서는 아날로그 신호를 받아오고, 

task2에서는 2번 핀에 H와 L을 반복한다. 

 

task1에는 가변저항을 연결하고, task2는 LED를 연결하자. 

핀맵은 아래 참고. GPIO 번호를 사용하면 된다. 

 

 

 

 

2. 결과 

 

task1에 해당하는 결과이다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90

'프로그래밍 > Arduino' 카테고리의 다른 글

[Arduino] LCD  (0) 2025.01.26
[Arduino] 7 segment  (0) 2025.01.26
[Arduino] ESP32 드라이버 설치 및 연결  (0) 2025.01.25
[Arduino] 모터  (0) 2025.01.25
버스 공공데이터 활용  (0) 2025.01.25