콘텐츠로 이동

변수 · 조건 · 반복

복잡한 흐름을 만들기 위한 변수, 조건 분기 (IF), 반복 (LOOP) 카드들입니다.

무엇을 하는 단계인가요?

  • 변수 — 값을 기억해두고 나중에 사용
  • 조건 (IF) — 상황에 따라 다른 동작
  • 반복 (LOOP) — 같은 동작을 여러 번

이 3가지 카드 그룹을 익히면 모든 자동화 흐름을 표현할 수 있습니다.

카드 종류

  • 변수


    변수 만들기 · 값 저장하기 · 계산하기

    값을 기억하고 연산

  • 조건 (IF)


    만약 ~이면 · 아니면 / 아니면 ~이면 · 만약 ~끝

    상황별 분기

  • 반복 (LOOP)


    반복하기 · ~하는 동안 · 카운터 반복 · 반복 탈출

    여러 번 같은 동작

  • 카운터


    횟수 세기 · 카운터 초기화

    개수 누적 · 목표 도달 감지

변수 카드

변수 만들기

새 변수를 선언하고 초기값을 설정합니다.

  • 파라미터:
    • 변수 이름 (예: myCount)
    • 타입 (숫자 / 텍스트)
    • 초기값
  • 사용: 흐름 시작 부분에 한 번 선언

변수 탭 사용 권장

카드로 변수 선언도 가능하지만, 화면 우측 변수 탭에서 관리하는 것이 더 편합니다.

값 저장하기

변수에 값을 할당합니다.

  • 파라미터:
    • 변수 이름
    • 저장할 값 (숫자, 텍스트, 다른 변수명)
  • 예시: myCount = 5 또는 myCount = 다른변수

계산하기

두 값을 연산해서 결과를 변수에 저장합니다.

  • 파라미터:
    • 결과 저장 변수
    • 값 A (변수명 또는 숫자)
    • 연산 (+ / − / × / ÷ / > / < / == / ≠ / ≥ / ≤)
    • 값 B (변수명 또는 숫자)
  • 예시: result = myCount × 2 또는 result = a > b (참=1, 거짓=0)

조건 카드 (IF / ELSE)

만약 ~이면 (IF)

조건이 참이면 안의 카드들을 실행합니다.

  • 조건 종류:
    • 센서: "IR1에 물체가 있으면" / "IR2에 물체가 있으면"
    • 색상: "빨간색이면" / "파란색이면" / ... (9가지)
    • GPIO 입력: "GPIO CI0 눌리면" 등
    • 변수 비교: 변수명 + 연산 + 비교값

아니면 / 아니면 ~이면 (ELSE / ELSIF)

IF 조건이 거짓일 때 실행합니다.

  • 파라미터: 추가 조건 (비우면 ELSE, 채우면 ELSIF)

만약 ~끝 (END_IF)

IF 블록을 닫습니다.

IF / ELSIF / ELSE 구조

만약 빨간색이면
  ↳ 로봇 이동 A
아니면 파란색이면          ← ELSIF
  ↳ 로봇 이동 B
아니면                      ← ELSE
  ↳ 로봇 이동 C
만약 끝

반복 카드 (LOOP)

반복하기 (LOOP)

지정 횟수 또는 무한 반복합니다.

  • 파라미터:
    • 반복 방식 (횟수 지정 / 무한 반복)
    • 반복 횟수 (1 ~ 100)
  • 무한 반복: 안전을 위해 최대 10,000회 후 자동 종료

~하는 동안 (WHILE)

조건이 참인 동안 계속 반복합니다.

  • 파라미터: 조건 (IF 와 동일한 옵션)
  • 예시: "물체가 있는 동안 계속 반복"
  • 최대 10,000회 자동 제한

카운터 반복 (LOOP_N)

N회 반복하면서 카운터 변수가 자동으로 증가합니다.

  • 파라미터:
    • 반복 횟수
    • 카운터 변수명 (기본 i)
  • 예시: 5회 반복 시 i = 1, 2, 3, 4, 5 자동 설정

반복 탈출 (LOOP_BREAK)

현재 반복문에서 즉시 빠져나옵니다 (보통 IF 안에서 사용).

카운터 카드

횟수 세기 (CTU)

카운터 변수를 1씩 증가시키고, 목표값 도달 시 플래그를 설정합니다.

  • 파라미터:
    • 카운터 이름
    • 목표값 (PV, 1 ~ 9999)
  • 자동 변수:
    • {카운터이름} — 현재 카운트
    • {카운터이름_Q} — 목표 도달 여부 (참/거짓)

