- 자동차가 일정 구간동안 달리는 속도를 계산하여 결과를 나타냅니다.
- 과속 단속장치를 만들기 위해서는 어떤 센서들이 필요할까요?
- 자동차가 지나갔다는 것을 인식할 수 있도록 근접센서가 필요합니다.
- SAM Labs : 근접 센서 2개, 자동차
- 준비물 : 마이크로비트, A0 사이즈 우드락, 골판지, 글루건, 가위, 종이 상자(작은 크기), 검은 도화지, 나무젓가락
1. 종이상자의 겉부분의 사이즈를 측정하여 정확히 상잘르 덮을 수 있도록 검은 도화지를 잘라 전개도를 만들어 줍니다.
2. 검은 도화지를 상자의 겉면의 붙인 후 마이크로비트의 LED가 보이도록 구멍을 뚫어줍니다.
3. 상자를 열어 내부에 마이크로비트를 고정해줍니다.
4. 마이크로비트와 5핀 커넥터를 연결한후 상자를 닫아줍니다.
5. 나무젓가락을 상자 뒷쪽에 글루건으로 접착시켜 신호등을 완성시켜 줍니다.
6. 우드락위에 골판지를 길게 잘라 트력의 형태로 만들어줍니다.
7. (5)에서 만든 신호등 하단에 골판지를 붙인 후 트랙 내부 우드락 위에 글루건으로 고정합니다.
8. 속도감지를 시작할 곳과 종료할 곳을 선택하여 우드락에 구멍을 내어 센서를 넣어 줍니다.
9. 속도를 측정하기 위해서 시작과 종료지점 사이의 거리를 줄자로 재어 줍니다.
예시자료에서는 104cm가 측정되었습니다.
1. 근접센서(proximity sensor) 2개와 마이크로비트를 페어링한 후 connect를 눌러 연결시켜줍니다.
2. [센서] - [toggle sensor data]를 클릭하여 근접센서의 현재 값을 실시간으로 확인합니다.
3. [변수] - [Variables] - [Create variable]을 클릭하여 시작 센서 값, 종료 센서 값을 입력받을 수 있는 변수 2개를 만듭니다.
예시자료에서는 각각 start, finish 이름의 변수를 만들었습니다.
4. 같은 방법으로 시작 시간 값을 입력받을 변수와 종료시간 값을 입력 받을 변수를 만들어줍니다.
예시자료에서는 start time, finish time의 이름으로 만들어 주었습니다.
5. 변수만들기의 마지막으로 속력 값을 입력 받을 변수를 speed 이름으로 만들어 줍니다.
6. [General]에서 {Program start}블록을, [Loops]에서 {repeat forever do} 블록을 가지고 옵니다.
프로그램이 시작되었을 때 계속해서 명령어가 실행되도록 해줍니다.
7. [Variables] 에서 {set ~ to} 블록 2개를 반복문 안에 넣어줍니다. 변수는 각각 'start'와 'finish'로 바꾸어 주세요.
start와
8. [Proximity Sensor] - [Values]에서 {get ~ value} 블록을 각각 넣어 줍니다.
시작 위치의 센서와 종료 위치의 센서를 구분하여 정확히 넣어 주세요.
9. [Logic] 에서 {if ~ do}블록을 조립하여 줍니다.
10. [Logice]에서 부등호 블록을 선택하여 {if}에 조립하여 줍니다.
11. [Variables]에서 {start}블록을, [Math]에서 {0} 블록을 각각 가지고 와 조건문을 { start > 70 }으로 코딩해 줍니다.
12. [Variables]에서 {set ~ to}블록을 {do}에 넣고 변수 이름은 'start time'으로 변경합니다.
13. [General]에서 {get timestamp}블록을 {set}블록 안에 넣어줍니다.
start time 변수에 현재 시간을 입력받을 수 있도록 해줍니다.
14. [General]에서 {wait 2 seconds}블록을 조립하여 줍니다.
이 블록이 없다면 현재 시각을 순간적으로 너무 여러개를 입력받게 됩니다. 이를 방지하기 위하여 처음 값을 입력 받고 잠시 여유시간을 주어야 합니다. 0.5초 정도로 설정해주세요.
15. (9)부터 (14)까지의 동일한 과정으로 finish 변수와 finish time 변수에 대한 조건문을 완성해줍니다.
16. [Variables]에서 {set ~ to}블록을 조립하여주고 변수 이름을 speed로 변경합니다.
17. [Math]에서 { ~ + ~ }블록을 조립한 후 뺼셈으로 변경합니다.
18. [General]에서 {get seconds from timestamp}블록을 2개 조립하여준 후 변수 명을 finish time과 start time으로 각각 넣어주어
{finish time 시간 값 - start time 시간 값}의 형태가 되도록 수식을 완성시켜 줍니다.
각각의 센서값을 지날 때의 시간 값을 받아 종료시간 값에서 시작시간 값의 차이를 구해 실제로 이동하는데 걸린 시간을 구할 수 있게 됩니다.
19. [Logic]에서 {if do else if do else}블록을 넣어줍니다.
20. [Logic]에서 {and}블록을 {if}부분에 넣어주고,
{ ~ = ~ }블록(등호 블록)을 {and} 블록의 양쪽에 각각 넣어줍니다.
21. [Variables]에서 {spee}블록을, [Math]에서 {0}블록을 사용하여 조건문을 만들어줍니다.
예시에서는 {speed ≥ 0 and speed < 3} , {speed ≥ 3 and speed < 6}으로 설정하였습니다.
(※ 본인의 센서값을 확인하면서 적절히 변경해서 사용해줍니다)
22. [Microbit] - [Actions]에서 {on microbit display text}블록을 {do}옆에 조립하여주고, 출력 문구를 입력해줍니다.
각각의 수치에따라 Fast, Normal, Good등의 문구가 출력되도록 코딩해 보겠습니다.
23. 현재의 속도를 확인하기 위헤 [General]에서 {print}블록을 {else}블록 아래에 넣어 줍니다.
24. [Text]에서 {create text with}블록을 넣어줍니다.
25. 설정버튼(톱니바퀴모양)을 누른 후 {item}블록을 {join}에 적절히 넣거나 빼내어 원하는 갯수만큼의 조합 블록을 만듭니다.
26. [Text]에서 { " " } 블록을 {create} 부분에 넣어줍니다.
사용자가 원하는 메시지가 출력될 수 있도록 해줍니다.
27. 비어있는 공간에 수식을 만들어 속도가 표현되도록 해줍니다.
수식은 { 104 ÷ speed(변수) } 로 설정하였습니다. 여러분의 트랙 길이에 따라 적절히 바꾸어 주세요.