목표
날짜와 시간조건에 따라 동작을 수행하는 스케쥴을 구현하는 예제입니다.
매주 월,수,금 오전 9~12시, 오후 1~5시에 LED를 켜고 그 이외에는 LED를 끕니다. 단, 2023년 5월 1일 부터 12주간만 적용합니다.
하드웨어
부품
부품 | 갯수 |
---|---|
적색 LED | 1 |
220Ω 저항 ¹ | 1 |
¹ 저항의 용량 선정 방법은 여기를 참고합니다.
연결
아래의 핀을 가로 방향으로 서로 연결해줍니다.
부품1 | 부품2 | GPIO |
---|---|---|
LED + ¹ | | 23 |
LED – | 220Ω 저항 | GND |
¹ 임의의 GPIO핀에 연결할 수 있습니다.
I/O장치
LED를 I/O장치에 추가합니다.
로직
2023년 5월 1일 부터 12주 동안 매주 월, 수, 금에 해당하고 오전 9~12시, 오후 1~5시에 해당하면 LED를 켜고 그렇지 않으면 LED를 끕니다. 이를 알고리즘 블록으로 나타내면 아래와 같습니다.
[로직]
로직을 추가합니다. 실행주기는 기본값을 사용합니다.
[제어] 설정 날짜와 시간에 해당하면 LED켜기
날짜와 시간을 모두 만족해야 하므로 조건을 AND(그리고) 연산하는 제어를 추가합니다.
- 조건연산자: AND
[조건] 2023-05-01 부터 12주 동안, 매주 월, 수, 금 이라면
조건을 추가합니다.
- 타입: 스케쥴
- 시작일: 2023-05-01
- 반복단위: 주
- 반복주기: 1
- 종료선택: 실행횟수
- 실행횟수: 12
- 요일선택: 월, 수, 금
[조건] 09~12시 또는 13~17시에 해당하면
조건을 추가합니다.
- 타입: 시간구간
- 시간구간1: 09:00:00 ~ 12:00:00
- 시간구간2: 13:00:00 ~ 17:00:00
[동작] LED를 켠다.
LED에 true를 쓰는 동작을 추가합니다.
- 타입: I/O장치
- 장치선택: LED
- 명령: WRITE_PIN
- 값: true
[제어] 설정 날짜와 시간에 해당하지 않을 경우 LED 끄기
제어를 추가합니다. 모든 설정은 기본값을 사용합니다.
[조건] 그 외의 날짜, 시간일 경우
앞서 추가한 “제어-설정 날짜와 시간에 해당하면 LED켜기” 의 정반대 조건입니다. 그러므로 조건을 직접 입력하지 않고 다른 제어의 조건을 참조하여 반대의 조건을 추가합니다.
- 타입: 조건참조
- 참조: 제어 – 설정 날짜와 시간에 해당하면 LED켜기
- 조건 옵션: 반전
[동작] LED를 끈다.
LED에 false를 쓰는 동작을 추가합니다.
- 타입: I/O장치
- 장치선택: LED
- 명령: WRITE_PIN
- 값: false
실행
버튼을 눌러서 RUN모드로 진입합니다.