카운터 초기화 (RES)

카운터를 0 으로 리셋합니다.

  • 파라미터: 카운터 이름
  • 사용: 반복 사이클 시작 시 또는 새 작업 시작 시

들여쓰기 시각화

IF / LOOP 블록은 들여쓰기로 시각화되어 코드 구조가 한눈에 파악됩니다.

시작
LOOP 5회
  ├─ 색깔 확인
  ├─ IF 빨간색이면
  │  ├─ 로봇 이동 A
  │  └─ 메시지 ("빨강")
  ├─ 아니면
  │  ├─ 로봇 이동 B
  │  └─ 메시지 ("다른 색")
  └─ 만약 끝
LOOP 끝
종료

사용 예시

예시 1 — 색상 분류 (IF / ELSIF / ELSE)

색깔 확인
만약 빨간색이면
  ↳ 로봇 이동 A
아니면 파란색이면
  ↳ 로봇 이동 B
아니면 초록색이면
  ↳ 로봇 이동 C
아니면
  ↳ 메시지 ("알 수 없는 색")
만약 끝

예시 2 — 반복 (LOOP) 으로 5번 픽 앤 플레이스

LOOP 5회
  ├─ 컨베이어 켜기
  ├─ 센서 감지 대기 (IR1)
  ├─ 컨베이어 끄기
  ├─ 로봇 이동 A
  ├─ 그리퍼 닫기
  ├─ 로봇 이동 B
  └─ 그리퍼 열기
LOOP 끝

예시 3 — 카운터로 100개 처리 후 자동 종료

카운터 초기화 (count)
LOOP 무한 반복
  ├─ 컨베이어 켜기
  ├─ 센서 감지 대기 (IR1)
  ├─ 컨베이어 끄기
  ├─ [물체 처리 카드들]
  ├─ 횟수 세기 (count, PV=100)
  ├─ 만약 count_Q이면        ← 100개 도달
  │  ├─ 메시지 ("완료: 100개")
  │  └─ 반복 탈출
  └─ 만약 끝
LOOP 끝
종료

예시 4 — 카운터 반복 (LOOP_N) 으로 i 활용

LOOP_N 5번 (변수 i)
  ↳ 메시지 ("작업 {i}번째 진행 중")
  ↳ 로봇 이동 A
  ↳ ...
LOOP_N 끝

자주 발생하는 문제

무한 반복인데 10,000회에서 멈춤

안전을 위한 의도된 동작입니다. 무한 루프로 인한 시스템 정지 방지. 정말 더 많은 반복이 필요하면 외부 트리거 (센서·시간) 와 결합하세요.

변수가 텍스트와 숫자가 섞여서 오류

[계산하기] 카드는 숫자만 지원합니다. 텍스트 결합은 [메시지 보내기] 의 {변수} 삽입으로만 가능합니다.

IF/END_IF 누락 오류

IF 카드를 시작했으면 반드시 [만약 끝] 카드로 닫아야 합니다. 들여쓰기 시각화로 IF 블록의 시작·끝을 확인하세요.

ELSIF 조건과 ELSE 순서가 어색하면

조건은 위에서 아래로 평가됩니다. 더 구체적인 조건을 위에 배치하고, 일반적 조건은 아래에 두세요.

강사 팁

변수는 단순한 카운터부터

학생에게 처음부터 복잡한 변수를 가르치기보다, 카운터 (횟수 세기) 부터 시작하세요. 시각적으로 결과 확인이 쉬워서 이해가 빠릅니다.

IF 는 색상 분류부터

IF 카드의 첫 학습은 [색깔 확인 → IF 빨간색이면 → 로봇 이동] 패턴이 가장 직관적입니다.

LOOP_N 의 i 변수 활용

학생이 {i} 같은 변수가 어떻게 자동 증가하는지 보면 변수 개념을 빠르게 이해합니다.

들여쓰기 확인 습관

IF / LOOP 블록은 들여쓰기로 시각화됩니다. 학생 흐름이 의도와 다를 때는 들여쓰기 위치 먼저 확인 하도록 안내하세요.

다음 단계

복잡한 흐름이 가능해졌다면 병렬 실행 → 으로 이동합니다.


이 페이지에 빠진 내용이나 잘못된 부분을 발견하시면 페이지 하단 📮 피드백 보내기 를 활용해 주세요.