목표
하나의 동작이 실행될때 다른 동작의 실행을 취소하는 예제입니다. 아래와 같이 동작합니다.
- 버튼A를 누르면 빨간색 LED를 끄고 초록색 LED를 5초간 켰다가 끕니다.
- 버튼B를 누르면 초록색 LED를 끄고 빨간색 LED를 5초간 켰다가 끕니다.
버튼A를 눌렀을 때의 동작과 버튼B를 눌렀을때의 동작은 동시에 실행되어서는 안되며, 각 버튼을 눌렀을 때 이미 실행 중인 다른 동작은 취소되어야 합니다.
버튼A,B는 대시보드의 푸시버튼 위젯을 사용합니다.
하드웨어
부품
부품 | 갯수 |
---|---|
초록색 LED | 1 |
빨간색 LED | 1 |
220Ω 저항 ¹ | 2 |
연결
아래의 핀을 가로 방향으로 서로 연결합니다.
부품1 | 부품2 | GPIO |
---|---|---|
초록색 LED + ¹ | | 23 |
초록색 LED – | 220Ω 저항 | GND |
빨간색 LED + ¹ | 24 | |
빨간색 LED – | 220Ω 저항 | GND |
I/O장치
초록색, 빨간색LED를 I/O장치에 추가합니다.
변수
대시보드 푸시버튼 위젯인 버튼A, 버튼B에 사용할 변수를 추가합니다.
- “버튼A” (디지털)
- “버튼B” (디지털)
로직
제어그룹의 우선모드 중, “후입 우선”을 사용하면 하나의 제어가 실행될 때 이미 실행중인 다른 제어를 취소할 수 있습니다. 즉, 시간 순서상 가장 나중에 조건을 만족한 제어만 실행되고 나머지 제어는 실행이 강제로 취소됩니다.
이를 알고리즘 블록으로 나타내면 아래와 같습니다.
[로직]
로직을 추가합니다. 실행주기는 기본값을 사용합니다.
[제어그룹]
제어그룹을 추가합니다. 우선모드는 “후입우선”을 선택합니다.
[제어] 버튼A를 누르면 빨간색 LED를 끄고 초록색 LED를 5초간 켰다가 끄기
제어를 추가합니다. 모든 설정값은 기본값을 사용합니다.
[조건] 버튼A를 누르면
대시보드 푸시버튼 위젯을 누르면 연결된 변수의 값이 true가 됩니다. 그러므로 “버튼A” 변수의 값이 false->true가 되는 순간이 버튼을 누르는 순간입니다.
- 타입: 비교
- 변수: “버튼A”
- 연산자: = (같다)
- 값: true
- 옵션: 참인 순간
[동작] 빨간색 LED를 끈다
빨간색 LED가 연결된 GPIO에 false를 쓰는 동작을 추가합니다.
- 타입: I/O장치
- 장치선택: 빨간색 LED
- 명령: WRITE_PIN
- 값: false
[동작] 초록색 LED를 켠다
초록색 LED가 연결된 GPIO에 true를 쓰는 동작을 추가합니다.
- 타입: I/O장치
- 장치선택: 초록색 LED
- 명령: WRITE_PIN
- 값: true
[동작] 5초를 기다린다
시간지연 동작을 추가합니다.
- 타입: 시간지연
- 값: 0시간 0분 5초 0밀리초
[동작] 초록색 LED를 끈다
초록색 LED가 연결된 GPIO에 false를 쓰는 동작을 추가합니다.
- 타입: I/O장치
- 장치선택: 초록색 LED
- 명령: WRITE_PIN
- 값: false
[제어] 버튼B를 누르면 초록색 LED를 끄고 빨간색 LED를 5초간 켰다가 끄기
제어를 추가합니다. 모든 설정값은 기본값을 사용합니다.
[조건] 버튼B를 누르면
대시보드 푸시버튼 위젯을 누르면 연결된 변수의 값이 true가 됩니다. 그러므로 “버튼B” 변수의 값이 false->true가 되는 순간이 버튼을 누르는 순간입니다.
- 타입: 비교
- 변수: “버튼B”
- 연산자: = (같다)
- 값: true
- 옵션: 참인 순간
[동작] 초록색 LED를 끈다
초록색 LED가 연결된 GPIO에 false를 쓰는 동작을 추가합니다.
- 타입: I/O장치
- 장치선택: 초록색 LED
- 명령: WRITE_PIN
- 값: false
[동작] 빨간색 LED를 켠다
빨간색 LED가 연결된 GPIO에 true를 쓰는 동작을 추가합니다.
- 타입: I/O장치
- 장치선택: 빨간색 LED
- 명령: WRITE_PIN
- 값: true
[동작] 5초를 기다린다
시간지연 동작을 추가합니다.
- 타입: 시간지연
- 값: 0시간 0분 5초 0밀리초
[동작] 빨간색 LED를 끈다
빨간색 LED가 연결된 GPIO에 false를 쓰는 동작을 추가합니다.
- 타입: I/O장치
- 장치선택: 빨간색 LED
- 명령: WRITE_PIN
- 값: false
대시보드
대시보드를 생성합니다.
푸시버튼 위젯을 생성합니다.
- 변수: “버튼A”
- 타입: 푸시버튼
- 변수: “버튼B”
- 타입: 푸시버튼
실행
RUN모드로 진입합니다.